desjogos(2bim) [modo de compatibilidade]2bim).pdf · totalimagem – número de imagens a ser...

Post on 23-Aug-2020

20 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Universidade do Vale do ParaíbaColégio Técnico Antônio Teixeira Fernandes

Disciplina Desenvolvimento de Jogos

Material II-BimestreMétodos Básicos de Implementação de

Jogos DigitaisJogos Digitais

site : http://www1.univap.br/wagner

Prof. ResponsáveisHélio Lourenço Esperidião Ferreira

Wagner Santos C. de Jesus

Introdução aos Fundamentos da Fundamentos da Linguagem (C++)

2

Os criadores da linguagem

Ken Thompson e Dennis Ritchie (da esquerda pra dire ita)

Linguagem usada no desenvolvimento das mais diversas ferramentas

• Microcontroladores;• Sistemas Operacionais(Linux, Windows, OS/2 e Unix);• Programas como Word, Excel, Microstation • Ambientes de redes de computadores;• Aplicações de Computação gráfica;• Aplicações de Computação gráfica;• Programas de Aplicações médicas;• Programas para controle de máquinas e equipamentos• Construção de linguagens de programação como Java,

PHP, ActionScript e outras.• Desenvolvimento de Jogos.

Características de um programa C.

• Integridade• Clareza•• Simplicidade• Eficiência• Modularidade

Estrutura de uma linguagem de programação.

Uma linguagem de programação, possui atarefa de ser uma ferramenta para odesenvolvimento de software e para issodeve respeitar três características básicas,deve respeitar três características básicas,que são:

1) Atribuição2) Condição3) Repetição

Tipos de dados da linguagem C.

A linguagem C tem comocaracterística ser fortementetipada ou seja os tipos de dadostipada ou seja os tipos de dadospara uma variável de memóriadevem ser rigorosamenterespeitados.

Tipos de dados

Operadores Aritméticos

+ - Soma- - Subtração* - Multiplicação* - Multiplicação/ - Divisão% - Resto da Divisão

Operadores Relacionais

>- Maior que < - Menor que= = - Igual a= = - Igual a!= - Diferente de>= - Maior ou Igual<= - Menor ou Igual

Operadores Lógicos

&& - And (E)| | - Or (Ou)! - Not (Não)? - Ternário

Estruturas de Controle

Atribuição : Vem a ser procedimento dearmazenar um valor em uma variável.Sintaxe :

<tipo> <Varm> = <valor> ;

Exemplo :

int a = 1; ou int a;

AnsiString b = "Abacaxi"; ou AnsiString b;

Exemplo de Operações de Atribuição.

a++; => a = a + 1;a--; => a = a - 1;a--; => a = a - 1;a+ = 2; => a = a + 2;a* = 2; => a = a * 2;

Incrementando e Atribuindo valores as Variáveis.

Exemplo :

int a = 3;int a = 3;int b = a++ ;

Nesse caso a variável seriaincrementada depois de atribuir o valora variável b, portanto o valor de a = 4 ede b = 3.

Exemplo - 2:

int a = 3;int b = ++a ;

Nesse caso a variável (a) seriaincrementada antes de atribuir o valorpara variável b, portanto o valor de a =4 e de b = 4.

Condição : Vem a ser o procedimento de tomar decisões em programa mediante uma dada condição.

E é representado pela instrução. if( )Sintaxe :

