Last active
May 24, 2016 04:23
-
-
Save RicardoLara/bd684ce73d261b4747f2 to your computer and use it in GitHub Desktop.
El guardabosques o algo así
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<bits/stdc++.h> | |
using namespace std; | |
struct casilla{ | |
int probabilidad; | |
bool gente; | |
int hp_gente; | |
}; | |
casilla mapa[20][21]; | |
/* | |
Probabilidades: | |
Bosque: 30 | |
Montaña: 60 | |
Lobo: 80 | |
Lago: 50 | |
Valle: 10 | |
*/ | |
void llenaMapa(){ | |
//Bosque: 30 | |
for(int i=0; i<20; i++){ | |
for(int j=0; j<21; j++){ | |
mapa[i][j].probabilidad = 30; | |
mapa[i][j].gente = false; | |
} | |
if(i%2) mapa[i][0].probabilidad = -1; | |
else mapa[i][20].probabilidad = -1; | |
} | |
} | |
void miPos(int x, int y){ | |
for(int i=0; i<20; i++) | |
for(int j=0; j<21; j++) | |
mapa[i][j].hp_gente = 0; | |
mapa[x][y].hp_gente = 1; | |
system("CLS"); | |
} | |
void imprimeMapa(){ | |
for(int i=0; i<20; i++){ | |
for(int j=0; j<21; j++) | |
//*printf("%d ",mapa[i][j].probabilidad); | |
if(mapa[i][j].hp_gente != 0) printf("H "); | |
else | |
switch(mapa[i][j].probabilidad){ | |
case -1: if(mapa[i][j].gente) printf("G "); else printf("9 "); break; | |
case 10: if(mapa[i][j].gente) printf("G "); else printf("V "); break; | |
case 30: if(mapa[i][j].gente) printf("G "); else printf("B ");break; | |
case 50: if(mapa[i][j].gente) printf("G "); else printf("* ");break; | |
case 60: if(mapa[i][j].gente) printf("G "); else printf("- ");break; | |
case 80: if(mapa[i][j].gente) printf("G "); else printf("W ");break; | |
} | |
printf("\n"); | |
} | |
} | |
void dibujaMapa(){ | |
//Montaña: 60 | |
for(int i=6; i<20; i++) mapa[0][i].probabilidad = 60; | |
for(int i=6; i<21; i++) mapa[1][i].probabilidad = 60; | |
for(int i=8; i<20; i++) mapa[2][i].probabilidad = 60; | |
for(int i=11; i<21; i++) mapa[3][i].probabilidad = 60; | |
for(int i=13; i<20; i++) mapa[4][i].probabilidad = 60; | |
for(int i=17; i<21; i++) mapa[5][i].probabilidad = 60; | |
for(int i=17; i<20; i++) mapa[6][i].probabilidad = 60; | |
//Lobo: 80 | |
for(int i=14; i<17; i++) mapa[5][i].probabilidad = 80; | |
for(int i=15; i<17; i++) mapa[6][i].probabilidad = 80; | |
//Lago: 50 | |
for(int i=3; i<11; i++) mapa[7][i].probabilidad = 50; | |
for(int i=0; i<12; i++) mapa[8][i].probabilidad = 50; | |
for(int i=1; i<12; i++) mapa[9][i].probabilidad = 50; | |
for(int i=5; i<12; i++) mapa[10][i].probabilidad = 50; | |
for(int i=5; i<12; i++) mapa[11][i].probabilidad = 50; | |
for(int i=7; i<11; i++) mapa[12][i].probabilidad = 50; | |
for(int i=8; i<10; i++) mapa[13][i].probabilidad = 50; | |
//Correccion del lago | |
mapa[7][5].probabilidad = 30; mapa[7][6].probabilidad = 30; | |
mapa[8][5].probabilidad = 30; mapa[9][3].probabilidad = 30; | |
//Valle: 10 | |
for(int k=15; k<20; k++) | |
for(int i = k%2; i<6; i++) | |
mapa[k][i].probabilidad = 10; | |
} | |
void simulaGente(){ | |
mapa[0][10].gente = true; | |
mapa[9][7].gente = true; | |
mapa[16][16].gente = true; | |
} | |
bool valida(int posX, int posY){ | |
if( posX < 0 || posX > 20 || posY < 0 || posY > 19) | |
return false; | |
if(mapa[posY][posX].probabilidad == -1) | |
return false; | |
if(mapa[posY][posX].gente){ | |
printf("No me puedo mover para alla, hay gente. Fckin nb :v\n"); | |
return false; | |
} | |
return true; | |
} | |
void movimiento(){ | |
//Empieza en la 17,3 | |
int myX = 19,myY = 1; | |
mapa[myY][myX].hp_gente = 1; | |
char movPrinc,movSec; | |
while(1){ | |
imprimeMapa(); | |
printf("Estoy en el Hexagono <%d,%d>\nHora de moverse papu: ",myY,myX); | |
scanf(" %c%c",&movPrinc,&movSec); | |
if(movPrinc == 'w'){ | |
if(movSec == 'd'){ | |
if(myY%2 && valida(myX,myY-1)) { myY--; miPos(myY,myX); } | |
else if(myY%2 == 0 && valida(myX+1,myY-1)){ myX++; myY--; miPos(myY,myX); } | |
else printf("Este es el Bastion, te vas a caer paps. Eso o hay malos.\n"); | |
} | |
else if(movSec == 'a'){ | |
if(myY%2 && valida(myX-1,myY-1)){ myX--; myY--; miPos(myY,myX); } | |
else if(myY%2 == 0 && valida(myX,myY-1)) { myY--; miPos(myY,myX); } | |
else printf("Este es el Bastion, te vas a caer paps. Eso o hay malos.\n"); | |
} | |
else printf("Movimiento invalido, como Steve :v \n"); | |
} | |
else if(movPrinc == 's'){ | |
if(movSec == 'd'){ | |
if(myY%2 && valida(myX,myY+1)) { myY++; miPos(myY,myX); } | |
else if(myY%2 == 0 && valida(myX+1,myY+1)){ myX++; myY++; miPos(myY,myX); } | |
else printf("Este es el Bastion, te vas a caer paps. Eso o hay malos.\n"); | |
} | |
else if(movSec == 'a'){ | |
if(myY%2 && valida(myX-1,myY+1)){ myX--; myY++; miPos(myY,myX); } | |
else if(myY%2 == 0 && valida(myX,myY+1)) { myY++; miPos(myY,myX); } | |
else printf("Este es el Bastion, te vas a caer paps. Eso o hay malos.\n"); | |
} | |
else printf("Movimiento invalido, como Steve :v \n"); | |
} | |
else if(movPrinc == 'a'){ | |
if(valida(myX-1,myY)) { myX--; miPos(myY,myX); } | |
else printf("Este es el Bastion, te vas a caer paps. Eso o hay malos.\n"); | |
} | |
else if(movPrinc == 'd') | |
if(valida(myX+1,myY)) { myX++; miPos(myY,myX); } | |
else printf("Este es el Bastion, te vas a caer paps. Eso o hay malos.\n"); | |
else printf("Movimiento invalido, como Steve :v \n"); | |
} | |
} | |
int main(){ | |
llenaMapa(); | |
dibujaMapa(); | |
simulaGente(); | |
movimiento(); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment