INPUT

37

description

INPUT. Alexandre Tolstenko Nogueira Colaborador : Erick Luis Moraes de Sousa “ Puyol ” http://forum.gamux.com.br. Papel e caneta na mão !. Revisão. Revisão. Classe x Objeto; Classe x Struct ; Método x Atributo; O que é um construtor; Diferença entre vetores e lista; - PowerPoint PPT Presentation

Transcript of INPUT

Page 1: INPUT
Page 2: INPUT

INPUT

Alexandre Tolstenko NogueiraColaborador: Erick Luis Moraes de Sousa “Puyol”

http://forum.gamux.com.br

Page 3: INPUT

REVISÃOPapel e caneta na mão!

Page 4: INPUT

4

Revisão

1. Classe x Objeto;2. Classe x Struct;3. Método x Atributo;4. O que é um construtor;5. Diferença entre vetores e lista;6. O que são pilhas e filas;7. Árvores.

Page 5: INPUT

MOTIVOS

Page 6: INPUT

6

Motivos

1. Evitar ter que escrever diversas vezes os códigos de captura de dados;

2. Criar uma forma de tratar todos os tipos de entrada de maneira idêntica (abstrair);

3. Automatizar o tratamento de input.

Page 7: INPUT

MOTIVO PESSOAL

Page 8: INPUT

8

Motivo Pessoal

• 8ª Série: Usar o mouse de bolinha como um medidor de forças: acelerômetro;

• 1º Ano: Usar a entrada analógica serial de joystick e o mouse para mapear a face de uma moeda.

Page 9: INPUT

OBJETIVO

Page 10: INPUT

10

Objetivos

1. Conhecer as formas de captura de dados de periféricos para games;

2. Entender os estados de um periférico de game;

3. Aprender a tratar inputs;4. Generalizar os periféricos para um periférico

virtual.

Page 11: INPUT

INPUTComo interagir com o game.

Page 12: INPUT

Teoria Prática

Page 13: INPUT

Teoria

Tipos de Input

Teclado Xbox Mouse WM7 Wii Outros

Dificuldades OO Game Components

Input Genérico

Page 14: INPUT

14

Teclado

• Toda captura de dados é booleana: pressionado ou liberado;

• A quantidade máxima de teclas pressionadas varia de teclado para teclado e geralmente são 3.

Page 15: INPUT

15

Controle de Xbox• ThumbSticks variam entre -1.0f e

1.0f para cada eixo;• DPad são ButtonState: Pressed

ou Released;• Os Triggers variam entre 0.0f e

1.0f;• Possui dois motores para

vibração, um no lado esquerdo e outro no lado direito. Um grave e outro agudo;

• Buttons são ButtonState.• Ex. Recicle

Page 16: INPUT

16

Mouse• Os botões do mouse são ButtonState,

podendo ser released ou pressed;

• O valor do botão do meio, scrollwheel, é dado por um inteiro que é acumulado desde o início do jogo;

• A posição do mouse é determinada a partir de duas variáveis que armazenam sua posição X e Y;

• Observação: Implementamos uma biblioteca que permite capturar até 128 mouses simultaneamente.

Page 17: INPUT

17

WM7

• O aparelho com Windows Mobile 7 possui: – Acelerômetros;– Touchscreen que suporta

multitouching;– Motor que vibra o

aparelho;– Cada toque possui posição,

estado, id e pressão;– Microfone.

Page 18: INPUT

18

Wiimote• O Wiimote é o sensor, enquanto que

a barra é o emissor de infra-vermelho;

• Possui posição na direção que está sendo apontado, velocidade e aceleração;

• Pode-se controlar o output (leds e vibração);

• A biblioteca utilizada por nós consegue controlar quatro sensores do Wiimote. Dada essas quatro informações deve-se calcular o centro da mira;

• Extensões.

Page 19: INPUT

19

Outros

• DirectInput;• Tratamento direto com a memória

(escrever um driver): multimouse e wiimote;

• Projeto Natal;–Câmeras;–Realidade Aumentada.

Page 20: INPUT

Teoria

Tipos de Input Dificuldades

Problema Solução

OO Game Components

Input Genérico

Page 21: INPUT

21

Problema

• Qual é o problema de apenas verificar se a tecla está pressionada?– E se ele disparar um evento como mudar tela e a