if( <condição ) { if(<condição>)if( <condição ) { if(<condição>)<Bloco de Instruções-1 >; <Instrução-1>;

} [ else ][else]{

<Instrução-2>;<Bloco de Instruções-2 >;

}

Exemplo :

int a = 1;

if(a == 3)if(a == 3)ShowMessage("O número esta Correto !!!");

elseShowMessage("O número não esta Correto

!!!");

Exemplo : e (&&)

int nota = 6;int freq = 80;if ( nota >= 6 && freq >= 75)

ShowMessage(“Aluno Aprovado..”);ShowMessage(“Aluno Aprovado..”);else

ShowMessage(“Aluno Reprovado”);

Exemplo : ou ( || )

boolean rg = true;boolean cpf = false;if( rg = = true || cpf = = true)

ShowMessage(“Abra conta na ShowMessage(“Abra conta na locadora”);else

ShowMessage(“Não pode Abrir conta”);

Exemplo : Não ( ! )

int idade = 18;if( !(idade = = 18) )

ShowMessage(“Não pode dirigir.”);else

ShowMessage(“Pode tirar carta. “);

?: Operador ternário.

Sintaxe :

<Varm> = <Condição> ? <Verdadeiro> : <Falso>;

Exemplo de ? (Ternário)

int a = 5;int b = 2;

AnsiString x = a > b ? “A maior”:”B Maior”;

Repetição : Vem a ser o procedimento de criar ciclos para solução de

problemas.Estrutura de repetição condicional.

While()

Exemplo :

int a = 1;while(a <= 5 ) {

a++;}

..................

Exemplo - 2 :

do {a++;

} while(a <= 5);} while(a <= 5);

Obs : Neste caso em particular o comando while() deverá usar ;

Estrutura de repetição sequêncial. for()

Sintaxe :

for(<Inicialização> ;<Condição> ;<Incremento>) {

<Bloco de Instruções>}

Exemplo :

for(int i= 1;i<=5;i++)ShowMessage("As poderosas !!!

");

Obs : Sobre as { } só devemos usarchaves nas estruturas de controle decondição e repetição quando houvercondição e repetição quando houverem seu interior mais de umainstrução a ser processada .

Entrada e Saída de dados.

InputBox() - Uma entrada de dadospode ser feito com uma função ou caixade texto, Nesse caso o InputBox() Iráde texto, Nesse caso o InputBox() Iráretornar uma String contendo ainformação digitada na caixa de texto damesma.

Sinatxe :

AnsiString Itemdigitado = InputBox(<String1>,<String2>,<String3>);

Obs :

<String1> - Título da barra de título.<String2> - Título da caixa de texto.<String2> - Título da caixa de texto.<String3> - Informação de dentro da caixa de texto.

AnsiString Itemdigitado = InputBox("Progarama teste","Digite Algo","Nenhum");

Saída :

Criando uma entrada de dados com o objeto caixa de texto (Edit).

Para criar uma caixa de texto em uma aplicação use a palheta de objetos (Standard), em seguida você poderá usar as

propriedade da caixa de texto.

Usando uma caixa de texto para capturar um valor dado pelo usuário.

Exemplo :

AnsiString dado ;dado = Edit1->Text;

Obs : Em C++ o objeto é separado da propriedade como

símbolo de - > .

Criando uma saída de dados usando o objeto Label. Que serve para mandar mensagens em formulário.

Exemplo :

Label1->Caption = "Mensagem Para Usuário !!! ";

Saída :

ShowMessage() - Exibe uma mensagem do String no video.

Sintaxe :ShowMessage(<String>);ShowMessage(<String>);

Exemplo :

ShowMessage("Dados Incorretos, Tente Novamente !!!");

Saída :

Para cria um objeto Botão de comandos, use a palheta :

O nome do objeto criado será Button que permite disparar um evento do tipo clique ao ser selecionado com o mouse.

Exemplo :

Button 1->Caption=Button 1->Caption="Ok" ;

break, continue - São instruções que auxiliam no controle de uma repetição.

break - Abandona uma repetição antes que o

laço possa terminar.

Exemplo :

int a = 1;while(a <= 5) {

if(a == 3)break;

a++;}

ShowMessage("O valor é "+IntToStr(a)) ;

continue - Volta a linha da repetição não executando as instruções que estão abaixo.

Exemplo :

int a = 1;while(a <= 5) {while(a <= 5) {

if(a == 3) {ShowMessage("ahahah !!!, Nunca mais vou parar

!!");continue;

}a++;

}

Estrutura de um Programa em Builder C++.

void __fastcall TForm1:: ObjetoEvento (TObject *Sender)

{{// Um comentário pode ser feito com as barras ou/* Comentário de trecho de programa */

<Bloco de Instruções>}

Objetos de Controle

Builder C++ conta com uma barra detarefas capaz de permitir a confecçãotarefas capaz de permitir a confecçãode rotinas mas sofisticadas com relaçãoa parte visual da aplicação.

Entrada e Saída (Jogos)Modelos dos principais objetos para aquisição de entradas e saídas

47

Paleta de Ferramentas Standard.

Padrão

Usando Objetos principais do C++(Builder).

Criando uma caixa de lista. (ListBox)

Atribuindo dados para caixa de lista.

Usando a propriedade Items.

Permite acrescentar em cada posição da caixa de lista um itemenviado pelo métodos Add() que adiciona criando uma novaposição na caixa de texto.

Exemplo :

ListBox1->Items->Add("Maria");ListBox1->Items->Add("José");ListBox1->Items->Add("Célia");

Saída :

Onde o primeiro item da caixa de lista é 0 e o terceiro 2 eassim por diante. Em caso nenhum item esteja seleciona ovalor será (-1).

Capturando o Item Selecionado por intermédio da propriedade ItemIndex.

Exemplo :

int x = ListBox 1->ItemIndex ;ShowMessage(x) ;ShowMessage(x) ;

Obs : No exemplo acima x será um númerode 0 a 2.

Capturando uma "String" da caixa de Lista. Método Strings[].

Exemplo :

int x = ListBox1->ItemIndex;AnsiString a = ListBox 1->Items ->Strings[x]) ;AnsiString a = ListBox 1->Items ->Strings[x]) ;

Obs : Irá retorna com a string selecionada nacaixa de Lista pelo usuário armazenando oconteúdo na variável (a).

Criando uma Caixa de Combinação. (ComboBox).

Atribuindo dados para uma caixa de combinação.

Exemplo :

ComboBox1->Items->Add("Item-1");ComboBox1->Items->Add("Item-1");ComboBox1->Items->Add("Item-2");ComboBox1->Items->Add("Item-3");ComboBox1->Items->Add("Item-4");

Saída :

Capturando dados de uma caixa de combinação.

AnsiString a = ComboBox1->Text;

Removendo dados de uma caixa de Combinação. Método Delete().

ComboBox1->Items->Add("Item-1"); ComboBox1->Items->Add("Item-2"); ComboBox1->Items->Add("Item-3"); ComboBox1->Items->Add("Item-4"); ComboBox1->Items->Add("Item-4"); ComboBox1->Items->Delete(3);

Obs : No exemplo acima o item eliminado será (Item-4). Poiscomo na caixa de lista a caixa de combinação também iniciana posição 0 (Zero).

Atenção : Todas as propriedades emétodos usados para a caixa de lista(ListBox) valem para a caixa de(ListBox) valem para a caixa decombinação (ComboBox 1).

Criando uma caixa de verificação. (CheckBox)

Exemplo :

CheckBox1->Checked = true;

Saida :

Obs : Marca a caixa de verificação quandorecebe verdadeiro e desmarca quando recebefalse, podendo ser usado também (0- nãoselecionado ou 1- Selecionado).

Criando botões de rádio. (RadioGroup)

Exemplo :

RadioGroup1->Items->Add("Masc.");RadioGroup1->Items->Add("Fem.");

Saída :

Capturando a informação selecionada no botão de rádio.

Exemplo :

int k = RadioGroup1->ItemIndex; if(k = = 0) ShowMessage("Masc. Foi Selecionado !!!"); else ShowMessage("Fem. Foi Selecionado !!!");

Criando uma Barra de Rolagem. (ScrollBar).

Capturando dados de uma Barra de Rolagem.

void __fastcall TForm1::ScrollBar1Change(TObject *Sender) { int y = ScrollBar1->Position; int y = ScrollBar1->Position; Label1->Caption = IntToStr(y); }

Obs : Uma Barra de Rolagem possui como propriedades principaisMax = 100 (determina o valor máximo que será atribuído para abarra e a propriedade Min = 0, o valor mínimo atribuído) e oPosition que retorna o valor selecionado.

Criando um Painel. (Panel).

Cria um painel para agrupamento de objetos,ou seja tudo o que acontecer em um objetoPanel acontecera também com os outrosvinculados ao mesmo painel.

Exemplo : (Panel)

No exemplo abaixo a programação irá desabilitaros dois botões usando apenas uma única linha semque seja preciso desabilitar cada botão.

Exemplo :

Panel1->Visible = 0;

Conceito de CenárioCenário

68

Conceito de Cenário

Cenário é o espaço real ou virtual,onde a história se passa, Pode ser oconjunto de elementos que decoram olocal das ações em execução do modeloapresentado.apresentado.

69

Técnica de cores

O cenário deverá conter a mesma com de contorno do personagem da cena.

70

Cena - 1

Cena - 2

Técnicas de cores pontos colineares

71

Representação em Escala

72

Tons de cores continuas

73

Objetos mantidos na cor do cenário

74

Cenário neutro

75

Conceito de SpritesSprites

76

Conceito de Sprite

Os sprites foram inventadosoriginalmente como um método rápidode animação de várias imagens agrupadasnuma tela, em jogos de computadorbidimensionais, usando hardware especial.

77

Exemplos

Os sprites são usados para geraranimações em jogos. Sprites paramovimentação de um personagem.

78

Exemplo (2)

Seqüência de sprites para realizaranimação de um cachorro correndo.

79

Conceitos de AnimaçãoAnimação

Movimento

80

Conceito de animação

Animação significa dar vida a umobjeto estático.

81

Técnicas de animação

• Animação Stop-Motion;• Animação de Recortes;• Animação quadro à quadro;• Animação por Interpolação

82

AtençãoImportante todos os métodosdemonstrados implementados apartirdeste momento devem ser guardadospelos alunos para que se possam serpelos alunos para que se possam serreutilizados em outros projetos.

83

Conceito de temporizadortemporizador

84

Definição

Um temporizador é umdispositivo capaz demedir o tempo.medir o tempo.

85

Conceito de Temporizador

Evento temporizado para processamentoem concorrência.

86

Paleta System

Funcionamento de um temporizador

• Com condição de parada.• Sem condição de parada.• Sem condição de parada.

87

Condição de parada

Processamento

88

contador

ContadorN

FIM

S

Sem condição de parada

Processamento

89

contador

Propriedades do Timer

Propriedades Estado

Enable True/False

Interval 1000

90

Interval 1000

Name Timer1

Aplicando animação em um Spriteem um Sprite

91

Evento temporizador

void __fastcall TForm1::Timer1Timer(TObject *Sender){// Chamada da função de animação de sprite // Chamada da função de animação de sprite }

92

Procedimento de Animação do Sprite

int contador_imagem = 0;void AnimaSprites(TImage *figura, int totalimagem,String caminho,String

imagem[],boolean parar){if(!parar){figura->Picture->LoadFromFile(caminho+imagem[contador_imagem]);contador_imagem++;if(contador_imagem >= totalimagem)

contador_imagem = 0;contador_imagem = 0;}

}

93

figura – Passa o nome do objeto que contem a figura.

totalimagem – Número de Imagens a ser animadas.

Caminho – Diretório onde encontram -se as imagens.

Vetor de Imagem – Nome do arquivo de imagem a ser ca rregado.

Parar – Booleano que indica se haverá ou não animaçã o.

Chamada do método AnimaSprites()

void __fastcall TForm1::Timer1Timer(TObject *Sender){

String figura[] = {"CA1.bmp","CA2.bmp","CA3.bmp","CA4.bmp"};AnimaSprites(4,"C:\\trabalhos\\aulas\\DesenJogos\\Imagens\\",figura,false);AnimaSprites(4,"C:\\trabalhos\\aulas\\DesenJogos\\Imagens\\",figura,false);

}

94

Transformações LinearesLineares

95

Conceito de Transformações lineares

Transformações lineares são usadaspara descrever vários tipos de mudançasgeométricas, como: rotação, homotetia,geométricas, como: rotação, homotetia,cisalhamento, reflexão, além de outrasdeformações no plano ou no espaço.

96

Propriedade da Transformação Geométrica

Transformação vem a ser oconceito de transladar, atribuiruma escala ou rotação de umauma escala ou rotação de umafigura.

97

Conceito de Translação

98

Translação

Quando ocorre a variação dascoordenadas (x,y) no plano cartesiano.

x’ = x ± txy’ = y ± ty

99

Parâmetros de entrada para translação no eixo x

figura – Imagem passada comoparâmetro.tx - Valor de deslocamento horizontal notx - Valor de deslocamento horizontal noeixo x.booleano – Define se a figura irá sedeslocar para esquerda ou direita.

100

Exemplo prático de translação em no eixo x

void trans_x(TImage *figura, int tx, boolean direita){if(direita)

figura->Left += tx;else

figura->Left -= tx;}

101

Parâmetros de entrada para translação no eixo y

figura – Imagem passada comoparâmetro.ty - Valor de deslocamento vertical noty - Valor de deslocamento vertical noeixo y.booleano – Define se a figura irá sedeslocar para cima ou para baixo.

102

Exemplo prático de translação em no eixo y

void trans_y(TImage *figura, int ty, boolean cima){if(cima)

figura->Top -= ty;elseelse

figura->Top += ty;}

103

Conceito de Escala

104

Escala

Quando ocorre a variação das direçõesdo objetos nas coordenadas (x,y) no planocartesiano.

x’ = xSx

y’ = ySy105

Parâmetros de entrada para escala no eixo - x

figura – Determina a figura que sofreráescala.sx – Determina valor da escala no eixo x.sx – Determina valor da escala no eixo x.forma – Determina se haverá dilatação oucontração horizontal.

106

Exemplo prático de Escala na direção x

void escala_x(TImage *figura, int sx, boolean forma){if(forma)

figura->Width += sx;elseelse

figura->Width -= sx;}

107

Parâmetros de entrada para escala no eixo - y

figura – Determina a figura que sofreráescala.sy – Determina valor da escala no eixo y.sy – Determina valor da escala no eixo y.forma – Determina se haverá dilatação oucontração vertical.

108

Exemplo Prático de Escala na direção y.

void escala_y(TImage *figura, int sy, boolean forma){if(forma)figura->Height += sy;

elseelsefigura->Height -= sy;

}

109

Conceito de RotaçãoRotação

110

Definição de transformaçãoMovimento de rotação , é omovimento circular de um objeto ao redorde um centro ou ponto de rotação.

111

Conceitos Trigonométricos

hipot

adjcate_cos =α

112

hipot

opostcateseno

_=α

Conceitos Trigonométricos

Distância = Raio

(Xc,Yc) – Ponto Central

x = Xc + R cos(θ)

113

(Xc,Yc )

x = Xc + R cos(θ)

y = Yc + R sen(θ)

Onde (θ), varia entre [0..360].

Parâmetros de entrada para rotação

figura – Imagem a ser animada.xc – Coordenada x do ponto central.yc – Coordenada y do ponto central.yc – Coordenada y do ponto central.Dist – Distância correspondente ao raio do

circulo imaginárioangulo – Série de valores correspondentes

ao ângulo de rotação (+/-) sentido horárioou anti-horário.

114

Exemplo prático de rotação Sentido horário (360)

void rotacao(TImage *figura,int xc, int yc, int dist, int angulo){int x = xc + dist * cos(angulo*3.14/180);int y = yc + dist * sin(angulo*3.14/180);figura->Left = x;figura->Top = y;figura->Top = y;

}

115

Gerador de Números aleatóriosNúmeros aleatórios

116

Conceito de números aleatórios

Em estatística, um número aleatório éum número que pertence a uma sérienumérica e não pode ser previsto a partirdos membros anteriores da série. Odos membros anteriores da série. Oconceito de número aleatório é um conceitorelativo à série numérica a que o númeropertence.

117

Conjunto de números aleatórios

V = {9,45,1,70,72,74}

Conjunto de números aleatórios no intervalo [1 – 80].

118

V = {9,45,1,70,72,74}

Exemplo

Para se gerar um número aleatório énecessário possuir uma semente e umintervalo.

119

A

Parametrização dos métodos geradores de métodos geradores de

números aleatórios

120

int numero_aletorio(int a, int b)

Gerador de números aleatórios.

int a: Determina o valor inferior dointervalo.intervalo.int b: Determina o valor superior dointervalo.

121

Método gerador de números aleatórios

int numero_aletorio(int a, int b) {int x = 0;if(a==b)

a = 0;a = 0;if(b > a)

x = random((b-a)+1)+a;else

x = random((a-b)+1)+b;return x;

} 122

Contador de PontosPontos

123

Conceito contador

O contador de pontos realiza somatóriados pontos acumulados de umdeterminado jogador.

P(t) = total de pontos do

124

∑=

=n

iit xp

1

P(t) = total de pontos do jogador

Xi = acumulador de pontos do jogador.

i = Representa cada valor individual de x.

Parâmetros de acumulo

a – Define o limite da extremidade esquerdado intervalo.

b – Define o limite da extremidade direita dointervalo.intervalo.

incremento – Define o valor incremental.cresc – Define se o incremento será realizado

de forma crescente o decrescente(Booleano).

125

Função de acumulo de pontos

int contador = 0;int acumula_pontos(int a, int b, int incremento, bo olean cresc) {

if(cresc) {if(a > 0 && contador==0)

contador = a;if(contador < b)

contador += incremento;contador += incremento;}else{

if(a > b && contador==0)contador = a;

if(contador > b)contador -= incremento;

}return contador;

}

126

Geradores de PosicionamentoPosicionamento

127

Conceito PosicionamentoAto, processo ou efeito de posicionar(-se).

Posicionamento

Aleatório.

128

Parâmetros de posicionamento

figura – Determina a figura que será movimentada.x – Parâmetros de posicionamento da coluna.coluna.y - Parâmetros de posicionamento da linha.

129

Método para posicionamento de figuras

void posiciona(TImage *figura, int x, int y){figura->Left = x;figura->Top = y;figura->Top = y;

}

130

Captura de posicionamento

int getp_x (figura): Captura a coordenadareferente a coluna de uma determinadafigura. Retornando um inteiro.

int getp_y (figura): Captura a coordenadareferente a linha de uma determinadafigura. Retornando um inteiro.

131

Retorna posição da figura (Coluna)

int getp_x(TImage *figura){return figura->Left;return figura->Left;

}

132

Retorna posição da figura (linha)

int getp_y(TImage *figura){return figura->Top;return figura->Top;

}

133

Geradores de HanksHanks

134

Conceito de Hanks

Estatísticas paraavaliação deaproveitamento dejogadores pertinentesjogadores pertinentesa jogabilidade doprocesso.

135

Métodos para mostrar Hank

void hank(TListBox *lista, String jogador[],int pontos[], String delimita,int Indice){lista->Items->Clear();for(int i=0;i<=indice-1;i++)

lista->Items->Add(IntToStr(pontos[i])+delimita+jogador[i]);}

136

lista – Recebe dados do objeto lista

jogador – Nomes dos jogadores para serem organizados

pontos – Numero de pontos dos jogadores

delimita – Delimitador do nome e pontuação.

indice – Determina o número de elementos passados no Array.

Método para classificar pontuaçãovoid sorte(TListBox *lista,String jogador[], int po ntos[],int indice){

boolean parar = false;int aux = 0;String jog_aux="";while (!parar) {

parar = true;for(int i=0;i<=indice-2;i++){

if(pontos[i] < pontos[i+1]){aux = pontos[i];pontos[i] = pontos[i+1];pontos[i] = pontos[i+1];pontos[i+1] = aux;jog_aux = jogador[i];jogador[i] = jogador[i+1];jogador[i+1] = jog_aux;parar = false;

}}

}hank(lista,jogador,pontos,"-",indice);

}

137

top related