390 likes | 514 Views
Estrutura de Dados. André Augusto Nogueira Alves alves.andreaugusto@gmail.com Colaborador : Alexandre Tolstenko Nogueira. Papel e caneta na mão !. Revisão. Revisão. Diferença entre IDE, Framework, Engine e SDK; Estrutura básica de um game em XNA; Rectangle vs Vector2;
E N D
Estrutura de Dados André Augusto Nogueira Alves alves.andreaugusto@gmail.com Colaborador: AlexandreTolstenkoNogueira
Papel e canetanamão! Revisão
Revisão • Diferença entre IDE, Framework, Engine e SDK; • Estrutura básica de um game em XNA; • Rectangle vs Vector2; • Desenhar uma imagem na tela; • Desenhar um texto na tela; • Colisão com com instersect.
Objetivos • Entender um pouco de OO (Orientação Objeto); • Apresentação de algumas das estruturas de dados mais simples; • Um novo jogo ao fim da aula, mas dessa usando os tópicos citados acima;
História • Final da década de 60; • Possibilitar compartilhamento de códigos e desenvolvimento mais rápido;
Conceitos • Desvendando os mistérios da Classe; • Abstração: Abstração é o processo ou resultado de generalização por redução do conteúdo da informação de um conceito ou fenômeno observável; • Classe x Objeto; • Alocar memória (construtores); • DNA(assinatura da classe) x Humano(objeto);
Objetos • Alta coesão, baixo acoplamento; • Tentativa de representar o mundo do ponto de vista humano de forma computacional; • Semelhanças com Structs; • Visibilidade; • Criando um objeto;
Interação – Acoplamento(?) • Juntando os objetos; • Montando uma colisão;
Enum • Diferenças entre C e C#; • Usos do Enum;
Vetor • Prós e Contras;
Lista • Exemplos de usos;
List List<Tipo> myList; Utilidade: agregar coisas sem garantir sequência
Lista Ligada LinkedList<Tipo> listTipo; LinkedListNode<Tipo> llnTipo; Uso: llnTipo.Next, llnTipo.Previous Utilidade: agregar coisas com comsequência.
Pilha Stack<tipo> stkTipo; Uso: stkTipo.Pop, stkTipo.Push Utilidade: Armazenar coisas temporariamente (ex. Gerência de tela, recursão)
Fila Queue<tipo> qTipo; Uso: qTipo.Pop, qTipo.Push Utilidade: guardar coisas enquanto elas esperam para serem executadas. Ex:
Árvores • Definição • Árvore Binária; • Quadtree (Octree); • BSP;
... Lista de outras estruturas Splaytree Btree Red-blacktree Hashtable Grafos Dicionários
Estrutura de dados e classes • Classes que incluem vários objetos;
Prática • Prática: • Programar um SNAKE; • Opcional: transformar o Pong em um Breakout; • Desafio: • Mapearumaimagemusandoumaquadtree; • Defender;
Snake Time • Jogo do dia: Snake; • Programado usando OO não estruturada;
Análise de Jogo • Elementos? • Como anda? • Como interage?
Mecânica de jogo • A cobra tem que “comer” os pontos que aparecem na tela; • A cada item comido, a cobra cresce de tamanho; • A cobra anda somente para as direções Up, Left, Right e Down;
Modelagem Computacional • Classes a serem criadas; • Métodos de cada uma dessas classes; • Interação entre elas;
Struct public struct RectangleFloatS { public float X, Y; public RectangleFloatS(float X, float Y) { this.X = X; this.Y = Y;} public Anda(Direcao dir) {switch(dir){ case Direcao.Up: //anda pra cima break; ...}} }
Class public class RectangleFloatC { public float X, Y; public RectangleFloatC(float X, float Y) { this.X = X; this.Y = Y;} public Anda(Direcao dir) {switch(dir){ case Direcao.Up: //anda pra cima break; ...}} }
Diferenças List<RectangleFloatS> rectStructList; List<RectangleFloatC> rectObjList; ... foreach(RectangleFloatS rect in rectStructList) rect.X += valor; // nao altera X do rectStructList foreach(RectangleFloatR rect in rectObjList) Rect.X += valor; // altera X do recObjList
Agradecimento spriteBatch.DrawString( Arial, "Obrigado Pela Atenção!", positionVect, Color.Black);