SpaceAllience_Animation
Publicado por Ytrio Salmito Azevedo Silva (última atualização em 18/11/2011)
[ Hits: 3.539 ]
Download SpaceAllienceBeta.pas
Animação de uma nave espacial feita em pascal / Kylix. Se forem estudar o source, não esqueçam de configurar a janela do saída para:
|57 - linhas |
|100 - Colunas |
Por que as dimensões da tela, está configurada para essas dimensões.
Para que a nave possa atirar, basta pressional <TAB> , coloquei no máximo 2 tiros por vez.. Alterem como quiserem e se divirtam.
Espero que sirva de estudo para vocês.
Abs;
Program SpaceAllience2D; const // Inicialização das constantes.. right = #77; DrawBullet = '----'; SpeedNave = 37; MaxValueY = 45; MinValueY = -6; MaxValueX = 87; MinValueX = -4; var //############################ // Declaração das variávels.. //########################### Gameover:boolean; Direcion,VK_KEY:char; Score:real; life:string; ShipX,ShipY,level:integer; event:char; i,j,z:integer; isbool,ChkControl:array[1..2] of boolean; X,Y:array[1..2] of integer; //###################### //Procedimento de limpeza; //###################### procedure Clear(X1,X2,Y1,Y2:integer); begin for i := x1 to x2 do for j := y1 to y2 do begin gotoxy(j,i); write(' '); end; end; //######################## // Pontuação do jogador.. //######################## procedure paintPanel; begin level := 01; // Cor do painel.. textcolor(white); // Desenha a barrinha de life.. for i := 1 to 20 do Life := Life + #177; gotoxy(85,2); write('Score: ',score:0:4); gotoxy(2,2); write('Life: ',life); gotoxy(2,3); write('Level: ',0,level); end; //########################################### // Desenha a nave e controla a posição X,Y... //########################################### procedure Nave(ShipX,ShipY:integer); begin // Apaga o rastro... textcolor(black); gotoxy(5 + ShipX, 9 + ShipY); write(' '); gotoxy(11 + ShipX, 10 + ShipY); write(' '); gotoxy(11 + ShipX, 12 + ShipY); write(' '); gotoxy(5 + ShipX, 13 + ShipY); write(' '); //------------------------------------// // Desenha a Navinha... textcolor(yellow); gotoxy(5 + ShipX,10 + ShipY); write(' ',':> ',' '); gotoxy(5 + ShipX,11 + ShipY); write(' ','| > '); gotoxy(5 + ShipX,12 + ShipY); write(' ',':> ',' '); // Envia para 1 - coluna , 1 - linha.. gotoxy(1,1); end; // Iniciar o jogo.. procedure Startgame; begin textcolor(lightred); While(Vk_key <> #13) do begin if(keypressed) then VK_KEY := readkey; delay(300); gotoxy(34,28); write('##Pressione [Enter] para Iniciar##'); delay(300); clear(28,28,34,68); end; end; //###################################### // Simulação de Carregamento do Jogo... //###################################### procedure LoadingGame; Begin textcolor(Lightgray); // Carrega a Barrinha; for i := 1 to 30 do begin gotoxy(1,1); write('Load.Screen: ' ,3 * i + 10); delay(20); gotoxy(i,2); write(#177); end; // Apaga a barrinha.. clrscr; end; procedure CheckBounds(x,y:integer); begin if (ShipX = MinValueX) then inc(ShipX); if (ShipX = MaxValueX) then dec(ShipX); if (ShipY = MinValueY) then inc(Shipy); if (ShipY = MaxValueY) then dec(ShipY); end; procedure ActionBullet(z:integer); begin // cor da tela.. textcolor(lightgreen); // Atualizar a posição X & Y da balinha.. if(ChkControl[z]) then begin X[z] := ShipX + 5; Y[z] := ShipY + 11; end; // Movimenta a balinha na tela.. x[z] := x[z] + 4; isbool[z] := true; ChkControl[z] := false; // Desenha na posição especifica; gotoxy(x[z],y[z]); write(' ',drawbullet); { Verifica se abalinha colidio com a tela... } if(X[z] >= 94) then begin // Limpa o rastro da balinha.. Clear(Y[z],Y[z],X[z],X[z] + 8); // Reinicia X & Y como 0.. x[z] := 0; y[z] := 0; // Reinicia Isbool & CheckControl como false.. isbool[z] := false; ChkControl[z] := true; // reinicia o evento.. event := ' '; end; // fim do método... end; //Controla o movimento da navinha na tela. procedure Mover(direcion:char); begin //Loop principal do jogo... while not (Gameover) do begin // Captura o Movimento Atual... VK_KEY := direcion; // Desenha a Navinha na tela.. Nave(ShipX,shipY); //Verifica se existe alguma SETA pressionada.. if (keypressed) then direcion := readkey; Case direcion of #72: dec(ShipY); // Cima; #75: dec(ShipX); // Esquerda; #77: inc(ShipX); // Direita; #80: inc(ShipY); // Baixo; else direcion := VK_KEY; end; // Velocidade da balinha.. delay(SpeedNave); //Checa as borda CheckBounds(ShipX,ShipY); // teste para verifica se duas balinhas pode ir ao mesmo tempo.. if (isbool[1]) and (z = 2) then Actionbullet(1); if (isbool[2]) and (z = 1) then ActionBullet(2); // Controla o disparo da balinha na tela.. if(keypressed) then begin event := readkey; if(event = #9) and (z = 1) then inc(z) else z := 1; end; // Controle do disparo... case event of #9 : case z of 1,2:ActionBullet(z); end else begin for i := 1 to 2 do if(z = i) and (x[i]>= 4) then Actionbullet(i); end; end; end; end; //########################################## // Inicialização da parte principal do jogo //########################################## Procedure ScreenMenu; var newgame:char; begin //################################# // Desenha o Box de menu do jogo... //################################# For i := 1 to 10 do For j := 1 to 21 do begin textcolor(Lightgreen); gotoxy(j,i); write('#'); end; clear(2,9,2,20); //################################# // Desenha o menu principal.. //################################# For i:= 1 to 4 do begin textcolor( i * 15); gotoxy(3,i*2); case i of 1 : Write('Space Allience 2D'); 2 : Write('N: New game'); 3 : Write('E: Exit Game'); 4 : Write('By Hs Skywalker'); end; end; //################### // Menu de Escolha.. //#################### gotoxy(2,11); textcolor(white); write('Escolhar uma Opção: '); Repeat Newgame := Upcase(readkey); Until(Newgame = Upcase('N')) or (newgame = upcase('E') ) ; // Inicializar o jogo... case newgame of 'N','n': begin clrscr; LoadingGame; paintPanel; Startgame; mover(right); end; 'E','e': begin clrscr; gameover := true; end; end; end; //############################ // O programa inicia aqui! //############################ Begin clrscr; //######################################### // Inicialização das váriavels principais //######################################## for z := 1 to 2 do ChkControl[z] := true; GameOver := false; //Menu principal; ScreenMenu; End.
armazenar o nome de um aluno e suas notas
Visualizador de imagem Pascal/Lazarus
média dos numeros informados em posiçoes pares em um vetor
Nenhum comentário foi encontrado.
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Linux Lite Demorando Muito Para Ligar (1)
PC não liga no filtro de linha (4)
Remoção de propaganda com o programa Comskip[AJUDA] (2)