seguinte também usa essa tecla para mudar de tela?• E se quisermos tratar um combo?– Hadouken: Meia lua para baixo + soco.

• Qual o problema de mandar o personagem andar o quanto que o thumbstick se dobrou?– DeadZone.

Page 22: INPUT

22

Solução

• Eventos: – Guardar estado anterior;– Verificar estados “JustPressed” ou “JustRelease”;

• Combo: – Guardar lista de estados anteriores;

• GamePad:– Região na qual a captura de dados é desprezada,

chamada de deadzone.

Page 23: INPUT

23

Deadzone

Page 24: INPUT

Teoria

Dificuldades Tipos de Input Game Components

Game Component

Drawable Game

Component

OO Input Genérico

Page 25: INPUT

25

GameComponent

• Componentes independentes de um jogo que não sejam desenháveis na tela:– Engine de Física, Networking, Input e qualquer

outro componente que se atualize sem desenhar na tela;

• Possui métodos semelhantes ao do Microsoft.XNA.Framework.Game:– Initialize ();– Update ().

Page 26: INPUT

26

DrawableGameComponent

• Componentes independentes de um jogo que sejam desenháveis na tela:– Telas e Gerenciadores de Tela, Menus, Interfaces

Gráficas;• Possui métodos semelhantes ao do

Microsoft.XNA.Framework.Game:– Initialize ();– Update ();– Draw ().

Page 27: INPUT

Teoria

Dificuldades Tipos de Input Game Components OO

Modificadores Override

Input Genérico

Page 28: INPUT

28

Modificadores

• Modificadores de Acesso:– Public:

• O membro declarado como public pode ser acessado de qualquer outra classe do jogo;

– Private:• Só pode ser acessada dentro do escopo no qual foi declarada;

– Internal:• Só pode ser acessada por membros do mesmo código;

– Protected:• Só pode ser acessada da classe em que foi declarada ou de

classes que herdem da primeira.

Page 29: INPUT

29

Outros Modificadores– Static;– Override;– Const;– Extern;– Abstract;– Event;– Sealed;– Partial;– Readonly;– Unsafe;– Virtual;– Volatile.

Page 30: INPUT

30

Static• Quando se declara algo como static, o mesmo é

armazenado numa posição de memória, podendo-se utilizá-la e alterá-la sem ter de criar novas instâncias dela;– Não existe construtor;– Métodos e variáveis são acessados diretamente.

public static class ClasseExemplo{

public static Vector2 position;public static InputState GetState(){...}

}

Page 31: INPUT

31

Override

• Quando uma classe herda de uma segunda e queremos re-implementar um método da primeira na segunda:– A Game1 herda da Game e caso queiramos

chamar o método da primeira classe, utilizamos “base”:

protected override void Initialize(){ base.Initialize();}

Page 32: INPUT

Teoria

Dificuldades Tipos de Input Game Components Herança Input

Genérico

InputManager Genérico

InputState Genérico Diagrama

Page 33: INPUT

33

InputManager Genérico

• Classe genérica que envelopa todos os tipos de input para que um programador possa utilizá-lo de maneira transparente;

• Ao invés de sempre procurar saber qual o input, a posição do mouse e a posição do Wiimote seriam tratadas da mesma maneira;

• Num caso extremo de um game simples, podemos tratar gamepad, mouse, wiimote, keyboard, entre outros inputs de maneira idêntica.

Page 34: INPUT

34

InputState Genérico

• Classe genérica que armazena todos os tipos de input para que um programador possa utilizá-lo de maneira transparente;

• Ex. Solução para Direcionais:– Eixo X e Y como float.• Caso tecla Up for pressionada, Y = -1;• Caso tecla Down for pressionada, Y = 1;• Caso gamepad mova o thumb para baixo:

– Y = quantidade de deslocamento.

Page 35: INPUT

Teoria Prática

Page 36: INPUT

36

Prática

• Prática:–Programar um Mata-Moscas usando mais

de um tipo de input simultaneamente;• Envelopar todos os inputs no mesmo InputState.

• Desafio:–Utilizar Multi-Mouse e/ou Wiimote

Page 37: INPUT

37

Agradecimento

spriteBatch.DrawString( Arial, "Obrigado Pela Atenção!", positionVect, Color.Black);