• Nenhum resultado encontrado

Material III-Bimestre

N/A
N/A
Protected

Academic year: 2021

Share "Material III-Bimestre"

Copied!
62
0
0

Texto

(1)

Universidade do Vale do Paraíba

Colégio Técnico Antônio Teixeira Fernandes

Disciplina Desenvolvimento de Jogos

Material III-Bimestre

Eventos para implementação de Jogos

site : http://www1.univap.br/wagner Prof. Responsáveis

Hélio Lourenço Esperidião Ferreira

(2)

Conceito de

Manipulação de

Manipulação de

(3)

Eventos

Eventos

são

ações

disparadas pelo usuário ou

dispositivo

em

um

3

dispositivo

em

um

(4)
(5)

Funcionamento dos Eventos

Eventos são processos recursivos que

rodam paralelamente com outros

processos.

5

Processo: É uma conexão em série de

atividades com objetivo de atingir

(6)

OnDblClick - Dispara o código quando for selecionado com um duplo click.

Exemplo :

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

ShowMessage("Duplo click no formulário .... "); }

(7)

OnActivate - Dispara o código após ter desenhado o formulário.

Exemplo :

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

ShowMessage("Crie o Formulário .... "); }

(8)

OnCreate - Dispara o código antes de

desenhar o formulário.

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

ShowMessage("Ok"); }

(9)

OnMouseDown- Dispara o código ao soltar o botão direito do mouse.

void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)

{

Form1->Caption = IntToStr(X)+" - "+IntToStr(Y); }

(10)

Captura a tela pressionada

(OnMouseDown)

OnMouseDown

X,Y

(11)

Classe TMouseButton

Detecta qual da teclas do mouse foi pressionada e envia para o objeto da classe TMouseButton.

Exemplo: TMouseButton Button

(12)

Exemplo Movendo objeto

OnMouseDown()

void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,

TShiftState Shift, int X, int Y) {

posiciona(Imagem,X,Y); posiciona(Imagem,X,Y); }

(13)

OnMouseMove - Dispara o código ao mover

o mouse no objeto

.

void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y)

{

Form1->Caption = IntToStr(X)+" - "+IntToStr(Y); }

(14)

OnClose - Dispara o código antes de

fechar o formúlario

.

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)

&Action) {

ShowMessage("Sair"); }

(15)

Tabela de Teclas (chaves)

(16)

Tabela de teclas numéricas e

operadores aritméticos

(17)

Captura a tecla pressionada

(OnKeyDown)

OnKeyDown

&Key

17

(18)

Movimento de setas de objetos

(Esquerda/Direita)

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)

{

WORD *tecla = &Key; if(*tecla==VK_RIGHT)

trans_x(dispara,100,true); if(*tecla==VK_LEFT)

trans_x(dispara,100,false);

(19)

Classe TShiftState

Detecta se as teclas CTRL, SHIFT ou ALT foram pressionadas. Podem ser usadas simultaneamente com outras.

Exemplo: TShiftState Shift

(20)

Método Contains()

Retorna verdadeiro ao reconhecer uma das teclas da família Shift.

shift

Contains

shift

Contains

(21)

Mascaras de retorno da função

Contains()

Valor Descrição

ssShift Detecta se foi pressionada a tecla Shift

ssAlt Detecta se foi pressionada a tecla Alt

21

ssCtrl Detecta se foi pressionada a tecla Ctrl

ssLeft Detecta botão esquerdo do mouse

ssRight Detecta botão direito do mouse

ssMiddle Detecta botão do meio do mouse

(22)

Exemplos de uma

Aplicação Prática

Aplicação Prática

(23)

Funcionamento de processos

paralelos

OnKeyDown

Timer

(24)

Dispara tiros com CTRL+A

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if( Shift.Contains(ssCtrl) ) { if(*tecla == 65) if(*tecla == 65) trans_x(dispara,100,false); } }

(25)

Dispara tiros com barra de espaço

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,TShiftState Shift) { if(*tecla==VK_SPACE) { posiciona(tiro,getp_x(dispara), getp_y(dispara)); Timer1->Enabled = true; Timer1->Enabled = true; tiro->Visible = true; } } 25

(26)

Exemplo disparo de tiro

