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

Post on 21-Apr-2015

104 views 0 download

Transcript of Estrutura de Dados André Augusto Nogueira Alves alves.andreaugusto@gmail.com Colaborador: Alexandre...

Estrutura de Dados

André Augusto Nogueira Alvesalves.andreaugusto@gmail.com

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