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