void __fastcall TForm1::Timer1Timer(TObject *Sender) { // disparador de tiros if(getp_y(tiro) > 8) { trans_y(tiro,100,true); trans_y(tiro,100,true); } else { Timer1->Enabled = false; tiro->Visible = false; } }

(27)

Conceito de

Arquivo de

Arquivo de

Dados

(28)

Conceito de Arquivo

Vem a ser um recurso para

armazenamento de informação, que está disponível a um programa de computador e

é normalmente baseado em algum

é normalmente baseado em algum

(29)

Usando Streams.

A manipulação de arquivo em C normalmente é feita por intermédio de um recurso do sistema operacional denominado Stream (que vem a ser cadeia de caracteres ou bytes).

29

Arquivo de Dados

Cadeia de bytes

(30)
(31)

Criando um Buffer. (FILE)

• Para se criar um buffer é necessário usar o comando FILE que é um tipo de estrutura especial que estabelece o estrutura especial que estabelece o

buffer. Para dar nome ao buffer

colocamos uma variável do tipo

ponteiro.

(32)

Para usar FILE é necessário

utilizar a biblioteca.

#include <stdio.h>

Sintaxe para criação de um Buffer.

FILE *<nome_Buffer>; Exemplo :

(33)

Abrindo e criando um arquivo

- fopen()

• fopen() : Para se manipular um arquivo é preciso cria-lo para poder usar o recurso de leitura, e gravação. A função recurso de leitura, e gravação. A função fopen retorna um ponteiro para o início do buffer associado ao arquivo. Um valor NULL é retornado quando o

arquivo de dados não puder ser

encontrado.

(34)

Sintaxe : <buffer> = fopen(<nome-arquivo>, <tipo-abertura>);

(35)

Exemplo :

pt = fopen("c:/diretorio/teste.txt","r+");

Obs : Obs :

Este exemplo abre um arquivo já existente

para leitura e gravação.

(36)

Escrevendo dados em um Arquivo -fprintf()

Para gravar uma informação em um arquivo

usamos a função fprintf(), que permite

escrever

um dado no buffer. Sintaxe:

(37)

Exemplo :

fprintf(pt,"Gravando Arquivo");

(38)

Fechando um arquivo de

dados - fclose()

Para se fechar um arquivo usamos a função fclose(), que permite remover todos os dados do buffer para o disco. Sintaxe :

fclose(<nome_buffer>); Exemplo :

(39)

Exemplo de um programa para

escrever um dado no arquivo.

FILE *fp;

fp = fopen("c:/ProjC++/teste.txt","r+"); fprintf(fp,“Dados Armazenados..\n"); fclose(fp);

(40)

Leitura de um arquivo de dados

-fgets(), feof().

Permite realizar a leitura de um ou mais registros em arquivo cada vez que fgets() é acionado desloca o ponteiro para o próximo registro até encontrar o final do arquivo. Que é indicado pela função feof(), que retorna verdadeiro caso o final do arquivo seja retorna verdadeiro caso o final do arquivo seja encontrado.

Sintaxe :

(41)

Exemplo : char v[30]; fp = fopen(arq,"r+"); while(!feof(fp)) { fgets(v,30,fp); ShowMessage(v); } fclose(fp); 41

(42)

Verificando se um arquivo

existe ou não - FileExists().

FileExists() - Retorna um operador

booleano se o arquivo existir no

diretório especificado.

Sintaxe :

<Varm-Boolean> = FileExists(<Caminho_nome_Arquivo>);

(43)

Uma estrutura vem a ser um tipo especial de dados que permite agrupar tipo de diferentes de dados em um só

Criando uma Estrutura de registros

tipo de diferentes de dados em um só ambiente com se o conjunto fosse apenas um.

(44)

Implementado a criação de uma estrutura de registros - struct

struct - cria uma estrutura de registros para um

determinado grupo de dados.

Obs: A estrutura deve ser declarada no programa de forma global.

Sintaxe :

struct <nome_logico> {

(45)

Exemplo : struct dados { int n; AnsiString nome; AnsiString nome; double salario; }entrada; 45

(46)

Usando uma estrutura de

registros.

void __fastcall TForm1::Button1Click(TObject *Sender)

{{

entrada.nome = "Maria da Silva"; entrada.salario = 3000.90;

ShowMessage(entrada.salario); }

(47)

Uma estrutura de registro pode ser associada a um arquivo formando assim um banco de

dados.

Exemplo de arquivo com estrutura de registros. struct dados { char nome[30]; char salario[12]; }entrada; 47

(48)

Exemplo Gravação de uma estrutura em um arquivo de texto.

void __fastcall TForm1::Button1Click(TObject *Sender) { FILE *fp; fp = fopen("c:/ProjC++/teste.txt","w+"); StrCopy(entrada.nome,"Maria da Silva,"); StrCopy(entrada.nome,"Maria da Silva,"); StrCopy(entrada.salario,"3000.90\n"); fprintf(fp,entrada.nome); fprintf(fp,entrada.salario); fclose(fp);

(49)

Mudando o nome do Arquivo.

RenameFile() : Troca o nome do arquivo determinado em um diretório.

Sintaxe :

RenameFile(<Arquivo_Antigo>,<Arquivo_Novo>);

Exemplo :

RenameFile("c:/Projeto/teste.txt","c:/Projeto/testando.txt");

(50)

DeleteFile() : Apaga um arquivo de um determinado diretório. Sintxe : RenameFile(<Nome_Arquivo>); RenameFile(<Nome_Arquivo>); Exemplo : DeleteFile("c:/Projeto/logica.txt");

(51)

system() : Executa um comando do sistema operacional. Sintaxe : system(<String do sistema>); system(<String do sistema>); Exemplo : system("sol.exe"); 51

(52)

Permite a criação de uma região para digitação de texto.

Memo deve ser usado com a propriedade Lines. Memo deve ser usado com a propriedade Lines.

Para adicionar um texto ao memo usamos método add().

(53)

Para contar o número de linhas de um texto usamos método count.

Exemplo :

int x = Memo1->Lines->Count;

Para obter o uma linha de um texto usa-se o Para obter o uma linha de um texto usa-se o

método. Strings[]. Exemplo :

int i = 1;

AnsiString p = Memo1->Lines->Strings[i];

(54)

Para Gravar os dados de um determinado texto. SaveToFile().

Exemplo :

Memo1->Lines->SaveToFile("teste.txt"); Memo1->Lines->SaveToFile("teste.txt");

(55)

Para Carregar os dados de um determinado texto. LoadFormFile().

Sintaxe:

Memo1->Lines->LoadFromFile("teste.txt");

(56)

SaveDialog e OpenDialog

Paleta Dialog, permite criar uma janela onde o usuário poderã escolher um arquivo para

abertura ou gravação.

Propriedades Valores Default *.txt (extensão)

Filename Caminho e nome do arquivo

Filter Texto|*.txt (nome e extensão do arquivo)

(57)

Método Execute()

Executa a caixa de dialogo onde o arquivo escolhido será enviado para a propriedade FileName.

Exemplo :

SaveDialog1->Execute();

(58)
(59)

FileName : Permite exibir o caminho e o nome do arquivo que foi escolhido.

AnsiString cam = SaveDialog1->FileName;

No exemplo acima o caminho armazenado na variável cam será c:\lixo\cripotografia.txt

(60)

MainMenu : Determina um menu de opções. (Basta digitar duplo click no objeto)

Escrever opções na propriedade caption

Para criar um submenu basta clicar na linha de baixo e escrever na propriedade caption.

(61)

Resultado na Execução do Menu

(62)

O código deverá ser colocado no evento OnClick do objeto MainMenu1

void __fastcall TForm1::Novo1Click(TObject *Sender)

{{

ShowMessage(“Click na opção Novo”); }

Referências

Documentos relacionados

A baixa taxa de desconto ao longo dos anos de produção do campo, para o cálculo da função objetivo, aliada a baixa produção de água que a locação de

 A alocação dinâmica é muito utilizada em problemas de estrutura de dados como por exemplo, listas encadeadas, pilhas, filas, arvores binárias e grafos ...  O interessante

É_Realizada n n (0,3) (0,n) Inscrição Nome RG Expedidor UF Data Média Tipo Nota Questões Número Área Sub-Área Avaliação 3 n Esquema ER para o banco de dados CONCURSO..

Marca Vendedor Veículo Ford João Carro Ford João Caminhão Ford Mário Caminhão Fiat Mário Carro Chevrolet Felipe Carro Chevrolet João Carro Chevrolet João

Membro_Faculdade (Matrícula: Inteiro, Nome: string[50], Carga: Inteiro, IniContrato: data, Curso: string[30], professor: booleano, aluno: booleano). Membro

Desde logo, a nossa compreensão e interpretação da importância funcional e ritual das lamentações públicas das carpideiras e dos carpideiros egípcios é sublinhada pelo

Atualmente os currículos em ensino de ciências sinalizam que os conteúdos difundidos em sala de aula devem proporcionar ao educando o desenvolvimento de competências e habilidades

Buscando contribuir e trazer novos dados para esta discussão, justifica-se o presente estudo pelo objetivo de avaliar o grau de motivação dos servidores da Secretaria de