Advertisement
alvaro_93

Trabajo full version

Jun 22nd, 2015
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 20.13 KB | None | 0 0
  1. /*
  2.  * File:   main.c
  3.  * Author: owner
  4.  *
  5.  * Created on 12 de junio de 2015, 12:52 AM
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include<conio.h>
  11. #include <windows.h>  
  12. #include "juego.h"
  13.  
  14. #define N 38
  15. #define E 20
  16. #define Factor 2//factor para calcular la cantidad de enemigos
  17. #define MAX 30
  18.  
  19.  
  20. /*
  21.   *                  PROCEDIMIENTOS DE ALVARO
  22. Estos procedimientos fueron creados por Alvaro, asi que no es perra de nadie
  23. */
  24.  
  25.  
  26. void cargarMonstruosGen(TObject arrMonst [MAX]){
  27.    
  28.     FILE* archivo;
  29.    
  30.     char name[30];//le asigno una capacidad maxima a name
  31.     int health,atack,defense,speed,i;
  32.     i=0;//inicializo contador
  33.    
  34.     archivo=fopen("monstruos.txt","r");//abro el archivo que usare
  35.     if (archivo!=NULL)
  36.         while (fscanf(archivo, "%s %d %d %d %d", name, &health,&atack,&defense,&speed) == 5){   //leo cada registro
  37.             crearMonstruo(&arrMonst[i], name,health,atack, defense, speed);                      // uso el procedimiento creado por Neil
  38.             //notese que envio el elemtno objeto del arreglo con ampersan para que el procedimiento
  39.             //reciba un puntero a tipo objeto
  40.             i++;//incremento el contador para seguir recorriendo el arreglo
  41.                  
  42.         }    
  43.            
  44.    
  45.    
  46. }
  47.  
  48. void cargarPocionesGen(TObject arrPociones[MAX]){
  49.     FILE* archivo;
  50.    
  51.     char name[30];//le asigno una capacidad maxima a name
  52.     int peso,consumible,i;
  53.     i=0;//inicializo contador
  54.    
  55.     archivo=fopen("pociones.txt","r");//abro el archivo que usare
  56.     if (archivo!=NULL)
  57.         while (fscanf(archivo, "%s %d %d", name, &peso,&consumible) == 3){//leo cada registro
  58.             crearConsumible(&arrPociones[i],name,peso,consumible);// uso el procedimiento creado por Neil
  59.             //notese que envio el elemtno objeto del arreglo con ampersan para que el procedimiento
  60.             //reciba un puntero a tipo objeto
  61.             i++;//incremento el contador para seguir recorriendo el arreglo
  62.                  
  63.         }    
  64. }
  65.  
  66. void cargarArmasGen(TObject arrArmas[MAX]){
  67.    
  68.     FILE* archivo;
  69.    
  70.     char name[30];          //le asigno una capacidad maxima a name
  71.     int peso,atack,defense,speed,i;
  72.     i=0;//inicializo contador
  73.    
  74.     archivo=fopen("armas.txt","r");//abro el archivo que usare
  75.     if (archivo!=NULL)
  76.         while (fscanf(archivo, "%s %d %d %d %d", name, &peso,&atack,&defense,&speed) == 5){//leo cada registro
  77.             crearArma(&arrArmas[i],name,peso,atack,defense,speed);
  78. /*
  79.             uso el procedimiento creado por Neil
  80.             notese que envio el elemetno objeto del arreglo con ampersan para que el procedimiento
  81.             reciba un puntero a tipo objeto
  82. */
  83.             i++;//incremento el contador para seguir recorriendo el arreglo
  84.                  
  85.         }        
  86. }    
  87. /////////////////////////////FIN DE PROCEDIMIENTOS DE ALVARO/////////////////////////////////
  88.  
  89.  
  90.  void gotoxy(int x,int y){  
  91.       HANDLE hcon;  
  92.       hcon = GetStdHandle(STD_OUTPUT_HANDLE);  
  93.       COORD dwPos;  
  94.       dwPos.X = x;  
  95.       dwPos.Y= y;  
  96.       SetConsoleCursorPosition(hcon,dwPos);  
  97.  }
  98.  
  99.  void actualizarItem(TObject *hero){  //actualiza todos los items (armas) que el heroe tiene equipado
  100.   TNodo *ptrnodo;                      //degrada las armas para que se vuelvan inservibles
  101.      ptrnodo = hero->hero->cinturon->head; //apunta al primer nodo del cinturon
  102.      int i;
  103.      for(i = 1;i <= hero->hero->cinturon->max; i++){
  104.          if(ptrnodo->elemento != NULL && ptrnodo->elemento->id == 1){   //solo cuando es un arma y el elemnto no es null
  105.              if(ptrnodo->elemento->arma->atack > 0){
  106.                  ptrnodo->elemento->arma->atack = ptrnodo->elemento->arma->atack -3;
  107.              } else ptrnodo->elemento->arma->atack = 0;
  108.              if(ptrnodo->elemento->arma->defense > 0){
  109.                  ptrnodo->elemento->arma->defense = ptrnodo->elemento->arma->defense -3;
  110.              } else ptrnodo->elemento->arma->defense = 0;
  111.              if(ptrnodo->elemento->arma->speed > 0){
  112.                  ptrnodo->elemento->arma->speed = ptrnodo->elemento->arma->speed -3;
  113.              } else ptrnodo->elemento->arma->speed = 0;          
  114.             ptrnodo = ptrnodo->sig; //avanza al siguiente nodo
  115.          }else ptrnodo = ptrnodo->sig;
  116.          
  117.      }  
  118.  }
  119.  
  120.  void actualizarHeroe(TObject *hero){ //segun lo que lleve el heroe se actualiza los stats del heroe
  121.      TNodo *ptrnodo;
  122.      ptrnodo = hero->hero->cinturon->head; //apunta al primer nodo del cinturon
  123.      int i;
  124.      for(i = 1;i <= hero->hero->cinturon->max; i++){
  125.          if(ptrnodo->elemento != NULL && ptrnodo->elemento->id == 1){   //solo cuando es un arma y el elemnto no es null
  126.             hero->hero->atack = hero->hero->atack + ptrnodo->elemento->arma->atack;
  127.             hero->hero->defense = hero->hero->defense + ptrnodo->elemento->arma->defense;
  128.             hero->hero->speed = hero->hero->speed + ptrnodo->elemento->arma->speed;
  129.             ptrnodo = ptrnodo->sig; //avanza al siguiente nodo
  130.          } else ptrnodo = ptrnodo->sig;
  131.      }
  132.  }
  133.  
  134.  
  135.  void refrescarHeroe(TObject *hero){ //se actulaiza el heroe a su condicion original sin items
  136.      TNodo *ptrnodo;
  137.      ptrnodo = hero->hero->cinturon->head; //apunta al primer nodo del cinturon
  138.      int i;
  139.      for(i = 1;i <= hero->hero->cinturon->max; i++){
  140.          if(ptrnodo->elemento != NULL && ptrnodo->elemento->id == 1){   //solo cuando es un arma y el elemnto no es null
  141.             hero->hero->atack = hero->hero->atack - ptrnodo->elemento->arma->atack;
  142.             hero->hero->defense = hero->hero->defense - ptrnodo->elemento->arma->defense;
  143.             hero->hero->speed = hero->hero->speed - ptrnodo->elemento->arma->speed;
  144.             ptrnodo = ptrnodo->sig; //avanza al siguiente nodo
  145.          } else ptrnodo = ptrnodo->sig;
  146.      }
  147.  } //hace lo contrario a actualizarHeroe
  148.  
  149.  void usarPocion (TObject *hero, TItem *pocion){ //usa la pocion y destruye el item, recibe un item sacado con desapilar item o quitarcinturon
  150.     if (pocion->id == 2){  //verifica si de verdad es una pocion
  151.         hero->hero->health = hero->hero->health + pocion->consumible->consumible;
  152.         if(hero->hero->health > hero->hero->healthMax) hero->hero->health = hero->hero->healthMax;
  153.         TObject *poc = malloc(sizeof(TObject));
  154.         poc->item = pocion;
  155.         eliminarItem(poc); //esto fue estupidamente redundante
  156.         free(poc);
  157.     }  
  158.  }
  159.  
  160.  
  161. void moverHeroe(int i,int j){//estos deben ser pasado como punteros a enteros
  162.    
  163.    
  164.     //cambio de movimiento
  165.         //cabeza
  166.         gotoxy(i,j);
  167.         printf("%c",254);
  168.         //brazos
  169.         gotoxy(i-1,j+1);
  170.         printf("%c",200);
  171.         gotoxy(i,j+1);
  172.         printf("%c",177);
  173.         gotoxy(i+1,j+1);
  174.         printf("%c",188);
  175.         //piernas
  176.         gotoxy(i,j+2);
  177.         printf("%c",186);
  178.        
  179.     //elimianr el anterior
  180.         i=i-4;
  181.        
  182.         //cabeza
  183.         gotoxy(i,j);
  184.         printf(" ");
  185.         //brazos
  186.         gotoxy(i-1,j+1);
  187.         printf(" ");
  188.         gotoxy(i,j+1);
  189.         printf(" ");
  190.         gotoxy(i+1,j+1);
  191.         printf(" ");
  192.         //piernas
  193.         gotoxy(i,j+2);
  194.         printf(" ");
  195.    
  196. }
  197.  void pintar(char nombre[],int nivel,int *animacion){
  198.      int i;
  199.      gotoxy(0,0);
  200.      printf("                                 JUEGO DE AVENTURA \n");
  201.      printf("Nombre del Jugador: %s",nombre);                        
  202.      printf("                                   Nivel :%d\n",nivel);
  203.          
  204.      //Lineas horizontales
  205.      for (i=2;i<78;i++){
  206.          gotoxy(i,3);
  207.          printf("%c",205);
  208.          gotoxy(i,23);
  209.          printf("%c",205);
  210.      }
  211.      //Lineas Verticales
  212.      for (i=4;i<23;i++){
  213.          gotoxy(2,i);
  214.          printf("%c",186);
  215.          gotoxy(77,i);
  216.          printf("%c",186);
  217.      }
  218.      
  219.      //Esquinas
  220.      gotoxy(2,3); printf("%c",201);
  221.      gotoxy(2,23); printf("%c",200);
  222.      gotoxy(77,3); printf("%c",187);
  223.      gotoxy(77,23); printf("%c",188);
  224.      
  225.      
  226.      //Pasto
  227.      for (i=3;i<77;i++){
  228.          gotoxy(i,21);
  229.          printf("%c",176);
  230.          gotoxy(i,22);
  231.          printf("%c",177);
  232.      }
  233.      
  234.      //Nubes
  235.      int n; i=7;
  236.      for (n=20;n<26;n++){
  237.              gotoxy(n,i);
  238.              printf("%c",64);
  239.              gotoxy(n,i+1);
  240.              printf("%c",64);
  241.              gotoxy(n,i+2);
  242.              printf("%c",64);
  243.                        
  244.       }
  245.      
  246.      for (n=20+20;n<26+20;n++){
  247.              gotoxy(n,i);
  248.              printf("%c",64);
  249.              gotoxy(n,i+1);
  250.              printf("%c",64);
  251.              gotoxy(n,i+2);
  252.              printf("%c",64);
  253.                        
  254.       }
  255.      //arbol
  256.      int k,a;
  257.      if (*animacion==0){
  258.      
  259.      
  260.         for (k=60;k<67;k++){
  261.          gotoxy(k,15);
  262.          printf("%c",177);
  263.          gotoxy(k,16);
  264.          printf("%c",177);
  265.          gotoxy(k,17);
  266.          printf("%c",177);
  267.          if (k==62 || k==63 || k==64){
  268.              gotoxy(k,18);
  269.              printf("%c",186);
  270.              gotoxy(k,19);
  271.              printf("%c",186);
  272.              gotoxy(k,20);
  273.              printf("%c",186);
  274.          }
  275.          
  276.         }
  277.      }else if ((*animacion)<3){
  278.          srand(time(NULL));//randomize
  279.          int arbol=176,tronco=179;
  280.          for(a=0;a<=(*animacion);a++){
  281.             for (k=60-a*10;k<67-a*10;k++){
  282.                 gotoxy(k,15);
  283.                 printf("%c",arbol);//178,177,176
  284.                 gotoxy(k,16);
  285.                 printf("%c",arbol);
  286.                 gotoxy(k,17);
  287.                 printf("%c",arbol);
  288.                 if (k==(62-a*10) || k==(63-a*10) || k==(64-a*10)){
  289.                 gotoxy(k,18);
  290.                 printf("%c",tronco);//186,240,169,179
  291.                 gotoxy(k,19);
  292.                 printf("%c",tronco);
  293.                 gotoxy(k,20);
  294.                 printf("%c",tronco);
  295.                 }
  296.                
  297.             }
  298.             int t[4]={240,169,179,186};
  299.             int r=rand() % 4;
  300.             tronco=t[r];
  301.             if (arbol==178 ) arbol=176;
  302.                 else arbol++;
  303.         }  
  304.          /*if (*animacion!=0)
  305.            (*animacion)=0;*/
  306.      } else if ((*animacion)>=3 && (*animacion)<5 ){
  307.          int t=16,p,b=30,g;
  308.            //cueva
  309.          for (g=0;g<2;g++){
  310.             int cont=1;
  311.             gotoxy(b,t);
  312.             printf("%c",176);
  313.             for (p=t;p<22;p++){
  314.                 gotoxy(b-cont,p);
  315.                 printf("%c",176);
  316.                 gotoxy(b+cont,p);
  317.                 printf("%c",176);
  318.                 cont++;
  319.             }
  320.             b=b+40;
  321.          }
  322.          //arbol
  323.          for (k=50;k<57;k++){
  324.          gotoxy(k,15);
  325.          printf("%c",177);
  326.          gotoxy(k,16);
  327.          printf("%c",177);
  328.          gotoxy(k,17);
  329.          printf("%c",177);
  330.          if (k==52 || k==53 || k==54){
  331.              gotoxy(k,18);
  332.              printf("%c",186);
  333.              gotoxy(k,19);
  334.              printf("%c",186);
  335.              gotoxy(k,20);
  336.              printf("%c",186);
  337.          }
  338.          
  339.      }
  340.          
  341.      }
  342.      else if (*animacion==5){
  343.          (*animacion)=0;
  344.             //aves
  345.                 //203,40,41
  346.          gotoxy (60,6);
  347.          printf("%c",157);
  348.          gotoxy(54,10);
  349.          printf("%c",157);
  350.          gotoxy(68,8);
  351.          printf("%c",157);
  352.          gotoxy(60,15);
  353.          printf("%c",157);
  354.          gotoxy(60,12);
  355.          printf("%c",157);
  356.          gotoxy(55,14);
  357.          printf("%c",157);
  358.          gotoxy(65,13);
  359.          printf("%c",157);
  360.          
  361.      }
  362. }
  363.  
  364. void eliminarMapa(TObject mapa[E]){
  365.      int i;
  366.      for (i=0;i<E;i++){
  367.          free(mapa[i].hero);
  368.          free(mapa[i].item);
  369.          free(mapa[i].monstruo);
  370.      }
  371.  }
  372.  
  373.  
  374.  
  375.  
  376.  ///colocarObjeto soporta cualquier arreglo por lo que se tiene que colocar bien los arreglos correspondiente al objeto
  377.  
  378.  int colocarObjeto(TObject *objeto,int nivel,TObject arr[]){ /// desde el arreglo cargado desde
  379.      //los archivos se seleccinan aleatoriamente dependiendo el nivel
  380.      int lmtInf, lmtSup ;
  381.      int random;
  382.      if(objeto->id != 0) return 0; //esta lleno el espacio y no se puede agregar nada
  383.      
  384.      lmtInf = (nivel-2)*3;  
  385.      if (lmtInf < 0) {
  386.          lmtInf = 0;
  387.          lmtSup = 2;
  388.      } else  lmtSup = lmtInf + 5;  /// se selecciona en nivel 1 del 0 al 3, nivel 2 del 0 a 5
  389.       // nivel 3 del 3 al 8 , nivel 4 del 6 a 11 , nivel 5 del 9 a 14
  390.      
  391.      random = lmtInf + (rand() % (lmtSup - lmtInf));
  392.      
  393.      objeto = arr[random];
  394.      return 1;
  395.      
  396.  }
  397.  
  398.  void crearMapasAleatorios(TObject mapaxnivel[E],int nivel,char heroe[],TObject* Hero ){
  399.     srand(time(NULL));//randomize
  400.     int e,p,o,pos;//enemigos y posiciones
  401.     TObject *mapa[E] = malloc((E+1)*sizeof(TObject));//E cantidad de espacios en el mapa, creando un mapa con punteros a objetos en cada posicion
  402.    
  403.      int i;
  404.      for(i=0;i<E;i++){
  405.          if (i==0) {
  406.              crearHeroe(Hero,heroe);//El heroe debe estar en el primer bloque //correguir
  407.              mapa[i]= Hero;
  408.          }else {
  409.          mapa[i]->id=0; //cada parte del mapa lo inicializamos como vacio
  410.          mapa[i]->hero=NULL;
  411.          mapa[i]->item=NULL;
  412.          mapa[i]->monstruo=NULL;
  413.          }        
  414.      }
  415.      
  416.      /// soporta solo hasta 5 niveles
  417.      //Cantidad de enemigos
  418.      e=(rand() % 2*Factor) + 2*nivel; // aumentar ratio de aparcion
  419.      
  420.      //Posiones
  421.      p =  (10 - nivel) + (rand() % Factor) ;  //disminuye el ratio de aparicion ,
  422.      //colocar enemigos
  423.      // cantidad de armas
  424.      o = (10 - nivel) - (rand() % 2*Factor);
  425.      
  426.                 ////////////////////////////////
  427.      TObject arrMonst[MAX];
  428.      cargarMonstruosGen(arrMonst);
  429.      
  430.      
  431.      int j=0; int verif;
  432.      while (j<e){//aqui coloco a los mounstruos en el mapa
  433.         pos= (rand() % (E-2) ) + 2 ;
  434.        
  435.        
  436.         verif = colocarObjeto(mapa[pos],nivel,arrMonst); // si existe lo carga a mapa[pos]]
  437.        
  438.         if(verif==1)j++; //si verif 0 entonces no se coloco satisfactoriamente y se vuelve a ha
  439.                     // invocar el mismo bucle
  440.      }
  441.      
  442.      j=0;
  443.      //colocar posiones
  444.      
  445.      TObject arrPociones[MAX];//Anderson puso esto porque me salia error
  446.      cargarPocionesGen(arrPociones);
  447.      while (j<p){// coloco las pociones en el mapa
  448.         pos= (rand() % (E-2) ) + 2 ;
  449.         verif = colocarObjeto(mapa[pos],nivel,arrPociones);//sacar del archivo
  450.         if(verif==1)j++;
  451.      }
  452.      // agregamos items
  453.      TObject arrArmas[MAX];//Anderson puso esto porque me salia error
  454.      cargarArmasGen(arrArmas);
  455.      while (j<o){//coloca las armas en el mapa
  456.         pos= (rand() % (E-2) ) + 2 ;
  457.         verif = colocarObjeto(mapa[pos],nivel,arrArmas);//sacar del archivo
  458.         if(verif==1)j++;
  459.      }
  460.      
  461.      
  462.      //generamos el mapa
  463.      i=0;
  464.      for (i=0;i<E;i++){
  465.          mapaxnivel[i].id = mapa[i]->id;
  466.          mapaxnivel[i].hero = mapa[i]->hero;
  467.          mapaxnivel[i].item = mapa[i]->item;
  468.          mapaxnivel[i].monstruo = mapa[i]->monstruo;
  469.      }
  470.  }
  471.  
  472. void iniciarBatalla(THero* hero,TMonst* mons ){
  473.     int turno;
  474.     //graficamos los dibujitos del heroe y el moustruo
  475.     // graficaCabecera(hero,mons);//grafica la vida de los contrincates y sus demas skills
  476.     if (hero->speed > mons->speed)
  477.         turno=0;//pares para que ataque heroe
  478.     else
  479.         turno=1;//impares para que ataque monstruo
  480.    
  481.     while(hero->health > 0 && mons->health>0 ){
  482.         if (turno % 2==0){
  483.            
  484.            
  485.            
  486.         }
  487.         else{
  488.            
  489.         };
  490.         turno++;
  491.        
  492.        
  493.     }
  494.    
  495.    
  496. }
  497. int main(int argc, char** argv) {
  498.    
  499.    TObject mapa[E];// es un arreglo de estructuras tipo objetos con maximo E
  500.     int r;
  501.     for (r=0;r<E;r++){//aca empieza a reservar espacio para los apuntadores de cada elemento del arreglo ya que pueden ir cualquiera de los 3
  502.         mapa[r].hero=malloc(sizeof(THero));
  503.         mapa[r].item=malloc(sizeof(TItem));
  504.         mapa[r].monstruo=malloc(sizeof(TMonst));
  505.     }
  506.     TObject *Hero = malloc(sizeof(TObject));
  507.     char C;
  508.     char nombre[N];
  509.     int i=4,j=18,nivel=1;//comenzamos en el nivel 1
  510.     int animacion=0;//Le da animacion al campo
  511.     printf("Ingrese el nombre del jugador :");
  512.     gets(nombre);//obtenemos el nombre
  513.     system("cls");
  514.     //pintar(nombre,nivel);
  515.     gotoxy(i,j);
  516.     moverHeroe(i,j);
  517.     int estadoJuego=1;//1 vivo 0 muerto
  518.     int mov=0;//movimiento del arreglo a medida que el jugador se mueve
  519.     crearMapasAleatorios(mapa,nivel,nombre,Hero);//iniciamos el juego
  520.     pintar(nombre,nivel,&animacion);
  521.     while (estadoJuego){
  522.         //pintar(nombre,nivel,&animacion); //se nota un poco la impresion pero no debria notarse
  523.         C = getch();
  524.         //system("cls");
  525.         if (C==77){//DERECHA
  526.             mov++;
  527.             i=i+4;//para moverse mas
  528.            
  529.             if (i<76){
  530.             gotoxy(i,j);
  531.             moverHeroe(i,j);
  532.             }else {
  533.             animacion++;    
  534.             gotoxy(4,j);
  535.             moverHeroe(4,j);
  536.             i=4;
  537.            
  538.             /*gotoxy(75,j);
  539.             moverHeroe(75,j);
  540.             i=75;*/
  541.             }
  542.           if (mov != E){  
  543.             if (mapa[mov].id==0){//vaci0
  544.                 estadoJuego=1;//no hace nada
  545.             }else if (mapa[mov].id==2){//Enemigo
  546.                 //Manda mensaje a la pantalla auxiliar que empezara el dududuelo,se usa gotoxy
  547.                
  548.                 iniciarBatalla(Hero,mapa[mov].monstruo);
  549.                
  550.             }else if (mapa[mov].id==3){//Consumible o Arma
  551.                 //elige entre tres opciones para cargar en la mochila, en la correa o no hacer nada
  552.                
  553.             }
  554.             if (estadoJuego){//Si continua y todavia no pierde
  555.             mapa[mov].id=mapa[mov-1].id;//Nos movemos
  556.             mapa[mov].hero=mapa[mov-1].hero;
  557.             mapa[mov].item=mapa[mov-1].item;
  558.             mapa[mov].monstruo=mapa[mov-1].monstruo;
  559.             mapa[mov-1].id=0;//el casillero anterior queda vacio
  560.             mapa[mov-1].hero=NULL;
  561.             //
  562.             }else{
  563.                 //eliminarMapa(mapa);
  564.                 system("cls");
  565.                 gotoxy(36,12);
  566.                 printf("GAME OVER\n");
  567.                 gotoxy(36,15);
  568.                 printf("Deseas jugar de nuevo ? (S/N)");
  569.                 char g=getchar();
  570.                 if (g=='s' || g=='S'){
  571.                     estadoJuego=1;
  572.                     nivel=1;
  573.                     mov=0;
  574.                 }else {
  575.                     estadoJuego=0;//fin del juego
  576.                 }
  577.             }
  578.           }else {
  579.               estadoJuego=1;
  580.               nivel++;
  581.              
  582.               //eliminarMapa(mapa);
  583.               mov=0;
  584.               system("cls");
  585.               gotoxy(36,12);
  586.               printf("Nivel %d\n",nivel);
  587.               pintar(nombre,nivel,&animacion);//Si pongo la impresion aca , cuando el personaje pasa se borra un poco el arbol pqeo el movimiento es mejor
  588.               i=4;
  589.               j=18;
  590.               //crearMapasAleatorios(&mapa[E],nivel,nombre);//iniciamos el juego
  591.           }  
  592.        
  593.         } /*else
  594.         if (C==75) {//IZQUIERDA
  595.         i=i-2;//para moverse mas
  596.         if (i>3){
  597.         gotoxy(i,j);
  598.         moverHeroe(i,j);
  599.         }else {
  600.             gotoxy(4,j);
  601.             moverHeroe(4,j);
  602.             i=4;
  603.         }
  604.         } else
  605.         if (C==72) {//ARRIBA
  606.         j=j-2;//para moverse mas
  607.         if (j>3){
  608.         gotoxy(i,j);
  609.         moverHeroe(i,j);
  610.         }else {
  611.             gotoxy(i,4);
  612.             moverHeroe(i,4);
  613.             j=4;
  614.         }
  615.         }else
  616.         if (C==80) {//ABAJO
  617.         j=j+2;//para moverse mas
  618.         if (j<19){
  619.         gotoxy(i,j);
  620.         moverHeroe(i,j);
  621.         }else {
  622.             gotoxy(i,18);
  623.             moverHeroe(i,18);
  624.             j=18;
  625.         }
  626.     }*/else
  627.       if (C==27){
  628.           eliminarMapa(mapa);
  629.           system("cls");
  630.           break;
  631.       } else {
  632.           gotoxy(i,j);
  633.           moverHeroe(i,j);
  634.       }
  635.    
  636.     }
  637.    
  638.     return 0;
  639. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement