INPUT Alexandre Tolstenko Nogueira

Slides:



Advertisements
Apresentações semelhantes
Programação em Java Prof. Maurício Braga
Advertisements

Kit Alfa Marcello Cláudio de Gouvêa Duarte.
Introdução à Programação usando Processing Programação Gráfica 2D Animações Exercício Animações 14/10/09 Bruno C. de Paula 2º Semestre 2009 > PUCPR >
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
Windows Forms 2º Semestre 2010 > PUCPR > TPU Bruno C. de Paula.
Interação entre objetos
Gerenciamento de tempo do projeto
ES723 - Dispositivos Eletromecânicos
Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.
Estruturas de Dados e Algoritmos
Wiimote no Windows e Linux + Gotcha
Programação Baseada em Objectos Desenho de TAD
Fases do desenvolvimento de software UML
Listas Encadeadas.
Aula de reposição Prof. Grace e Ângela
Classes e objetos Arrays e Sobrecarga
Herança e Polimorfismo
Classes e objetos P. O. O. Prof. Grace.
Conhecendo o Visual Studio.NET
Módulo Financeiro Centro de Custo.
MECÂNICA - ESTÁTICA Cabos Cap. 7.
Alexandre Tolstenko Nogueira
MECÂNICA - DINÂMICA Cinemática de uma Partícula Cap. 12.
Cinemática de uma Partícula Cap. 12
Dinâmica do Movimento Plano de um Corpo Rígido: Força e Aceleração
Dinâmica do Movimento Plano de um Corpo Rígido: Força e Aceleração
Resultantes de Sistemas de Forças Cap. 4
Cinemática Plana de um Corpo Rígido Cap. 16
Cinemática Plana de um Corpo Rígido Cap. 16
MECÂNICA - ESTÁTICA Esforços Internos Cap. 7.
MECÂNICA - DINÂMICA Cinemática de uma Partícula Cap Exercícios.
Object Oriented Software Construction (MEYER, Bertrand)
Aula 4 – Tratamento de Input
Árvores binárias de pesquisa com balanceamento
Singleton e Adapter Professor: Nazareno Andrade
Sobrecarga e Encapsulamento
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Funções Universidade Federal de Ouro Preto - UFOP
Coordenação Geral de Ensino da Faculdade
Sistemas Operacionais
Lógica de Programação de Jogos
Entendendo as definições de classe
Centro de Gravidade e Centróide Cap. 9
EXERCÍCIOS PARA GUARDA-REDES
Projeto de Banco de Dados
Erick Luis Moraes de Sousa
Computação Gráfica Aula 3 Transformações Geométricas
TRANSFORMAÇÕES DE TENSÕES
Linguagem e Ambiente Scratch
XNA Game Studio Tutorial Criando um jogo com XNA em 1 hora
Estrutura de Dados André Augusto Nogueira Alves
Alexandre Tolstenko Nogueira
ÁREA DE TRABALHO DO WINDOWS
Cinemática Plana de um Corpo Rígido Cap. 16
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
© 2004 by Pearson Education Computadores: Ferramentas para a Era da Informação Tema 0 PARTE A.
Dinâmica do Movimento Plano de um Corpo Rígido: Força e Aceleração
Módulo Compras Relatórios e Relações 1. Objetivo 2 Conhecer os relatórios e as relações do sistema disponibilizadas no módulo Compras.
Redes para Jogos Felipe Guaycuru de C. B. Franco
Contagem Sequencial do Estoque
Contagem Sequencial do Estoque
Orientação a Objetos Erick Luis Moraes de Sousa
Curso Básico de Programação de Jogos com XNA Alexandre Tolstenko Nogueira
Bruno Inojosa MCP .NET Framework
DESENVOLVIMENTO DE JOGOS 2D UTILIZANDO O FRAMEWORK
Linguagens Orientadas a Eventos
Aula 3 – Arquitetura XNA e desenho 2D
Transcrição da apresentação:

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; O que são pilhas e filas; Árvores.

MotivoS

Motivos Evitar ter que escrever diversas vezes os códigos de captura de dados; Criar uma forma de tratar todos os tipos de entrada de maneira idêntica (abstrair); Automatizar o tratamento de input.

Motivo pessoal

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.

Objetivo

Objetivos Conhecer as formas de captura de dados de periféricos para games; Entender os estados de um periférico de game; Aprender a tratar inputs; Generalizar os periféricos para um periférico virtual.

Como interagir com o game. Input

Teoria Prática

Teoria Tipos de Input Teclado Xbox Mouse WM7 Wii Outros Dificuldades OO Game Components Input Genérico

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.

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

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.

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.

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.

Outros DirectInput; Tratamento direto com a memória (escrever um driver): multimouse e wiimote; Projeto Natal; Câmeras; Realidade Aumentada.

Teoria Tipos de Input Dificuldades Problema Solução OO Game Components Input Genérico

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.

Solução Eventos: Combo: GamePad: 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.

Deadzone

Drawable Game Component Teoria Dificuldades Tipos de Input Game Components Game Component Drawable Game Component OO Input Genérico

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 ().

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 ().

Teoria Dificuldades Tipos de Input Game Components OO Modificadores Override Input Genérico

Modificadores Modificadores de Acesso: Public: Private: Internal: 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.

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

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(){...} }

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(); }

InputManager Genérico Teoria Dificuldades Tipos de Input Game Components Herança Input Genérico InputManager Genérico InputState Genérico Diagrama

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.

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.

Teoria Prática

Prática Prática: Desafio: 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

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