Estrutura de Dados André Augusto Nogueira Alves [email protected] Colaborador: Alexandre...

39

Transcript of Estrutura de Dados André Augusto Nogueira Alves [email protected] Colaborador: Alexandre...

Page 1: Estrutura de Dados André Augusto Nogueira Alves alves.andreaugusto@gmail.com Colaborador: Alexandre Tolstenko Nogueira.
Page 2: Estrutura de Dados André Augusto Nogueira Alves alves.andreaugusto@gmail.com Colaborador: Alexandre Tolstenko Nogueira.

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.

REVISÃOPapel e caneta na mão!

Page 4: Estrutura de Dados André Augusto Nogueira Alves alves.andreaugusto@gmail.com Colaborador: Alexandre Tolstenko Nogueira.

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.

OBJETIVOS

Page 6: Estrutura de Dados André Augusto Nogueira Alves alves.andreaugusto@gmail.com Colaborador: Alexandre Tolstenko Nogueira.

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.

ORIENTAÇÃO OBJETO E ESTRUTURA DE DADOS

Page 8: Estrutura de Dados André Augusto Nogueira Alves alves.andreaugusto@gmail.com Colaborador: Alexandre Tolstenko Nogueira.

Teoria Prática

Page 9: Estrutura de Dados André Augusto Nogueira Alves alves.andreaugusto@gmail.com Colaborador: Alexandre Tolstenko Nogueira.

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.

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.

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.

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.

13

Pong OO - Bola

Page 14: Estrutura de Dados André Augusto Nogueira Alves alves.andreaugusto@gmail.com Colaborador: Alexandre Tolstenko Nogueira.

14

Pong OO - Raquete

Page 15: Estrutura de Dados André Augusto Nogueira Alves alves.andreaugusto@gmail.com Colaborador: Alexandre Tolstenko Nogueira.

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.

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.

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.

18

Vetor

• Prós e Contras;

Page 19: Estrutura de Dados André Augusto Nogueira Alves alves.andreaugusto@gmail.com Colaborador: Alexandre Tolstenko Nogueira.

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.

20

Lista

• Exemplos de usos;

Page 21: Estrutura de Dados André Augusto Nogueira Alves alves.andreaugusto@gmail.com Colaborador: Alexandre Tolstenko Nogueira.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

39

Agradecimento

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