input alexandre tolstenko nogueira colaborador: erick luis moraes de sousa puyol
TRANSCRIPT
![Page 1: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/1.jpg)
![Page 2: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/2.jpg)
INPUT
Alexandre Tolstenko NogueiraColaborador: Erick Luis Moraes de Sousa “Puyol”
http://forum.gamux.com.br
![Page 3: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/3.jpg)
REVISÃOPapel e caneta na mão!
![Page 4: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/4.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/5.jpg)
MOTIVOS
![Page 6: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/6.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/7.jpg)
MOTIVO PESSOAL
![Page 8: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/8.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/9.jpg)
OBJETIVO
![Page 10: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/10.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/11.jpg)
INPUTComo interagir com o game.
![Page 12: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/12.jpg)
Teoria Prática
![Page 13: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/13.jpg)
Teoria
Tipos de Input
Teclado Xbox Mouse WM7 Wii Outros
Dificuldades OO Game Components
Input Genérico
![Page 14: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/14.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/15.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/16.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/17.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/18.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/19.jpg)
19
Outros
• DirectInput;• Tratamento direto com a memória
(escrever um driver): multimouse e wiimote;
• Projeto Natal;–Câmeras;–Realidade Aumentada.
![Page 20: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/20.jpg)
Teoria
Tipos de Input Dificuldades
Problema Solução
OO Game Components
Input Genérico
![Page 21: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/21.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/22.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/23.jpg)
23
Deadzone
![Page 24: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/24.jpg)
Teoria
Dificuldades Tipos de Input Game Components
Game Component
Drawable Game
Component
OO Input Genérico
![Page 25: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/25.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/26.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/27.jpg)
Teoria
Dificuldades Tipos de Input Game Components OO
Modificadores Override
Input Genérico
![Page 28: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/28.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/29.jpg)
29
Outros Modificadores– Static;– Override;– Const;– Extern;– Abstract;– Event;– Sealed;– Partial;– Readonly;– Unsafe;– Virtual;– Volatile.
![Page 30: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/30.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/31.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/32.jpg)
Teoria
Dificuldades Tipos de Input Game Components Herança Input Genérico
InputManager Genérico
InputState Genérico Diagrama
![Page 33: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/33.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/34.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/35.jpg)
Teoria Prática
![Page 36: INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/36.jpg)
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 Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa Puyol](https://reader035.vdocuments.net/reader035/viewer/2022062418/552fc12b497959413d8d022a/html5/thumbnails/37.jpg)
37
Agradecimento
spriteBatch.DrawString( Arial, "Obrigado Pela Atenção!", positionVect, Color.Black);