1 / 39

Estrutura de Dados

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;

audra-ford
Télécharger la présentation

Estrutura de Dados

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Estrutura de Dados André Augusto Nogueira Alves alves.andreaugusto@gmail.com Colaborador: AlexandreTolstenkoNogueira

  2. Papel e canetanamão! Revisão

  3. 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.

  4. Objetivos

  5. 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;

  6. Orientação Objeto e EstRUTURA DE DADOS

  7. História • Final da década de 60; • Possibilitar compartilhamento de códigos e desenvolvimento mais rápido;

  8. 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);

  9. 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;

  10. Pong OO - Bola

  11. Pong OO - Raquete

  12. Interação – Acoplamento(?) • Juntando os objetos; • Montando uma colisão;

  13. Enum • Diferenças entre C e C#; • Usos do Enum;

  14. Vetor • Prós e Contras;

  15. Lista • Exemplos de usos;

  16. List List<Tipo> myList; Utilidade: agregar coisas sem garantir sequência

  17. Lista Ligada LinkedList<Tipo> listTipo; LinkedListNode<Tipo> llnTipo; Uso: llnTipo.Next, llnTipo.Previous Utilidade: agregar coisas com comsequência.

  18. Pilha Stack<tipo> stkTipo; Uso: stkTipo.Pop, stkTipo.Push Utilidade: Armazenar coisas temporariamente (ex. Gerência de tela, recursão)

  19. Fila Queue<tipo> qTipo; Uso: qTipo.Pop, qTipo.Push Utilidade: guardar coisas enquanto elas esperam para serem executadas. Ex:

  20. Árvores • Definição • Árvore Binária; • Quadtree (Octree); • BSP;

  21. ... Lista de outras estruturas Splaytree Btree Red-blacktree Hashtable Grafos Dicionários

  22. Estrutura de dados e classes • Classes que incluem vários objetos;

  23. Prática • Prática: • Programar um SNAKE; • Opcional: transformar o Pong em um Breakout; • Desafio: • Mapearumaimagemusandoumaquadtree; • Defender;

  24. Snake Time • Jogo do dia: Snake; • Programado usando OO não estruturada;

  25. Análise de Jogo • Elementos? • Como anda? • Como interage?

  26. 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;

  27. Modelagem Computacional • Classes a serem criadas; • Métodos de cada uma dessas classes; • Interação entre elas;

  28. 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; ...}} }

  29. 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; ...}} }

  30. 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

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

More Related