Estrutura de Dados André Augusto Nogueira Alves [email protected] Colaborador: Alexandre...
Transcript of Estrutura de Dados André Augusto Nogueira Alves [email protected] Colaborador: Alexandre...
Estrutura de Dados
André Augusto Nogueira [email protected]
Colaborador: Alexandre Tolstenko Nogueira
REVISÃOPapel e caneta na mão!
4
Revisão
1. Diferença entre IDE, Framework, Engine e SDK;
2. Estrutura básica de um game em XNA;3. Rectangle vs Vector2;4. Desenhar uma imagem na tela; 5. Desenhar um texto na tela;6. Colisão com com instersect.
OBJETIVOS
6
Objetivos
1. Entender um pouco de OO (Orientação Objeto);
2. Apresentação de algumas das estruturas de dados mais simples;
3. Um novo jogo ao fim da aula, mas dessa usando os tópicos citados acima;
ORIENTAÇÃO OBJETO E ESTRUTURA DE DADOS
Teoria Prática
Teoria
POO
História Conceitos Objetos PongOO Interação
Listas Árvores Snake Apêndice Campeonatos
10
História
• Final da década de 60;• Possibilitar compartilhamento de códigos
e desenvolvimento mais rápido;
11
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);
12
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;
13
Pong OO - Bola
14
Pong OO - Raquete
15
Interação – Acoplamento(?)
• Juntando os objetos;•Montando uma colisão;
Teoria
POO Estruturas
Enum Vetor Listas Árvores
Snake Apêndice Campeonatos
17
Enum
• Diferenças entre C e C#;• Usos do Enum;
18
Vetor
• Prós e Contras;
Teoria
POO Estruturas
Enum Vetor Listas
List LinkedList Pilha Fila
Árvores
Snake Apêndice Campeonatos
20
Lista
• Exemplos de usos;
21
ListList<Tipo> myList; Utilidade: agregar coisas sem garantir sequência
22
Lista LigadaLinkedList<Tipo> listTipo;LinkedListNode<Tipo> llnTipo;Uso: llnTipo.Next, llnTipo.PreviousUtilidade: agregar coisas com com sequência.
23
PilhaStack<tipo> stkTipo;Uso: stkTipo.Pop, stkTipo.PushUtilidade: Armazenar coisas temporariamente (ex. Gerência de tela, recursão)
24
FilaQueue<tipo> qTipo;Uso: qTipo.Pop, qTipo.PushUtilidade: guardar coisas enquanto elas esperam para serem executadas.Ex:
Teoria
POO Estruturas
Enum Vetor Listas Árvores
Binárias Quadtree Octree BSP
Snake Apêndice Campeonatos
26
Árvores
• Definição• Árvore Binária;• Quadtree (Octree);• BSP;
27
...
Lista de outras estruturasSplaytreeBtreeRed-black treeHash tableGrafosDicionários
28
Estrutura de dados e classes
• Classes que incluem vários objetos;
Teoria
Classe vs Struct Listas Árvores Snake
História Mecânica de jogo
Modelagem Computacional Códigos
Apêndice Campeonatos
30
Prática
• Prática:–Programar um SNAKE;• Opcional: transformar o Pong em um Breakout;
• Desafio:–Mapear uma imagem usando uma
quadtree;–Defender;
31
Snake Time
• Jogo do dia: Snake;• Programado usando OO não estruturada;
32
Análise de Jogo
• Elementos?• Como anda?• Como interage?
33
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;
34
Modelagem Computacional
• Classes a serem criadas;• Métodos de cada uma dessas classes;• Interação entre elas;
Teoria
Classe vs Struct Listas Árvores Snake Apêndice
Campeonatos
XNA Challenge SBgames Arena Info Dreambuild Imagine Cup
36
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 cimabreak;
...}}
}
37
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 cimabreak;
...}}
}
38
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
39
Agradecimento
spriteBatch.DrawString( Arial, "Obrigado Pela Atenção!", positionVect, Color.Black);