From a601925b2db654ee606919ae6152b3275e772015 Mon Sep 17 00:00:00 2001 From: williamtorres1 Date: Sat, 23 Jun 2018 21:47:28 -0300 Subject: [PATCH] =?UTF-8?q?O=20maior=20commit=20da=20minha=20vida.=20Novid?= =?UTF-8?q?ades:=20Os=20Jogadores=20podem=20escolher=20onde=20ir=C3=A3o=20?= =?UTF-8?q?come=C3=A7ar.(B=C3=94NUS=20P/=20RECUPERA=C3=87=C3=83O=20DA=20PR?= =?UTF-8?q?IMEIRA=20UNIDADE.=20As=20armadilhas=20e=20tochas=20podem=20esta?= =?UTF-8?q?r=20em=20qualquer=20lugar,=20com=20exce=C3=A7=C3=A3o=20dos=20lo?= =?UTF-8?q?cais=20iniciais.=20Jogabilidade:=20Est=C3=A1=20OK,=20mas=20falt?= =?UTF-8?q?a=20s=C3=B3=20o=20jogador=20n=C3=A3o=20poder=20ir=20para=20as?= =?UTF-8?q?=20paredes=20e=20n=C3=A3o=20perder=20nenhum=20passo=20por=20iss?= =?UTF-8?q?o.=20Em=20Andamento:=20Fazer=20as=20tochas=20iluminarem=20-=20E?= =?UTF-8?q?st=C3=A1=20um=20pouco=20bugado,=20mas=20tudo=20bem=20-=2025%.?= =?UTF-8?q?=20Faltando:=20Indica=C3=A7=C3=A3o=20da=20posi=C3=A7=C3=A3o=20i?= =?UTF-8?q?nicial(escolhida=20pelos=20jogadores)=20To=20pensando=20em=20pa?= =?UTF-8?q?ssasr=20mais=20parametros=20pro=20procedimento,=20mas=20estou?= =?UTF-8?q?=20com=20um=20mal=20pressentimento.=20Elementos=20-=20Falta=20o?= =?UTF-8?q?s=20elementos=20do=20mapa=20realizarem=20suas=20respectivas=20a?= =?UTF-8?q?=C3=A7=C3=B5es:=20Armadilhas=20tirar=201=20Ponto=20de=20Vida.?= =?UTF-8?q?=20Tesouro=20-=20Encerrar=20a=20partida=20quando=20o=20tesouro?= =?UTF-8?q?=20for=20encontrado.=20Mensagens=20-=20As=20mensagens=20j=C3=A1?= =?UTF-8?q?=20existem,=20por=C3=A9m=20falta=20dinamismo.=20Valida=C3=A7?= =?UTF-8?q?=C3=B5es=20corretas=20de=20fim=20de=20jogo:=20Ao=20perder=20tod?= =?UTF-8?q?os=20pontos=20de=20vida,=20ou=20achar=20o=20tesouro,=20a=20part?= =?UTF-8?q?ida=20TEM=20DE=20ACABAR.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "c\303\263digo fonte/jogo do labirinto.cpp" | 790 +++++++++++++++--- .../jogo do labirinto_v0.03.cpp" | 577 ------------- .../jogo do labirinto_v0.03.exe" | Bin 80433 -> 0 bytes .../jogo do labirinto_v0.03.o" | Bin 11389 -> 0 bytes 4 files changed, 668 insertions(+), 699 deletions(-) delete mode 100644 "c\303\263digo fonte/jogo do labirinto_v0.03.cpp" delete mode 100644 "c\303\263digo fonte/jogo do labirinto_v0.03.exe" delete mode 100644 "c\303\263digo fonte/jogo do labirinto_v0.03.o" diff --git "a/c\303\263digo fonte/jogo do labirinto.cpp" "b/c\303\263digo fonte/jogo do labirinto.cpp" index 431ac41..c1ba9db 100644 --- "a/c\303\263digo fonte/jogo do labirinto.cpp" +++ "b/c\303\263digo fonte/jogo do labirinto.cpp" @@ -1,90 +1,221 @@ -/******************************* -* File: Saturn Project * -* Author: William Torres * -****************************** */ -#include //Biblioteca p/ printf e putchar -#include //Biblioteca necessaria para gerar numeros aleatorios (passos e distribuicaoo das armadilhas, tochas e o tesouro -#include //Biblioteca para ler as teclas digitadas pelo usuario, com proposito de faze-lo percorrer o mapa(matriz) -#include //Biblioteca para complementacao da funcao srand() -#include //sleep -int sorteio_passos(int *passos) -{ - do - { - *passos=3+rand()%11; - }while(*passos > 10 && *passos < 3 ); +/**************************** +* File: Saturn Project * +* Author: William Torres * +*****************************/ +#include //Biblioteca p/ funcao printf e putchar +#include //"" p/ funcao rand( ) - gerar numeros aleatorios (passos e distribuicaoo das armadilhas, tochas e o tesouro +#include //""p/ getch ( ) - ler as teclas digitadas pelo usuario, com proposito de faze-lo percorrer o mapa(matriz) +#include //""p/ complementacao da funcao srand(time(NULL)) +#include //""p/ funcao sleep(1) - esperar algum tempo e o programa voltar a executar as proximas linhas +void menu(char *user) +{ printf("\t\tBem-vindo ao caca ao tesouro!\n\na) --- Comecar a jogar\nb) --- Creditos\nc) --- Sair\nd) --- Ir a marte\n"); + *user=getch(); + switch(*user) + { case 'a': + case 'A': + { system("cls"); + printf("Processando sua resposta..."); + Sleep(0.5); + printf("\n\t\t\tEntao vamos comecar"); + Sleep(1); + system("cls"); + printf("Comecou\n"); + break; + } + case 'b': + case 'B': + { system("cls"); + printf("Processando sua resposta..."); + system("cls"); + printf("\n\n\nEste software foi desenvolvido por:\nWilliam Torres\n"); + printf("GitHub: github.com/williamtorres1\n"); + printf("Facebook: facebook.com/williamtorres.4\n"); + printf("Instagram: instagram.com/williamtoorres\n"); + Sleep(5); + break; + } + case 'c': + case 'C': + { printf("E triste ve-lo partir:/ \nAte mais...\n"); + Sleep(1.5); + system("cls"); + printf("Encerrando..."); + break; + } + case 'd': + case 'D': + { printf("Processando sua resposta..."); + Sleep(0.5); + printf("\nLamento, ainda nao e possivel\n"); + printf("Quem sabe em 2030?\n"); + break; + } + default: + { system("cls"); + printf("Processando sua resposta..."); + Sleep(0.5); + system("cls"); + printf("Estamos chateados com voce\n"); + printf("Digita um valor valido ai, mano\n"); + break; + } + } } -void messages(int situacao,int player) -{ - switch(situacao) +void sorteio_passos(int *passos)/**Funcao p/ sortear quantos passos serao realizados pelos jogadores*/ +{ do { - case 1: - { - printf("\t\t\tBem-vindo a caca ao Tesouro!\n\n\n"); + *passos=rand()%11; + }while(*passos > 10 || *passos < 3 );/**Valor sorteado deve estar entre 3 e 10, sendo a condicao verdadeira, o laco termina **/ +} +void messages(int situacao,int player)/**Funcao p/ Mostrar todas as mensagens aos jogadores. +Necessita de 2 parametros, a mensagem que sera mostrada e a qual jogador ela se refere */ +{ switch(situacao) + { case 1: + { printf("\t\t\tBem-vindo a caca ao Tesouro!\n\n\n"); break; } case 2: - { printf("Player %d encontrou uma tocha!",player); + { printf("\nPlayer I\t\t\t Player II\nHP:%d/5\t\t\t \t HP:%d/5\n\nPlayer %d encontrou uma armadilha!"/*,hp1,hp2*/,player); + printf("\nPlayer %d perdeu 1 Health Point\n",player); break; } case 3: - { printf("Player %d perdeu 1 Health Point",player); + { printf("Player %d encontrou uma tocha!",player); break; } case 4: { printf("Player %d encontrou o tesouro!",player); + system("cls"); + Sleep(1500); + printf("Player %d GANHOU!! PARABENSS",player); + Sleep(1000); + return; break; } case 5: - { printf("Player %d GANHOU!! PARABENSS",player); - break; - } + { printf("\nPlayer I\t\t\t Player II\nHP:5/5\t\t\t \t HP:5/5\n"); + break; + } } } void show_map(int mapa2[12][12]) -{ - system("cls"); +{ system("cls"); system("color b"); - mapa2[1][1]=5; - mapa2[1][10]=6; messages(1,0); + /** 0 --- PAREDE HORIZONTAL + 1 --- NADA + 2 --- ARMADILHAS + 3 --- TOCHAS + 4 --- TESOURO + 5 --- PLAYER 1 + 6 --- PLAYER 2 + 7 --- ESPACO VAZIO + 8 --- PAREDE VERTICAL + 9 --- POSICAO INICIAL + 10 --- PLAYER 1 E 2 JUNTOS + 21 --- ARMADILHA REVELADA + 22 --- ARMADILHA ENCONTRADA + 31 --- TOCHA REVELADA + 33 --- TOCHA ENCONTRADA + 41 --- TESOURO REVELADO + 44 --- TESOURO ENCONTRADO + **/ for(int i=0;i<12;i++) { for(int j=0;j<12;j++) { if(mapa2[i][j]==0) - printf("\t == "); - if(mapa2[i][j]==8) - printf("\t || "); + printf(" == "); if(mapa2[i][j]==1||mapa2[i][j]==2||mapa2[i][j]==3||mapa2[i][j]==4) printf(" -- "); + if(mapa2[i][j]==22) + { + printf("TRAP"); + // messages(2,1); + } + if(mapa2[i][j]==33) + { + printf("FIRE"); + { + if(mapa2[i+1][j]==1) + mapa2[i+1][j]=7; + else if(mapa2[i+1][j]==3) + mapa2[i+1][j]=33; + else if(mapa2[i+1][j]==2) + mapa2[i+1][j]=22; + else if(mapa2[i+1][j]==4) + mapa2[i+1][j]=44; + + + if(mapa2[i-1][j]==1) + mapa2[i-1][j]=7; + else if(mapa2[i-1][j]==2) + mapa2[i-1][j]=22; + else if(mapa2[i-1][j]==3) + mapa2[i-1][j]=33; + else if(mapa2[i-1][j]==4) + mapa2[i-1][j]=44; + + + if(mapa2[i][j+1]==1) + mapa2[i][j+1]=7; + else if(mapa2[i][j+1]==2) + mapa2[i][j+1]=22; + else if(mapa2[i][j+1]==3) + mapa2[i][j+1]=33; + else if(mapa2[i][j+1]==4) + mapa2[i][j+1]=44; + + if(mapa2[i][j-1]==1) + mapa2[i][j-1]=7; + else if(mapa2[i][j-1]==2) + mapa2[i][j-1]=22; + else if(mapa2[i][j-1]==3) + mapa2[i][j-1]=33; + else if(mapa2[i][j-1]==4) + mapa2[i][j-1]=44; + } + } + if(mapa2[i][j]==44) + { + printf("GOLD"); + //messages(4,1); + } if(mapa2[i][j]==5) - printf(" P1 "); + printf(" P1 "); if(mapa2[i][j]==6) - printf(" P2 "); + printf(" P2 "); if(mapa2[i][j]==7) - printf(" "); + printf(" "); + if(mapa2[i][j]==8) + printf(" || "); + if(mapa2[i][j]==9) + printf(" <> "); + if(mapa2[i][j]==10) + printf("P1P2"); } putchar('\n'); } } -void distribuicao(int mapa1[][12],int *m) +void distribuicao(int mapa1[][12])/**Funcao p/ distribuir as armadilhas, tochas e o ouro dentro do mapa +Foi criada uma funcao, para os elementos nao alterarem durante a execucao do programa */ { int trap=0,num_trap=0,where_trap=0;//trap = armadilhas, num_trap = numero de armadilhas //where_trap = chance de conter uma armadilha naquele elemento da matriz [i][j] int tochas=0,num_tocha=0,where_tocha=0;//mesma logica das armadilhas int ouro=0,where_ouro=0;//ouro = tesouro - //mesma lógica das armadilhas, mas podendo conter somente um ouro no mapa, e PRECISA TER UM tesouro + //mesma lógica das armadilhas, mas podendo conter somente um ouro no mapa, e PRECISA TER UM tesouro + mapa1[1][1]=9; + mapa1[1][10]=9; + mapa1[10][1]=9; + mapa1[10][10]=9; //ARMADILHAS do //laco para o numero de armadilhas nao passar de 32 - { - num_trap=rand()%32; + {num_trap=rand()%33; }while(num_trap>32); - printf(" \nTerao %d Armadilhas",num_trap); - //printf p/ poder contar no mapa se as armadilhas estao funcionando - for(trap=0;trap101); - //Quando sortear um valor entre 0 e 100, irá fazer a análise abaixo + //Quando sortear um valor entre 0 e 100, irá fazer a análise abaixo //Para uma trap ser colocada em um elemento da matriz, o numero sorteado precisa ser entre 0 e 25 - //O numero de traps colocadas não deve exceder o numero sorteado de traps - if(where_trap<=25 && trap 0 && trap < num_trap && mapa1[i][j] == 1) { - //Sendo tudo verdadeiro, colocaremos a tocha naquela posição e adicionaremos +1 na variavel trap - //ou seja, o loop não precisará ser realizado mais alguma vez + //Sendo tudo verdadeiro, colocaremos a tocha naquela posição e adicionaremos +1 na variavel trap + //ou seja, o loop não precisará ser realizado mais alguma vez mapa1[i][j]=2; trap++; } } + }while(trap5); - printf(" \nTerao %d Tochas\n\n",num_tocha); - //printf para conferirmos se as tochas foram colocadas corretamente(em numero e local) - + do //laco para distribuir as tochas, sem ultrapassar o numero sorteado { for(int i=2;i<10;i++) for(int j=1;j<11;j++) - { - do //laco para sortear a chance de cair uma tocha num elemento da matriz nao podendo exceder 100 - { - where_tocha=rand()%101; + {do //laco para sortear a chance de cair uma tocha num elemento da matriz nao podendo exceder 100 + {where_tocha=rand()%101; }while(where_tocha>101); - //Quando sortear um valor entre 0 e 100, irá fazer a análise abaixo - //Para uma tocha ser colocada em um elemento da matriz, o numero sorteado precisa ser entre 0 e 15 - //O numero tochas colocadas não deve exceder o numero sorteado de tochas - //E não pode colocar uma tocha se já colocarmos uma tocha antes naquele local - if(where_tocha<=15 && tochas 0 && tochas < num_tocha && mapa1[i][j] == 1) + { /**Sendo tudo verdadeiro, colocaremos a tocha naquela posição e adicionaremos +1 na variavel tochas + ou seja, o loop não precisará ser realizado mais alguma vez**/ mapa1[i][j]=3; tochas++; } @@ -137,77 +264,435 @@ void distribuicao(int mapa1[][12],int *m) //OURO do - { - for(int i=2;i<10;i++) + {for(int i=2;i<10;i++) for(int j=1;j<11;j++) { do - { - where_ouro=rand()%101; + {where_ouro=rand()%101; }while(where_ouro>101); - if(where_ouro<=2 && ouro<1 && mapa1[i][j]==1) - { - mapa1[i][j]=4; + if(where_ouro == 1 && ouro < 1 && mapa1[i][j] == 1) + { mapa1[i][j]=4; ouro++; } } }while(ouro<1); - m++; } -void movimentacao(int mapa1[][12]) -{ - char muv; // Essa variável irá receber os valores w,a,s,d para controlar os player - int x = 1, y = 1; // Essa variáveis são as coordenadas do player e seram de estrema importância para a movimentação. - while(1){ - muv=getch(); // Se lembra da variável que ia pegar w,a,s,d? pronto aqui é onde ela recebe o valor +void movimentacao1(int init_x,int init_y, int *x,int *y,int mapa1[][12])/** Funcao p/ movimentar o player 1 */ +{ //*x, *y Essa variaveis sao as coordenadas do player e serao de extrema importancia para a movimentacao. + char tecla1=0; // Essa variavel ira receber os valores w,a,s,d para controlar o player 1 + int passos=0,passos_andados=0;//Variavel passos_andados irá armazenar cada passo realizado pelo jogador até chegar no valor sorteado + //Variavel passos irá armazenar o valor sorteado, e servirá para o controle do laço de repeticao + sorteio_passos(&passos); + system("cls"); + mapa1[init_x][init_y]=9; + show_map(mapa1); + messages(7,1); + printf("Player 1: Eu posso dar %d passos\n",passos); + while(passos>passos_andados) + { + tecla1=getch(); + // Se lembra da variável que ia pegar w,a,s,d? pronto aqui é onde ela recebe o valor + /******Com o valor adquirido você terá 4 ifs diferentes 1 pra cada letra.******/ + /* Esse é o if para cima, se queremos que o Player suba devemos mexer no x diminuindo, + * pode parecer confuso, ou n, vc ter que diminuir para subir, mas vai fazer sentido + */ + if(tecla1 == 'w' || tecla1 == 'W' || tecla1 == 's' || tecla1 == 'S' || tecla1 == 'a' || tecla1 == 'A' || tecla1 == 'd' || tecla1 == 'D') + { if(tecla1 == 'w' || tecla1 == 'W') + { (*x)--; + if(mapa1[(*x)][(*y)]==0) + { (*x)++; + } + if(mapa1[(*x)][(*y)]==1) + { mapa1[*x][*y]=5; + mapa1[((*x)+1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==2) + { mapa1[*x][*y]=22; + mapa1[((*x)+1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==3) + { mapa1[*x][*y]=33; + mapa1[((*x)+1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==4) + { mapa1[*x][*y]=44; + mapa1[((*x)+1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==6) + { mapa1[*x][*y]=10; + mapa1[((*x)+1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==7) + { mapa1[*x][*y]=5; + mapa1[((*x)+1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==9) + { mapa1[*x][*y]=5; + mapa1[((*x)+1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==10) + { + mapa1[(*x)][(*y)]=5; + mapa1[((*x)+1)][(*y)]=6; + } + }// fim do if cima - /******Com o valor adquirido você terá 4 ifs diferentes 1 pra cada letra.******/ + /* Já esse é o if para descer, seguindo a mesma lógica do anterior porém agora + * aumentando o x + */ + if(tecla1 == 's' || tecla1 == 'S') + { (*x)++; + if(mapa1[(*x)][(*y)]==8) + {(*x)--; + } + if(mapa1[(*x)][(*y)]==1) + { mapa1[*x][*y]=5; + mapa1[((*x)-1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==2) + { mapa1[*x][*y]=22; + mapa1[((*x)-1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==3) + { mapa1[*x][*y]=33; + mapa1[((*x)-1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==4) + { mapa1[*x][*y]=44; + mapa1[((*x)-1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==6) + { mapa1[*x][*y]=10; + mapa1[((*x)-1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==7) + { mapa1[*x][*y]=5; + mapa1[((*x)-1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==9) + { mapa1[*x][*y]=5; + mapa1[((*x)-1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==10) + { + mapa1[(*x)][(*y)]=5; + mapa1[((*x)-1)][(*y)]=6; + } + }// fim do if baixo - /* Esse é o if para cima, se queremos que o Player suba devemos mexer no x diminuindo, - * pode parecer confuso, ou n, vc ter que diminuir para subir, mas vai fazer sentido + /* Esse é o if para ir para a esquerda como está + * se deslocando na horizontal mexe-se no y, diminuindo */ - if(muv == 'w') + if(tecla1 == 'a' || tecla1 == 'A') + { + (*y)--; + if(mapa1[(*x)][(*y)]==0) + { (*y)++; + } + if(mapa1[(*x)][(*y)]==1) + { mapa1[*x][*y]=5; + mapa1[((*x))][(*y)+1]=7; + } + if(mapa1[(*x)][(*y)]==2) + { mapa1[*x][*y]=22; + mapa1[((*x))][(*y)+1]=7; + } + if(mapa1[(*x)][(*y)]==3) + { mapa1[*x][*y]=33; + mapa1[((*x))][(*y)+1]=7; + } + if(mapa1[(*x)][(*y)]==4) + { mapa1[*x][*y]=44; + mapa1[((*x))][(*y)+1]=7; + } + if(mapa1[(*x)][(*y)]==6) + { mapa1[*x][*y]=10; + mapa1[((*x))][(*y)+1]=7; + } + if(mapa1[*x][*y]==7) + { mapa1[*x][*y]=5; + mapa1[*x][(*y)+1]=7; + } + if(mapa1[(*x)][(*y)]==9) + { mapa1[*x][*y]=5; + mapa1[((*x))][(*y)+1]=7; + } + if(mapa1[(*x)][(*y)]==10) + { + mapa1[(*x)][(*y)]=5; + mapa1[((*x))][(*y)+1]=6; + } + }// fim do if esquerda + + /* Esse é o último if, aponta para a direita, apenas mexemos no y aumentando-o */ + if(tecla1 == 'd' || tecla1 == 'D') + { + (*y)++; + if(mapa1[(*x)][(*y)]==0) + { (*y)--; + } + if(mapa1[(*x)][(*y)]==1) + { mapa1[*x][*y]=5; + mapa1[((*x))][(*y)-1]=7; + } + if(mapa1[(*x)][(*y)]==2) + { mapa1[*x][*y]=22; + mapa1[((*x))][(*y)-1]=7; + } + if(mapa1[(*x)][(*y)]==3) + { mapa1[*x][*y]=33; + mapa1[((*x))][(*y)-1]=7; + } + if(mapa1[(*x)][(*y)]==4) + { mapa1[*x][*y]=44; + mapa1[((*x))][(*y)-1]=7; + } + if(mapa1[(*x)][(*y)]==6) + { mapa1[*x][*y]=10; + mapa1[((*x))][(*y)-1]=7; + } + if(mapa1[(*x)][(*y)]==7) + { + mapa1[(*x)][(*y)]=5; + mapa1[(*x)][(*y)-1]=7; + } + if(mapa1[(*x)][(*y)]==9) + { mapa1[*x][*y]=5; + mapa1[((*x))][(*y)-1]=7; + } + if(mapa1[(*x)][(*y)]==10) + { + mapa1[(*x)][(*y)]=5; + mapa1[((*x))][(*y)-1]=6; + } + } + passos--; + mapa1[init_x][init_y] = 9;//Mostrar sempre a posicao inicial do jogador + show_map(mapa1);//Apos o jogador ter digitado algo, temos que imprimir a matriz novamente + messages(7,1); + printf("Player 1 tem mais %d passos...\n",passos);//Mostrar ao jogador quantos passos restantes ele tem + } + } +} +void movimentacao2(int init_x,int init_y, int *x,int *y,int mapa1[][12])/** Funcao p/ movimentar o player 2 */ +{ //*x, *y Essa variaveis sao as coordenadas do player e serao de extrema importancia para a movimentacao. + int tecla1=0; // Essa variavel ira receber os valores w,a,s,d para controlar o player 1 + int passos=0,passos_andados=0;//Variavel passos_andados irá armazenar cada passo realizado pelo jogador até chegar no valor sorteado + //Variavel passos irá armazenar o valor sorteado, e servirá para o controle do laço de repeticao + sorteio_passos(&passos); + system("cls"); + mapa1[init_x][init_y]=9; + show_map(mapa1); + messages(7,2); + printf("Player 2: Eu posso dar %d passos\n",passos); + while(passos>passos_andados) { - x--; - mapa1[x][y] = 5; - mapa1[x+1][y] = 7; - }// fim do if cima + tecla1=getch()-'0'; + // Se lembra da variável que ia pegar w,a,s,d? pronto aqui é onde ela recebe o valor + /******Com o valor adquirido você terá 4 ifs diferentes 1 pra cada letra.******/ + /* Esse é o if para cima, se queremos que o Player suba devemos mexer no x diminuindo, + * pode parecer confuso, ou n, vc ter que diminuir para subir, mas vai fazer sentido + */ + if(tecla1 == 8 || tecla1 == 4 || tecla1 == 5 || tecla1 == 6) + { if(tecla1 == 8) + { (*x)--; + if(mapa1[(*x)][(*y)]==0) + (*x)++; + if(mapa1[(*x)][(*y)]==1) + { mapa1[*x][*y]=6; + mapa1[((*x)+1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==2) + { mapa1[*x][*y]=22; + mapa1[((*x)+1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==3) + { mapa1[*x][*y]=33; + mapa1[((*x)+1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==4) + { mapa1[*x][*y]=44; + mapa1[((*x)+1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==5) + { mapa1[*x][*y]=10; + mapa1[((*x)+1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==7) + { mapa1[*x][*y]=6; + mapa1[((*x)+1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==9) + { mapa1[*x][*y]=6; + mapa1[((*x)+1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==10) + { + mapa1[(*x)][(*y)]=6; + mapa1[((*x)+1)][(*y)]=5; + } + }// fim do if cima - /* Já esse é o if para descer, seguindo a mesma lógica do anterior porém agora + /* Já esse é o if para descer, seguindo a mesma lógica do anterior porém agora * aumentando o x - */ - if(muv == 's') - { - x++; - mapa1[x][y] = 5; - mapa1[x-1][y] = 7; - }// fim do if baixo + */if(tecla1 == 4) + { if(mapa1[(*x)][(*y)]==10) + { mapa1[(*x)][(*y)]=6; + mapa1[((*x))][(*y)-1]=5; + } + (*y)--; + if(mapa1[(*x)][(*y)]==0) + { (*y)++; + passos++; + } + if(mapa1[(*x)][(*y)]==1) + { mapa1[*x][*y]=6; + mapa1[((*x))][(*y)+1]=7; + } + if(mapa1[(*x)][(*y)]==2) + { mapa1[*x][*y]=22; + mapa1[((*x))][(*y)+1]=7; + } + if(mapa1[(*x)][(*y)]==3) + { mapa1[*x][*y]=33; + mapa1[((*x))][(*y)+1]=7; + } + if(mapa1[(*x)][(*y)]==4) + { mapa1[*x][*y]=44; + mapa1[((*x))][(*y)+1]=7; + } + if(mapa1[(*x)][(*y)]==5) + { mapa1[*x][*y]=10; + mapa1[((*x))][(*y)+1]=7; + } + if(mapa1[*x][*y]==7) + { mapa1[*x][*y]=6; + mapa1[*x][(*y)+1]=7; + } + if(mapa1[(*x)][(*y)]==9) + { mapa1[*x][*y]=6; + mapa1[((*x))][(*y)+1]=7; + }/* + if(mapa1[(*x)][(*y)]==10) + { + mapa1[(*x)][(*y)]=6; + mapa1[((*x))][(*y)+1]=5; + }*/ + }// fim do if baixo - /* Esse é o if para ir para a esquerda como está + /* Esse é o if para ir para a esquerda como está * se deslocando na horizontal mexe-se no y, diminuindo */ - if(muv == 'a') - { - y--; - mapa1[x][y] = 5; - mapa1[x][y+1] = 7; - }// fim do if esquerda + if(tecla1 == 5) + { + (*x)++; + if(mapa1[(*x)][(*y)]==8) + {(*x)--; + } + if(mapa1[(*x)][(*y)]==1) + { mapa1[*x][*y]=6; + mapa1[((*x)-1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==2) + { mapa1[*x][*y]=22; + mapa1[((*x)-1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==3) + { mapa1[*x][*y]=33; + mapa1[((*x)-1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==4) + { mapa1[*x][*y]=44; + mapa1[((*x)-1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==5) + { mapa1[*x][*y]=10; + mapa1[((*x)-1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==7) + { mapa1[*x][*y]=6; + mapa1[((*x)-1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==9) + { mapa1[*x][*y]=6; + mapa1[((*x)-1)][(*y)]=7; + } + if(mapa1[(*x)][(*y)]==10) + { + mapa1[(*x)][(*y)]=6; + mapa1[((*x)-1)][(*y)]=5; + } + }// fim do if esquerda - /* Esse é o último if, aponta para a direita, apenas mexemos no y aumentando-o */ - if(muv == 'd') - { - y++; - mapa1[x][y] = 5; - mapa1[x][y-1] = 7; - } - show_map(mapa1); + /* Esse é o último if, aponta para a direita, apenas mexemos no y aumentando-o */ + if(tecla1 == 6) + { + (*y)++; + if(mapa1[(*x)][(*y)]==0) + { (*y)--; + } + if(mapa1[(*x)][(*y)]==10) + { + mapa1[(*x)][(*y)]=6; + mapa1[((*x))][(*y)-1]=5; + } + if(mapa1[(*x)][(*y)]==1) + { mapa1[*x][*y]=6; + mapa1[((*x))][(*y)-1]=7; + } + if(mapa1[(*x)][(*y)]==2) + { mapa1[*x][*y]=22; + mapa1[((*x))][(*y)-1]=7; + } + if(mapa1[(*x)][(*y)]==3) + { mapa1[*x][*y]=33; + mapa1[((*x))][(*y)-1]=7; + } + if(mapa1[(*x)][(*y)]==4) + { mapa1[*x][*y]=44; + mapa1[((*x))][(*y)-1]=7; + } + if(mapa1[(*x)][(*y)]==5) + { mapa1[*x][*y]=10; + mapa1[((*x))][(*y)-1]=7; + } + if(mapa1[(*x)][(*y)]==7) + { + mapa1[(*x)][(*y)]=6; + mapa1[(*x)][(*y)-1]=7; + } + if(mapa1[(*x)][(*y)]==9) + { mapa1[*x][*y]=6; + mapa1[((*x))][(*y)-1]=7; + } + /* if(mapa1[(*x)][(*y)]==10) + { + mapa1[(*x)][(*y)]=6; + mapa1[((*x))][(*y)-1]=5; + }*/ + } + passos--; + mapa1[init_x][init_y] = 9;//Mostrar sempre a posicao inicial do jogador + show_map(mapa1);//Apos o jogador ter digitado algo, temos que imprimir a matriz novamente + messages(7,1); + printf("Player 2 tem mais %d passos...\n",passos);//Mostrar ao jogador quantos passos restantes ele tem + } } } - +void escolha_player(int player) +{ + printf("Jogador %d, onde deseja começar a jogar?\n",player); + printf("|| == == == == == == == == == == ||\n|| 1 -- -- -- -- -- -- -- -- 2 ||\n"); + for(int i = 0 ; i < 8 ; i++) + printf("|| -- -- -- -- -- -- -- -- -- -- ||\n"); + printf("|| 3 -- -- -- -- -- -- -- -- 4 ||\n|| == == == == == == == == == == ||\n"); +} void map() { - int n=0; + int x=1,y=1,w=1,z=10; + int init_x = x, init_y = y, init_w = w, init_z = z; + int user1=0,user2=0; int mapa1[12][12]//numero de linhas e colunas da matriz { {8,0,0,0,0,0,0,0,0,0,0,8}, @@ -238,15 +723,76 @@ void map() [11][0] [11][1] [11][2] [11][3] [11][4] [11][5] [11][6] [11][7] [11][8] [11][9] [11][10] [11][11] */ }; - if(n<1) - distribuicao(mapa1,&n); - show_map(mapa1); - movimentacao(mapa1); + distribuicao(mapa1); + system("cls"); + escolha_player(1); + scanf("%d",&user1);//user1=getch() - '0'; + if(user1 == 1 || user1 == 2 || user1 == 3 || user1 == 4) + { if(user1==1) + { x=1; + y=1; + } + if(user1==2) + { x=1; + y=10; + } + if(user1==3) + { x=10; + y=1; + } + if(user1==4) + { x=10; + y=10; + } + } + else + { x=1; + y=1; + } + system("cls"); + escolha_player(2); + scanf("%d",&user2);//user2=getch() - '0'; + if(user2 == 1 || user2 == 2 || user2 == 3 || user2 == 4 || user2 != user1) + { if(user2==1) + { w=1; + z=1; + } + if(user2==2) + { w=1; + z=10; + } + if(user2==3) + { w=10; + z=1; + } + if(user2==4) + { w=10; + z=10; + } + if(user2 == user1) + { w=1; + z=10; + } + } + else + { w=1; + z=10; + } + init_x=x; init_y=y; init_w = w; init_z=z; + while(1) + { + show_map(mapa1); + movimentacao1(init_x,init_y,&x,&y,mapa1); + movimentacao2(init_w,init_z,&w,&z,mapa1); + } } int main() { - srand(time(NULL)); - int passos=0,player=0; - sorteio_passos(&passos); - map(); + //srand(time(NULL)); + char user=0; + menu(&user); + if(user == 'a' || user == 'A') + map(); + system("pause"); + return 1; } diff --git "a/c\303\263digo fonte/jogo do labirinto_v0.03.cpp" "b/c\303\263digo fonte/jogo do labirinto_v0.03.cpp" deleted file mode 100644 index 50467fd..0000000 --- "a/c\303\263digo fonte/jogo do labirinto_v0.03.cpp" +++ /dev/null @@ -1,577 +0,0 @@ -/**************************** -* File: Saturn Project * -* Author: William Torres * -*****************************/ -#include //Biblioteca p/ funcao printf e putchar -#include //"" p/ funcao rand( ) - gerar numeros aleatorios (passos e distribuicaoo das armadilhas, tochas e o tesouro -#include //""p/ getch ( ) - ler as teclas digitadas pelo usuario, com proposito de faze-lo percorrer o mapa(matriz) -#include //""p/ complementacao da funcao srand(time(NULL)) -#include //""p/ funcao sleep(1) - esperar algum tempo e o programa voltar a executar as proximas linhas -void menu(char *user) -{ - printf("\t\tBem-vindo ao caca ao tesouro!\n\n"); - printf("a) --- Comecar a jogar\nb) --- Creditos\n"); - printf("c) --- Sair\nd) --- Ir a marte\n"); - *user=getch(); - switch(*user) - { - case 'a': - case 'A': - { - system("cls"); - printf("Processando sua resposta..."); - Sleep(0.5); - printf("\n\t\t\tEntao vamos comecar"); - Sleep(1); - system("cls"); - printf("Comecou\n"); - break; - } - case 'b': - case 'B': - { system("cls"); - printf("Processando sua resposta..."); - system("cls"); - printf("\n\n\nEste software foi desenvolvido por:\nWilliam Torres\n"); - printf("GitHub: github.com/williamtorres1\n"); - printf("Facebook: facebook.com/williamtorres.4\n"); - printf("Instagram: instagram.com/williamtoorres\n"); - Sleep(5); - break; - } - case 'c': - case 'C': - { - printf("E triste ve-lo partir:/ \nAte mais...\n"); - Sleep(1.5); - system("cls"); - printf("Encerrando..."); - break; - } - case 'd': - case 'D': - { - printf("Processando sua resposta..."); - Sleep(0.5); - printf("\nLamento, ainda nao e possivel\n"); - printf("Quem sabe em 2030?\n"); - break; - } - default: - { - system("cls"); - printf("Processando sua resposta..."); - Sleep(0.5); - system("cls"); - printf("Estamos chateados com voce\n"); - printf("Digita um valor valido ai, mano\n"); - break; - } - } -} -void sorteio_passos(int *passos) -/**Funcao p/ sortear quantos passos serao realizados pelos jogadores*/ -{ - do - { - *passos=rand()%11; - }while(*passos > 10 || *passos < 3 ); - /**Valor sorteado deve estar entre 3 e 10, sendo a condicao verdadeira, o laco termina **/ -} -void messages(int situacao,int player) -/**Funcao p/ Mostrar todas as mensagens aos jogadores - Necessita de 2 parametros, a mensagem que sera mostrada e a qual jogador ela se refere */ -{ - switch(situacao) - { - case 1: - { - printf("\t\t\tBem-vindo a caca ao Tesouro!\n\n\n"); - break; - } - case 2: - { printf("\nPlayer %d encontrou uma armadilha!",player); - printf("\nPlayer %d perdeu 1 Health Point\n",player); - break; - } - case 3: - { printf("Player %d encontrou uma tocha!",player); - break; - } - case 4: - { printf("Player %d encontrou o tesouro!",player); - break; - } - case 5: - { printf("Player %d GANHOU!! PARABENSS",player); - break; - } - case 7: - { printf("\nPlayer I\tPlayer II\nHP:5/5\t\tHP:5/5\n"); - break; - } - } -} -void show_map(int mapa2[12][12]) -{ - system("cls"); - system("color b"); - messages(1,0); - /** 0 --- PAREDE HORIZONTAL - 1 --- NADA - 2 --- ARMADILHAS - 3 --- TOCHAS - 4 --- TESOURO - 5 --- PLAYER 1 - 6 --- PLAYER 2 - 7 --- ESPACO VAZIO - 8 --- PAREDE VERTICAL - 9 --- POSICAO INICIAL - 10 --- PLAYER 1 E 2 JUNTOS - 22 --- ARMADILHA ENCONTRADA - 33 --- TOCHA ENCONTRADA - 44 --- TESOURO ENCONTRADO - **/ - for(int i=0;i<12;i++) - { - for(int j=0;j<12;j++) - { - if(mapa2[i][j]==0) - printf(" == "); - if(mapa2[i][j]==1||mapa2[i][j]==2||mapa2[i][j]==3||mapa2[i][j]==4) - printf(" -- "); - if(mapa2[i][j]==22) - printf("TRAP"); - if(mapa2[i][j]==33) - printf("FIRE",mapa2[i][j]); - if(mapa2[i][j]==44) - printf("GOLD"); - if(mapa2[i][j]==5) - printf(" P1 "); - if(mapa2[i][j]==6) - printf(" P2 "); - if(mapa2[i][j]==7) - printf(" "); - if(mapa2[i][j]==8) - printf(" || "); - if(mapa2[i][j]==9) - printf(" <> "); - if(mapa2[i][j]==10) - printf("P1P2"); - } - putchar('\n'); - } -} -void distribuicao(int mapa1[][12]) -/**Funcao p/ distribuir as armadilhas, tochas e o ouro dentro do mapa - Foi criada uma funcao, para os elementos nao alterarem durante a execucao do programa */ -{ - int trap=0,num_trap=0,where_trap=0;//trap = armadilhas, num_trap = numero de armadilhas - //where_trap = chance de conter uma armadilha naquele elemento da matriz [i][j] - int tochas=0,num_tocha=0,where_tocha=0;//mesma logica das armadilhas - int ouro=0,where_ouro=0;//ouro = tesouro - //mesma lógica das armadilhas, mas podendo conter somente um ouro no mapa, e PRECISA TER UM tesouro - //ARMADILHAS - do //laco para o numero de armadilhas nao passar de 32 - { - num_trap=rand()%33; - }while(num_trap>32); - printf(" \nTerao %d Armadilhas",num_trap); - //printf p/ poder contar no mapa se as armadilhas estao funcionando - for(trap=0;trap101); - //Quando sortear um valor entre 0 e 100, irá fazer a análise abaixo - //Para uma trap ser colocada em um elemento da matriz, o numero sorteado precisa ser entre 0 e 25 - //O numero de traps colocadas não deve exceder o numero sorteado de traps - if(where_trap <= 25 && where_trap > 0 && trap < num_trap) - { - //Sendo tudo verdadeiro, colocaremos a tocha naquela posição e adicionaremos +1 na variavel trap - //ou seja, o loop não precisará ser realizado mais alguma vez - mapa1[i][j]=2; - trap++; - } - } - //TOCHAS - do //laco para o numero de tochas nao passar de 5 - { - num_tocha=rand()%5; - }while(num_tocha>5); - printf(" \nTerao %d Tochas\n\n",num_tocha); - //printf para conferirmos se as tochas foram colocadas corretamente(em numero e local) - - do //laco para distribuir as tochas, sem ultrapassar o numero sorteado - { - for(int i=2;i<10;i++) - for(int j=1;j<11;j++) - { - do //laco para sortear a chance de cair uma tocha num elemento da matriz nao podendo exceder 100 - { - where_tocha=rand()%101; - }while(where_tocha>101); - //Quando sortear um valor entre 0 e 100, irá fazer a análise abaixo - //Para uma tocha ser colocada em um elemento da matriz, o numero sorteado precisa ser entre 0 e 15 - //O numero tochas colocadas não deve exceder o numero sorteado de tochas - //E não pode colocar uma tocha se já colocarmos uma tocha antes naquele local - if(where_tocha <= 15 && where_tocha > 0 && tochas < num_tocha && mapa1[i][j] != 2) - { - //Sendo tudo verdadeiro, colocaremos a tocha naquela posição e adicionaremos +1 na variavel tochas - //ou seja, o loop não precisará ser realizado mais alguma vez - mapa1[i][j]=3; - tochas++; - } - } - /*Laco sera repetido ate que o numero de tochas sejam iguais ao numero sorteado */ - }while(tochas101); - if(where_ouro == 1 && ouro < 1 && mapa1[i][j] == 1) - { - mapa1[i][j]=4; - ouro++; - } - } - }while(ouro<1); - mapa1[1][1]=5;//Player 1 - mapa1[1][10]=6;//Player 2 -} - -void movimentacao1(int *x,int *y,int mapa1[][12]) -/** Funcao p/ movimentar o player 1 */ -{ - //*x, *y Essa variaveis sao as coordenadas do player e serao de extrema importancia para a movimentacao. - char tecla1=0; // Essa variavel ira receber os valores w,a,s,d para controlar o player 1 - int passos=0,passos_andados=0; - //Variavel passos_andados irá armazenar cada passo realizado pelo jogador até chegar no valor sorteado - - //Variavel passos irá armazenar o valor sorteado, e servirá para o controle do laço de repeticao - sorteio_passos(&passos); - system("cls"); - show_map(mapa1); - messages(7,1); - printf("Player 1: Eu posso dar %d passos\n",passos); - while(passos>passos_andados) - { - tecla1=getch(); - // Se lembra da variável que ia pegar w,a,s,d? pronto aqui é onde ela recebe o valor - /******Com o valor adquirido você terá 4 ifs diferentes 1 pra cada letra.******/ - /* Esse é o if para cima, se queremos que o Player suba devemos mexer no x diminuindo, - * pode parecer confuso, ou n, vc ter que diminuir para subir, mas vai fazer sentido - */ - if(tecla1 == 'w' || tecla1 == 'W' || tecla1 == 's' || tecla1 == 'S' || tecla1 == 'a' || tecla1 == 'A' || tecla1 == 'd' || tecla1 == 'D') - { - - if(tecla1 == 'w' || tecla1 == 'W') - { - (*x)--; - if(mapa1[(*x)][(*y)] == 6) - mapa1[(*x)][(*y)] = 10; - if(mapa1[(*x)][(*y)] == 2) - mapa1[(*x)][(*y)] = 22; - if(mapa1[(*x)][(*y)] == 3) - mapa1[(*x)][(*y)] = 33; - if(mapa1[(*x)][(*y)] == 4) - mapa1[(*x)][(*y)] = 44; - mapa1[((*x)+1)][(*y)] = 7; - }// fim do if cima - - /* Já esse é o if para descer, seguindo a mesma lógica do anterior porém agora - * aumentando o x - */ - if(tecla1 == 's' || tecla1 == 'S') - { - (*x)++; - if(mapa1[(*x)][(*y)] == 6) - mapa1[(*x)][(*y)] = 10; - if(mapa1[(*x)][(*y)] == 2) - mapa1[(*x)][(*y)] = 22; - if(mapa1[(*x)][(*y)] == 3) - mapa1[(*x)][(*y)] = 33; - if(mapa1[(*x)][(*y)] == 4) - mapa1[(*x)][(*y)] = 44; - mapa1[((*x)-1)][(*y)] = 7; - }// fim do if baixo - - /* Esse é o if para ir para a esquerda como está - * se deslocando na horizontal mexe-se no y, diminuindo - */ - if(tecla1 == 'a' || tecla1 == 'A') - { - (*y)--; - if(mapa1[(*x)][(*y)] == 6) - mapa1[(*x)][(*y)] = 10; - if(mapa1[(*x)][(*y)] == 2) - mapa1[(*x)][(*y)] = 22; - if(mapa1[(*x)][(*y)] == 3) - mapa1[(*x)][(*y)] = 33; - if(mapa1[(*x)][(*y)] == 4) - mapa1[(*x)][(*y)] = 44; - mapa1[(*x)][((*y)+1)] = 7; - }// fim do if esquerda - - /* Esse é o último if, aponta para a direita, apenas mexemos no y aumentando-o */ - if(tecla1 == 'd' || tecla1 == 'D') - { - (*y)++; - if(mapa1[(*x)][(*y)] == 6) - mapa1[(*x)][(*y)] = 10; - if(mapa1[(*x)][(*y)] == 2) - mapa1[(*x)][(*y)] = 22; - if(mapa1[(*x)][(*y)] == 3) - mapa1[(*x)][(*y)] = 33; - if(mapa1[(*x)][(*y)] == 4) - mapa1[(*x)][(*y)] = 44; - mapa1[(*x)][(*y-1)] = 7; - } - passos--; - } - mapa1[(*x)][(*y)] = 9;//Mostrar sempre a posicao inicial do jogador - show_map(mapa1);//Apos o jogador ter digitado algo, temos que imprimir a matriz novamente - messages(7,1); - printf("Player 1 tem mais %d passos...\n",passos);//Mostrar ao jogador quantos passos restantes ele tem - } -} -void movimentacao2(int *x,int *y,int mapa1[][12]) -/** Funcao p/ movimentar o player 1 */ -{ - int tecla1=0; // Essa variavel ira receber os valores 8,4,5,6 para controlar o player 2 -// *x = 1, *y = 10; Essas variaveis sao as coordenadas do player e serao de extrema importancia para a movimentacao. - int passos=0; - sorteio_passos(&passos); - messages(7,1); - printf("Player 2: Eu posso dar %d passos\n",passos); - int passos_andados=0; - while(passos>passos_andados) - { - tecla1=getch() - '0'; - if(tecla1 == 8 || tecla1 == 5 || tecla1 == 4 || tecla1 == 6) - { - if(tecla1 == 8) - { - (*x)--; - if(mapa1[(*x)][(*y)] == 5) - mapa1[(*x)][(*y)] = 10; - if(mapa1[(*x)][(*y)] == 2) - mapa1[(*x)][(*y)] = 22; - if(mapa1[(*x)][(*y)] == 3) - mapa1[(*x)][(*y)] = 33; - if(mapa1[(*x)][(*y)] == 4) - mapa1[(*x)][(*y)] = 44; - mapa1[((*x)+1)][(*y)] = 7; - }// fim do if cima - if(tecla1 == 5) - { - (*x)++; - if(mapa1[(*x)][(*y)] == 5) - mapa1[(*x)][(*y)] = 10; - if(mapa1[(*x)][(*y)] == 2) - mapa1[(*x)][(*y)] = 22; - if(mapa1[(*x)][(*y)] == 3) - mapa1[(*x)][(*y)] = 33; - if(mapa1[(*x)][(*y)] == 4) - mapa1[(*x)][(*y)] = 44; - mapa1[((*x)-1)][(*y)] = 7; - }// fim do if baixo - - if(tecla1 == 4) - { - (*y)--; - if(mapa1[(*x)][(*y)] == 5) - mapa1[(*x)][(*y)] = 10; - if(mapa1[(*x)][(*y)] == 2) - mapa1[(*x)][(*y)] = 22; - if(mapa1[(*x)][(*y)] == 3) - mapa1[(*x)][(*y)] = 33; - if(mapa1[(*x)][(*y)] == 4) - mapa1[(*x)][(*y)] = 44; - mapa1[(*x)][((*y)+1)] = 7; - }// fim do if esquerda - - if(tecla1 == 6) - { - (*y)++; - if(mapa1[(*x)][(*y)] == 5) - mapa1[(*x)][(*y)] = 10; - if(mapa1[(*x)][(*y)] == 2) - mapa1[(*x)][(*y)] = 22; - if(mapa1[(*x)][(*y)] == 3) - mapa1[(*x)][(*y)] = 33; - if(mapa1[(*x)][(*y)] == 4) - mapa1[(*x)][(*y)] = 44; - mapa1[(*x)][((*y)-1)] = 7; - } - passos--; - } - mapa1[(*x)][(*y)] = 9; - show_map(mapa1); - messages(7,1); - printf("Player 2 tem mais %d passos...\n",passos); - } - /** 0 --- PAREDE HORIZONTAL - 1 --- NADA - 2 --- ARMADILHAS - 3 --- TOCHAS - 4 --- TESOURO - 5 --- PLAYER 1 - 6 --- PLAYER 2 - 7 --- ESPACO VAZIO - 8 --- PAREDE VERTICAL - 9 --- POSICAO INICIAL - 10 --- PLAYER 1 E 2 JUNTOS - 22 --- ARMADILHA ENCONTRADA - 33 --- TOCHA ENCONTRADA - 44 --- TESOURO ENCONTRADO - **/ -} -void escolha_player(int player) -{ - printf("Jogador %d, onde deseja começar a jogar?\n",player); - printf("|| == == == == == == == == == == ||\n"); - printf("|| 1 -- -- -- -- -- -- -- -- 2 ||\n"); - printf("|| -- -- -- -- -- -- -- -- -- -- ||\n"); - printf("|| -- -- -- -- -- -- -- -- -- -- ||\n"); - printf("|| -- -- -- -- -- -- -- -- -- -- ||\n"); - printf("|| -- -- -- -- -- -- -- -- -- -- ||\n"); - printf("|| -- -- -- -- -- -- -- -- -- -- ||\n"); - printf("|| -- -- -- -- -- -- -- -- -- -- ||\n"); - printf("|| -- -- -- -- -- -- -- -- -- -- ||\n"); - printf("|| -- -- -- -- -- -- -- -- -- -- ||\n"); - printf("|| 3 -- -- -- -- -- -- -- -- 4 ||\n"); - printf("|| == == == == == == == == == == ||\n"); -} -void map() -{ - int x=1,y=1,w=1,z=10; - int user1=0,user2=0; - int mapa1[12][12]//numero de linhas e colunas da matriz - { - {8,0,0,0,0,0,0,0,0,0,0,8}, - {8,1,1,1,1,1,1,1,1,1,1,8}, - {8,1,1,1,1,1,1,1,1,1,1,8}, - {8,1,1,1,1,1,1,1,1,1,1,8}, - {8,1,1,1,1,1,1,1,1,1,1,8}, - {8,1,1,1,1,1,1,1,1,1,1,8}, - {8,1,1,1,1,1,1,1,1,1,1,8}, - {8,1,1,1,1,1,1,1,1,1,1,8}, - {8,1,1,1,1,1,1,1,1,1,1,8}, - {8,1,1,1,1,1,1,1,1,1,1,8}, - {8,1,1,1,1,1,1,1,1,1,1,8}, - {8,0,0,0,0,0,0,0,0,0,0,8}, - /* - [i][j] - [0][0] [0][1] [0][2] [0][3] [0][4] [0][5] [0][6] [0][7] [0][8] [0][9] [0][10] [0][11] - [1][0] [1][1] [1][2] [1][3] [1][4] [1][5] [1][6] [1][7] [1][8] [1][9] [1][10] [1][11] - [2][0] [2][1] [2][2] [2][3] [2][4] [2][5] [2][6] [2][7] [2][8] [2][9] [2][10] [2][11] - [3][0] [3][1] [3][2] [3][3] [3][4] [3][5] [3][6] [3][7] [3][8] [3][9] [3][10] [3][11] - [4][0] [4][1] [4][2] [4][3] [4][4] [4][5] [4][6] [4][7] [4][8] [4][9] [4][10] [4][11] - [5][0] [5][1] [5][2] [5][3] [5][4] [5][5] [5][6] [5][7] [5][8] [5][9] [5][10] [5][11] - [6][0] [6][1] [6][2] [6][3] [6][4] [6][5] [6][6] [6][7] [6][8] [6][9] [6][10] [6][11] - [7][0] [7][1] [7][2] [7][3] [7][4] [7][5] [7][6] [7][7] [7][8] [7][9] [7][10] [7][11] - [8][0] [8][1] [8][2] [8][3] [8][4] [8][5] [8][6] [8][7] [8][8] [8][9] [8][10] [8][11] - [9][0] [9][1] [9][2] [9][3] [9][4] [9][5] [9][6] [9][7] [9][8] [9][9] [9][10] [9][11] - [10][0] [10][1] [10][2] [10][3] [10][4] [10][5] [10][6] [10][7] [10][8] [10][9] [10][10] [10][11] - [11][0] [11][1] [11][2] [11][3] [11][4] [11][5] [11][6] [11][7] [11][8] [11][9] [11][10] [11][11] -*/ - }; - distribuicao(mapa1); - system("cls"); - escolha_player(1); - scanf("%d",&user1);//user1=getch() - '0'; - if(user1== 1 || user1 == 2 || user1 == 3 || user1 == 4) - { if(user1==1) - { x=1; - y=1; - } - if(user1==2) - { x=1; - y=10; - } - if(user1==3) - { x=10; - y=1; - } - if(user1==4) - { x=10; - y=10; - } - } - else - { x=1; - y=1; - } - system("cls"); - escolha_player(2); - scanf("%d",&user2);//user2=getch() - '0'; - if(user2== 1 || user2 == 2 || user2 == 3 || user2 == 4 || user2 != user1) - { if(user2==1) - { w=1; - z=1; - } - if(user2==2) - { w=1; - z=10; - } - if(user2==3) - { w=10; - z=1; - } - if(user2==4) - { w=10; - z=10; - } - if(user2 == user1) - { w=1; - z=10; - } - } - else - { w=1; - z=10; - } - while(1) - { - movimentacao1(&x,&y,mapa1); - movimentacao2(&w,&z,mapa1); - } -} -int main() -{ - //srand(time(NULL)); - char user=0; - menu(&user); - if(user == 'a' || user == 'A') - map(); - system("pause"); - return 1; -} -/* - [i][j] - || == == == == == == == == == == || - || <> -- -- -- -- -- -- -- -- <> || - || -- -- -- -- -- FIRE -- -- TRAP -- || - || -- FIRE [3][3] [3][4] [3][5] [3][6] [3][7] [3][8] [3][9] FIRE || - || -- [4][2] [4][3] [4][4] [4][5] [4][6] [4][7] TRAP -- -- || - || TRAP TRAP [5][3] [5][4] [5][5] [5][6] [5][7] [5][8] [5][9] [5][10] || - || [6][1] [6][2] [6][3] [6][4] [6][5] [6][6] [6][7] [6][8] [6][9] [6][10] || - || [7][1] [7][2] [7][3] [7][4] [7][5] [7][6] [7][7] [7][8] [7][9] -- || - || [8][1] [8][2] [8][3] [8][4] [8][5] [8][6] [8][7] [8][8] [8][9] -- || - || [9][1] [9][2] [9][3] [9][4] [9][5] [9][6] [9][7] [9][8] [9][9] -- || - || -- -- -- -- -- -- -- -- -- -- || - || == == == == == == == == == == || -*/ diff --git "a/c\303\263digo fonte/jogo do labirinto_v0.03.exe" "b/c\303\263digo fonte/jogo do labirinto_v0.03.exe" deleted file mode 100644 index 3749eb9093d3490ce376777de517be0f9dc561b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80433 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