Utilizando, obviamente, o programa Dev C++.
Download AQUI.
Código:
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <windows.h> #include "psi_tools.h" #include <ctype.h> #define y_ultimo 80 #define n_inimigos 10 #define jogo_numero 20 #define x 2 #define cls system("cls"); struct ultimo{ int pos_x; int pos_bala; int pos_bala_y; }; struct inimigos{ int pos_i_y; int pos_i_x; }; struct jogador{ char nome[50]; int pos_y; int pontuacao; }; struct tiro{ int pos_bala; int pos_bala_y; int disparou; }; struct ultimo ultimo; struct tiro bala; struct jogador dados_j[50]; struct inimigos alien[n_inimigos]; char nave='b'; char cart='-'; int n_jogo=0; int contar=0; // variavel aplicada ao ultimo (mover) /////////////////////////////////////// void desenhar_alien(void); void introducao (void); void menu (void); void move_cima (void); void move_baixo (void); void posicao_inicial(void); void dispara(void); void cordenar_inimigos(void); void move_jogo(void); void move_alien(void); void matar_inimigo(void); void ecolher_nave(void); void controlos (void); void pontuacao(void); void melhor_pontuacao(void); void limpar_pontuacoes(void); void game_over(int ¶r); void posicao_inicial_ultimo(void); void mover_ultimo(void); void mover_ultimo_cima(void); void mover_ultimo_baixo(void); void diparar_ultimo(void); void ordenar_pontuacoes(void); //////////////////////////////////////// int main (int argc,char* argv[]) { limpar_pontuacoes(); bala.disparou=0; ultimo.pos_bala=1; menu(); } //////////////////////////////////// void introducao (void) { cls; printf("Ola capitao, para comecar esta aventura pelo espaco\nvou precisar de saber o teu nome\nNome: "); _flushall(); le_string(dados_j[n_jogo].nome,13,7,3); cls; printf("Capitao "); printf("%s",dados_j[n_jogo].nome); printf(" seja bem vindo a SpaceShipOne a nave mais veloz do mundo.\nEsperemos que esteja a altura de a comandar\nA equipa conta consigo\n"); printf("\nPrima uma tecla para comecar a aventura\n"); getch(); move_jogo(); } //////////////////////////////////// void menu (void) { char *opcoes[]={ "| Jogar |", "| Mudar a nave |", "| Controlos |", "| Pontuacao |", "| Terminar |" }; int op; do{ op=menu(opcoes,5,30,8,AZUL,BRANCO); if(op==1){ introducao(); n_jogo++; } if(op==2) ecolher_nave(); if(op==3) controlos(); if(op==4) ordenar_pontuacoes(); }while(op!=5); } //////////////////////////////////////////// void move_cima (void) { if(dados_j[n_jogo].pos_y>2) dados_j[n_jogo].pos_y--; } ///////////////////////////////////////// void move_baixo (void) { if(dados_j[n_jogo].pos_y<=23) dados_j[n_jogo].pos_y++; } //////////////////////////////////////// void move_jogo (void) { char tecla; int parar=0; posicao_inicial(); posicao_inicial_ultimo(); cordenar_inimigos(); do{ cls; goto_xy(x,dados_j[n_jogo].pos_y); printf("%c",nave); tecla=0; desenhar_alien(); if(kbhit()){ tecla=getch(); tecla=tolower(tecla); } if(tecla==27){ cls; goto_xy(10,14); printf("Tem a certeza que quer sair?(S,N)"); tecla=getch(); tecla=tolower(tecla); if(tecla=='s') break; } if(tecla=='s' || tecla=='w' || tecla=='f'){ if(tecla=='w'){ move_cima(); goto_xy(x,dados_j[n_jogo].pos_y); printf("%c",nave); }if(tecla=='s'){ move_baixo(); goto_xy(x,dados_j[n_jogo].pos_y); printf("%c",nave); }if(bala.disparou==0) if(tecla=='f'){ Beep(2000,100); //faz um som com uma frequenca de 2000 Hertz e com 100 milisegundos de duraçao bala.pos_bala=3; bala.disparou=1;// esta a bala a executar bala.pos_bala_y=dados_j[n_jogo].pos_y; bala.pos_bala=x; move_alien(); } } dispara(); pontuacao(); game_over(parar); mover_ultimo(); diparar_ultimo(); if(parar==1) break; }while(dados_j[n_jogo].pontuacao!=10); cls; if(dados_j[n_jogo].pontuacao==10) printf("Conseguiste ganhar \nMas nada de excesso de confianca ainda ha muito trabalho a fazer\n"); if(parar==1) printf("Nao acredito, destruiste a minha querida nave \nIsto ira ter consequencias \n"); system("pause"); } ////////////////////////////////////////// void posicao_inicial(void) { dados_j[n_jogo].pos_y=11; goto_xy(x,dados_j[n_jogo].pos_y); printf("%c",nave); for(int i=0;i<n_inimigos;i++) alien[i].pos_i_x=79; } /////////////////////////////////////////// void dispara (void) { if(bala.disparou==1){ bala.pos_bala++; goto_xy(bala.pos_bala,bala.pos_bala_y); printf("%c",cart); matar_inimigo(); } if(bala.pos_bala>=81) bala.disparou=0; if(bala.pos_bala==ultimo.pos_bala && bala.pos_bala_y==ultimo.pos_bala_y || bala.pos_bala==ultimo.pos_bala-1 && bala.pos_bala_y==ultimo.pos_bala_y || bala.pos_bala==ultimo.pos_bala+1 && bala.pos_bala_y==ultimo.pos_bala_y){ bala.disparou=0; } } /////////////////////////////////////////////// void desenhar_alien(void) { int i; for(i=0;i<n_inimigos;i++){ if(alien[i].pos_i_x!=0 && alien[i].pos_i_y!=0){ cor_texto(PRETO); goto_xy(alien[i].pos_i_x,alien[i].pos_i_y); printf("X"); } } } ////////////////////////////////////////////// void cordenar_inimigos() { alien[0].pos_i_y=10; alien[1].pos_i_y=16; alien[2].pos_i_y=4; alien[3].pos_i_y=9; alien[4].pos_i_y=20; alien[5].pos_i_y=22; alien[6].pos_i_y=18; alien[7].pos_i_y=13; alien[8].pos_i_y=3; alien[9].pos_i_y=7; } /////////////////////////////////////////////////// void move_alien(void) { for(int i=0;i<n_inimigos;i++){ if(alien[i].pos_i_x!=0 && alien[i].pos_i_y!=0){ alien[i].pos_i_x--; alien[i].pos_i_x--; goto_xy(alien[i].pos_i_x,alien[i].pos_i_y); printf("X"); } } } /////////////////////////////////////////// void matar_inimigo(void) { for(int i=0;i<n_inimigos;i++) if(bala.pos_bala==alien[i].pos_i_x && bala.pos_bala_y==alien[i].pos_i_y){ alien[i].pos_i_x=0; alien[i].pos_i_y=0; bala.disparou=0; break; } } ///////////////////////////////////////////// void ecolher_nave(void) { cls; printf(" A SpaceShipOne deixa-te produzir um modelo da nave:\n\n "); printf("Escolhe tua nave: "); scanf("%c",&nave); printf("Escolhe o teu missil: "); _flushall(); scanf("%c",&cart); menu(); } //////////////////////////////////////////////// void controlos (void) { char sair; do{ cls; printf("Constrolos\n"); printf("W - Mover a nave para cima\n"); printf("S - Mover a nave para baixo\n"); printf("F - Disparar\n"); printf("Prime Esc para sair"); sair=getch(); }while(sair!=27); } ///////////////////////////////////////////////// void pontuacao(void) { dados_j[n_jogo].pontuacao=0; for(int i=0;i<n_inimigos;i++) if(alien[i].pos_i_x==0 && alien[i].pos_i_y==0) dados_j[n_jogo].pontuacao++; goto_xy(1,1); printf("Pontuacao: %d",dados_j[n_jogo].pontuacao); } /////////////////////////////////////////////////// void limpar_pontuacoes(void) { for(int i=0;i<jogo_numero;i++) dados_j[n_jogo].pontuacao=0; } ////////////////////////////////////////////////// void game_over(int ¶r) { for(int i=0;i<n_inimigos;i++) if(alien[i].pos_i_x==x) dados_j[n_jogo].pontuacao=10; if(ultimo.pos_bala_y==dados_j[n_jogo].pos_y && ultimo.pos_bala==x) parar=1; } /////////////////////////////////////////////////////// void posicao_inicial_ultimo(void) { ultimo.pos_x=3; goto_xy(y_ultimo,ultimo.pos_x); printf("A"); } ////////////////////////////////////////////////////////// void mover_ultimo(void) { if(ultimo.pos_x==3) contar=1; if(ultimo.pos_x>21) contar=2; mover_ultimo_cima(); mover_ultimo_baixo(); goto_xy(y_ultimo,ultimo.pos_x); printf("A"); } //////////////////////////////////////////////////////////// void mover_ultimo_cima(void) { if(contar==2) ultimo.pos_x--; } ////////////////////////////////////////////////////////// void mover_ultimo_baixo(void) { if(contar==1) ultimo.pos_x++; } //////////////////////////////////////////////////////////// void diparar_ultimo(void) { if(bala.pos_bala==ultimo.pos_bala && bala.pos_bala_y==ultimo.pos_bala_y || bala.pos_bala==ultimo.pos_bala-1 && bala.pos_bala_y==ultimo.pos_bala_y || bala.pos_bala==ultimo.pos_bala+1 && bala.pos_bala_y==ultimo.pos_bala_y ) ultimo.pos_bala=1; if(ultimo.pos_bala==1){ ultimo.pos_bala_y=ultimo.pos_x; ultimo.pos_bala=79; } if(ultimo.pos_x!=1){ goto_xy(ultimo.pos_bala--,ultimo.pos_bala_y); printf("*"); } } //////////////////////////////////////////////////////////// void ordenar_pontuacoes(void) { char sair; do{ cls; for(int i=0;i<n_jogo;i++) if(dados_j[i].pontuacao==10) printf(" %s %d\n",dados_j[i].nome,dados_j[i].pontuacao); for(int i=0;i<n_jogo;i++) if(dados_j[i].pontuacao==9) printf(" %s %d\n",dados_j[i].nome,dados_j[i].pontuacao); for(int i=0;i<n_jogo;i++) if(dados_j[i].pontuacao==8) printf(" %s %d\n",dados_j[i].nome,dados_j[i].pontuacao); for(int i=0;i<n_jogo;i++) if(dados_j[i].pontuacao==7) printf(" %s %d\n",dados_j[i].nome,dados_j[i].pontuacao); for(int i=0;i<n_jogo;i++) if(dados_j[i].pontuacao==6) printf(" %s %d\n",dados_j[i].nome,dados_j[i].pontuacao); for(int i=0;i<n_jogo;i++) if(dados_j[i].pontuacao==5) printf(" %s %d\n",dados_j[i].nome,dados_j[i].pontuacao); for(int i=0;i<n_jogo;i++) if(dados_j[i].pontuacao==4) printf("%s %d\n",dados_j[i].nome,dados_j[i].pontuacao); for(int i=0;i<n_jogo;i++) if(dados_j[i].pontuacao==3) printf(" %s %d\n",dados_j[i].nome,dados_j[i].pontuacao); for(int i=0;i<n_jogo;i++) if(dados_j[i].pontuacao==2) printf(" %s %d\n",dados_j[i].nome,dados_j[i].pontuacao); for(int i=0;i<n_jogo;i++) if(dados_j[i].pontuacao==1) printf(" %s %d\n",dados_j[i].nome,dados_j[i].pontuacao); for(int i=0;i<n_jogo;i++) if(dados_j[i].pontuacao==0) printf(" %s %d\n",dados_j[i].nome,dados_j[i].pontuacao); printf("\nPrime Esc para sair"); sair=getch(); }while(sair!=27); } |
Sem comentários:
Enviar um comentário