Skip to content

Instantly share code, notes, and snippets.

@RicardoLara
Last active May 24, 2016 04:23
Show Gist options
  • Save RicardoLara/bd684ce73d261b4747f2 to your computer and use it in GitHub Desktop.
Save RicardoLara/bd684ce73d261b4747f2 to your computer and use it in GitHub Desktop.
El guardabosques o algo así
#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