• Sábado 14 de Diciembre de 2024, 17:43

Autor Tema:  Juego sokoban problema con movimiento  (Leído 1033 veces)

p998

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Juego sokoban problema con movimiento
« en: Viernes 5 de Marzo de 2010, 21:37 »
0
Muy buenas

He estado haciendo el juego sokoban , y muy bien hasta la hora de mover un objeto.

el planteamiento es este x2 y2 es el objeto i x y el puntero, Si se pulsa una de las flechas cuando el objeto esta al lado este se borra i se muestra en una casilla mas , por ejemplo si el objeto esta a la  izquierda del puntero i se pulsa la flecha izquierda este se a de mover a la izquierda. Os dejo aqui el programa aver si me podeis echar una mano.

Código: C++
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <string>
  4. #include <conio.h>
  5. #include <windows.h>
  6. #include <stdio.h>
  7. #include <time.h>
  8. using namespace std;
  9. void gotoxy_(int x,int y);
  10. void cuadrado();
  11. void objeto();
  12. void error();
  13. void hora();
  14. void crono();
  15. void menu();
  16. void moverobjeto();
  17. int x,y,x1,y1,x2,y2;
  18. int key=0;
  19. int main()
  20. {
  21.     srand(time(NULL));
  22.  
  23. hora();
  24. menu();
  25. //crono();
  26. cuadrado();
  27. x2=19;
  28. y2=12;
  29. gotoxy_(x2,y2);
  30. cout<<'a';
  31.  
  32.  
  33.  x= 19; y= 16; gotoxy_(x,y);  
  34.  
  35. while(key!=27)
  36. {
  37.     key=getch();
  38.  
  39.    
  40.     if(key==72|key==75|key==80|key==77)
  41.     {
  42.     x1=x;
  43.     y1=y;
  44.     }
  45.    
  46.      if(x==x2 && y==y2+1)
  47.      {
  48.       gotoxy_(x2,y2);
  49.       cout<<' ';
  50.       y2++;
  51.       gotoxy_(x2,y2);
  52.       cout<<'a';
  53.      }        
  54.    
  55.    
  56.      if(x==x2+1 && y==y2)
  57.      {
  58.       gotoxy_(x2,y2);
  59.      cout<<' ';
  60.      x2++;
  61.      gotoxy_(x2,y2);
  62.      cout<<'a';
  63.      }  
  64.      
  65.      if(key==80)
  66.     {
  67.      if(x==x2 && y==y2-1)
  68.      {
  69.       gotoxy_(x2,y2);
  70.       cout<<' ';
  71.       y2--;
  72.       gotoxy_(x2,y2);
  73.       cout<<'a';
  74.      }  
  75.              
  76.     }    
  77.     if(key==77)
  78.     {
  79.      if(x==x2 && y==y2)
  80.      {
  81.       gotoxy_(x2,y2);
  82.       cout<<' ';
  83.       x2++;
  84.       gotoxy_(x2,y2);
  85.       cout<<'a';
  86.      }  
  87.      }      
  88.          
  89.              
  90.    
  91.  
  92.  
  93.     if(key==72)
  94.     {
  95.                //cout<<"up"<<endl;
  96.                
  97.  
  98.                 y--;
  99.  
  100.                 if (y<11)
  101.                  {
  102.                          error();
  103.                  
  104.                  }
  105.     }
  106.     if(key==75)
  107.     {
  108.                //cout<<"left"<<endl;
  109.                 x--;
  110.                
  111.                  if (x<11)
  112.                  {
  113.                          error();
  114.                  
  115.                  }
  116.        
  117.     }
  118.     if(key==80)
  119.     {
  120.                //cout<<"down"<<endl;
  121.                y++;
  122.            
  123.                 if (y>19)
  124.                  {
  125.                  error();
  126.                  
  127.                  }
  128.          
  129.     }
  130.     if(key==77)
  131.     {
  132.                //cout<<"right"<<endl;
  133.                 x++;
  134.                
  135.                  if (x>33)
  136.                  {
  137.                           error();
  138.                  
  139.                  }
  140.  
  141.     }
  142.     if(key==72|key==75|key==80|key==77)
  143.     {
  144.      gotoxy_(x,y);
  145.      cout<<' ';
  146.      gotoxy_(x,y);
  147.      cout<<'O';
  148.      gotoxy_(x1,y1);
  149.      cout<<' ';
  150.  
  151.      
  152.      
  153.      }
  154.    
  155.    if(x>=14 && x<=33 && y==17)
  156.    {
  157.           error();
  158.    }
  159.    if(x>=10 && x<=27 && y==13)
  160.    {
  161.           error();
  162.    }
  163.  
  164.    
  165. }//end while
  166.    
  167.    
  168.  
  169.  
  170. getch();
  171.  
  172. }
  173.  
  174. void cuadrado()
  175. {
  176. x= 10; y= 20; gotoxy_(x,y);  
  177.  printf("*");
  178.  x= 11; y= 20; gotoxy_(x,y);  
  179.  printf("*");    
  180.  x= 12; y= 20; gotoxy_(x,y);  
  181.  printf("*");    
  182.    x= 13; y= 20; gotoxy_(x,y);  
  183.  printf("*");
  184.  x= 14; y= 20; gotoxy_(x,y);  
  185.  printf("*");
  186.   x= 15; y= 20; gotoxy_(x,y);  
  187.  printf("*");  
  188.   x= 16; y= 20; gotoxy_(x,y);  
  189.  printf("*");  
  190.   x= 17; y= 20; gotoxy_(x,y);  
  191.  printf("*");  
  192.   x= 18; y= 20; gotoxy_(x,y);  
  193.  printf("*");  
  194.   x= 19; y= 20; gotoxy_(x,y);  
  195.  printf("*");    
  196.    x= 20; y= 20; gotoxy_(x,y);  
  197.  printf("*");
  198.    x= 21; y= 20; gotoxy_(x,y);  
  199.  printf("*");
  200.    x= 22; y= 20; gotoxy_(x,y);  
  201.  printf("*");
  202.    x= 23; y= 20; gotoxy_(x,y);  
  203.  printf("*");
  204.    x= 24; y= 20; gotoxy_(x,y);  
  205.  printf("*");
  206.    x= 25; y= 20; gotoxy_(x,y);  
  207.  printf("*");
  208.    x= 26; y= 20; gotoxy_(x,y);  
  209.  printf("*");
  210.    x= 27; y= 20; gotoxy_(x,y);  
  211.  printf("*");
  212.    x= 28; y= 20; gotoxy_(x,y);  
  213.  printf("*");
  214.    x= 29; y= 20; gotoxy_(x,y);  
  215.  printf("*");
  216.    x= 30; y= 20; gotoxy_(x,y);  
  217.  printf("*");
  218.    x= 31; y= 20; gotoxy_(x,y);  
  219.  printf("*");
  220.    x= 32; y= 20; gotoxy_(x,y);  
  221.  printf("*");
  222.    x= 33; y= 20; gotoxy_(x,y);  
  223.  printf("*");
  224.    x= 34; y= 20; gotoxy_(x,y);  
  225.  printf("*");
  226.  ////////////////
  227.   x= 10; y= 10; gotoxy_(x,y);  
  228.  printf("*");
  229.  x= 11; y= 10; gotoxy_(x,y);  
  230.  printf("*");    
  231.  x= 12; y= 10; gotoxy_(x,y);  
  232.  printf("*");    
  233.    x= 13; y= 10; gotoxy_(x,y);  
  234.  printf("*");
  235.  x= 14; y= 10; gotoxy_(x,y);  
  236.  printf("*");
  237.   x= 15; y= 10; gotoxy_(x,y);  
  238.  printf("*");  
  239.   x= 16; y= 10; gotoxy_(x,y);  
  240.  printf("*");  
  241.   x= 17; y= 10; gotoxy_(x,y);  
  242.  printf("*");  
  243.   x= 18; y= 10; gotoxy_(x,y);  
  244.  printf("*");  
  245.   x= 19; y= 10; gotoxy_(x,y);  
  246.  printf("*");    
  247.    x= 20; y= 10; gotoxy_(x,y);  
  248.  printf("*");
  249.    x= 21; y= 10; gotoxy_(x,y);  
  250.  printf("*");
  251.    x= 22; y= 10; gotoxy_(x,y);  
  252.  printf("*");
  253.    x= 23; y= 10; gotoxy_(x,y);  
  254.  printf("*");
  255.    x= 24; y= 10; gotoxy_(x,y);  
  256.  printf("*");
  257.    x= 25; y= 10; gotoxy_(x,y);  
  258.  printf("*");
  259.    x= 26; y= 10; gotoxy_(x,y);  
  260.  printf("*");
  261.    x= 27; y= 10; gotoxy_(x,y);  
  262.  printf("*");
  263.    x= 28; y= 10; gotoxy_(x,y);  
  264.  printf("*");
  265.    x= 29; y= 10; gotoxy_(x,y);  
  266.  printf("*");
  267.    x= 30; y= 10; gotoxy_(x,y);  
  268.  printf("*");
  269.    x= 31; y= 10; gotoxy_(x,y);  
  270.  printf("*");
  271.    x= 32; y= 10; gotoxy_(x,y);  
  272.  printf("*");
  273.    x= 33; y= 10; gotoxy_(x,y);  
  274.  printf("*");
  275.    x= 34; y= 10; gotoxy_(x,y);  
  276.  printf("*");
  277.  //////////
  278.     x= 34; y= 11; gotoxy_(x,y);  
  279.  printf("*");
  280.     x= 34; y= 12; gotoxy_(x,y);  
  281.  printf("*");
  282.   x= 34; y= 13; gotoxy_(x,y);  
  283.  printf("*");
  284.   x= 34; y= 14; gotoxy_(x,y);  
  285.  printf("*");
  286.   x= 34; y= 15; gotoxy_(x,y);  
  287.  printf("*");
  288.   x= 34; y= 16; gotoxy_(x,y);  
  289.  printf("*");
  290.   x= 34; y= 17; gotoxy_(x,y);  
  291.  printf("*");
  292.   x= 34; y= 18; gotoxy_(x,y);  
  293.  printf("*");
  294.    x= 34; y= 19; gotoxy_(x,y);  
  295.  printf("*");
  296.    x= 10; y= 11; gotoxy_(x,y);  
  297.  printf("*");
  298.     x= 10; y= 12; gotoxy_(x,y);  
  299.  printf("*");
  300.     x= 10; y= 13; gotoxy_(x,y);  
  301.  printf("*");
  302.     x= 10; y= 14; gotoxy_(x,y);  
  303.  printf("*");
  304.     x= 10; y= 15; gotoxy_(x,y);  
  305.  printf("*");
  306.     x= 10; y= 16; gotoxy_(x,y);  
  307.  printf("*");
  308.     x= 10; y= 17; gotoxy_(x,y);  
  309.  printf("*");
  310.     x= 10; y= 18; gotoxy_(x,y);  
  311.  printf("*");
  312.     x= 10; y= 19; gotoxy_(x,y);  
  313.  printf("*");
  314.  //dentro
  315.     x= 10; y= 13; gotoxy_(x,y);  
  316.  printf("*");
  317.     x= 11; y= 13; gotoxy_(x,y);  
  318.  printf("*");
  319.     x= 12; y= 13; gotoxy_(x,y);  
  320.  printf("*");
  321.     x= 13; y= 13; gotoxy_(x,y);  
  322.  printf("*");
  323.     x= 14; y= 13; gotoxy_(x,y);  
  324.  printf("*");
  325.     x= 15; y= 13; gotoxy_(x,y);  
  326.  printf("*");
  327.     x= 16; y= 13; gotoxy_(x,y);  
  328.  printf("*");
  329.     x= 17; y= 13; gotoxy_(x,y);  
  330.  printf("*");
  331.     x= 18; y= 13; gotoxy_(x,y);  
  332.  printf("*");
  333.    x= 19; y= 13; gotoxy_(x,y);  
  334.  printf("*");
  335.    x= 20; y= 13; gotoxy_(x,y);  
  336.  printf("*");
  337.    x= 21; y= 13; gotoxy_(x,y);  
  338.  printf("*");
  339.    x= 22; y= 13; gotoxy_(x,y);  
  340.  printf("*");
  341.    x= 23; y= 13; gotoxy_(x,y);  
  342.  printf("*");
  343.  x= 24; y= 13; gotoxy_(x,y);  
  344.  printf("*");
  345.  x= 25; y= 13; gotoxy_(x,y);  
  346.  printf("*");
  347.  x= 26; y= 13; gotoxy_(x,y);  
  348.  printf("*");
  349.  x= 27; y= 13; gotoxy_(x,y);  
  350.  printf("*");
  351.  
  352.  //
  353.   x= 14; y= 17; gotoxy_(x,y);  
  354.  printf("*");
  355.   x= 15; y= 17; gotoxy_(x,y);  
  356.  printf("*");  
  357.   x= 16; y= 17; gotoxy_(x,y);  
  358.  printf("*");  
  359.   x= 17; y= 17; gotoxy_(x,y);  
  360.  printf("*");  
  361.   x= 18; y= 17; gotoxy_(x,y);  
  362.  printf("*");  
  363.   x= 19; y= 17; gotoxy_(x,y);  
  364.  printf("*");    
  365.    x= 20; y= 17; gotoxy_(x,y);  
  366.  printf("*");
  367.    x= 21; y= 17; gotoxy_(x,y);  
  368.  printf("*");
  369.    x= 22; y= 17; gotoxy_(x,y);  
  370.  printf("*");
  371.    x= 23; y= 17; gotoxy_(x,y);  
  372.  printf("*");
  373.    x= 24; y= 17; gotoxy_(x,y);  
  374.  printf("*");
  375.    x= 25; y= 17; gotoxy_(x,y);  
  376.  printf("*");
  377.    x= 26; y= 17; gotoxy_(x,y);  
  378.  printf("*");
  379.    x= 27; y= 17; gotoxy_(x,y);  
  380.  printf("*");
  381.    x= 28; y= 17; gotoxy_(x,y);  
  382.  printf("*");
  383.    x= 29; y= 17; gotoxy_(x,y);  
  384.  printf("*");
  385.    x= 30; y= 17; gotoxy_(x,y);  
  386.  printf("*");
  387.    x= 31; y= 17; gotoxy_(x,y);  
  388.  printf("*");
  389.    x= 32; y= 17; gotoxy_(x,y);  
  390.  printf("*");
  391.    x= 33; y= 17; gotoxy_(x,y);  
  392.  printf("*");
  393.  
  394. }
  395. void gotoxy_(int x,int y)
  396. {
  397.     HANDLE consola;
  398.     COORD posicion;
  399.     consola = GetStdHandle(STD_OUTPUT_HANDLE);
  400.     posicion.X= x;
  401.     posicion.Y= y;
  402.    
  403.    
  404.     SetConsoleCursorPosition(consola, posicion);    
  405. }
  406.  
  407. void error()
  408.    {
  409.    
  410.          system("cls");  
  411.          printf("GAME OVER!!");
  412.          printf("n");
  413.          printf("Pulse escape para empezar de nuevo");
  414.          if (key==27)
  415.          {
  416.                      system("cls");
  417.                   //ir a main
  418.                      
  419.          }  
  420.        
  421.        
  422.    }
  423. void hora()
  424. {
  425.    
  426.  
  427.   time_t rawtime;
  428.  
  429.   time ( &rawtime );
  430.   printf ( "La hora actual es: %s", ctime (&rawtime) );
  431.  
  432.  
  433. }
  434.  
  435. void crono()
  436. {
  437.  
  438.    int segundos, minutos, horas;
  439.    
  440.    segundos = minutos = horas = 0;
  441.    while (minutos < 2){
  442.       if (segundos == 60){
  443.          minutos++;
  444.          segundos = 0;
  445.       }
  446.      
  447.       if (minutos == 60){
  448.          horas++;
  449.          minutos = 0;
  450.       }
  451.      
  452.       printf("%02d:%02d:%02dn", horas, minutos, segundos);
  453.       Sleep(1000);
  454.       segundos++;
  455.    }
  456.    
  457.    
  458. }
  459.  
  460. void menu()
  461. {
  462. system("color 1f");
  463. printf("nssssssss oooooooo kk     kkk oooooooo bbbbbbbb aaaaaaaaaa nnn  nnnnn");
  464. printf("nssssssss oooooooo kkk   kkk  oooooooo bbbb   b aaa   aaaa nnnn nnnnn");
  465. printf("nssss   oooooooo kkk kkkk   oooooooo bbbbb  b aaa   aaaa nnnnnnnnnn");
  466. printf("nsss      ooo  ooo kkkkkkk    ooo  ooo bbbbb  b aaaaaaaaaa nnnnnnnnnn");
  467. printf("nssssssss ooo  ooo kkkkkk     ooo  ooo bbbbbbbb aaaaaaaaaa nnnnnnnnnn");
  468. printf("nssssssss ooo  ooo kkkkkkk    ooo  ooo bbbbb  b aaaaaaaaaa nnnnnnnnnn");
  469. printf("n    ssss oooooooo kkk kkk    oooooooo bbbbb  b aaaaaaaaaa nnnnnnnnnn");
  470. printf("nssssssss oooooooo kkk  kkkk  oooooooo bbbbb  b aaa   aaaa n  nnnnnnn");
  471. printf("nssssssss oooooooo kkk   kkkk oooooooo bbbbbbbb aaa   aaaa n   nnnnnn");
  472.