• Miércoles 6 de Noviembre de 2024, 06:43

Autor Tema:  Re: JUEGO DE LOS BARCOS  (Leído 2093 veces)

maitica7

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: JUEGO DE LOS BARCOS
« en: Domingo 2 de Marzo de 2003, 23:05 »
0
Alguien me podria ayudar con el juego de los barcos en c++ es que estoy un poco perdida.

Muchas gracias:angel:

Void

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: JUEGO DE LOS BARCOS
« Respuesta #1 en: Miércoles 5 de Marzo de 2003, 02:11 »
0
Wenas... He estado buskando el kodigo del juego de los barkitos en c++, sé ke lo tengo ke tener por algun lado, lo ke pasa es ke ahora mismo pos no lo enkuentro.. Lo uniko ke te puedo dejar por el momento es una especie de hundir la flota en C... Hace muxo ke empezé ese programa, y aunke basikamente funciona, le faltan muxisimos retokes... Usa la librería graphics.h (Incluida en el Turbo C) y una libreria de manejo del raton ke adjunto.. Weno y nada más, espero ke te sirva de ayuda...
                                  SALUD!

PD: No tiene komentarios, así ke espero ke no te kueste muxo entenderlo....

#include <stdio.h>
#include <graphics.h>
#include <stdlib.h>
#include "mouse.h"
   int fila(void);
   int num(int);
   void menu();
   void asigna(int [20][20],int [20][20],int [20][20],int [20][20],int [20][20],int);
   void dibuja_tabla(int [20][20],int [20][20],int);
   void marco(int,int,int,int);
   void koloka_player1(int [20][20],int [20][20],int[20][20],int,int);
   void koloka_player2(int [20][20],int [20][20],int[20][20],int,int);
   void koloka_cpu(int [20][20],int,int);
   void pinta_barko (int [20][20],int[ 20][20],int,int);
   void agua (int [20][20],int [20][20],int,int);
   void dibuja_tablero_cpu (int [20][20],int [20][20],int [20][20],int);
   void dibuja_tablero_player1 (int [20][20],int [20][20],int [20][20],int);
   void dibuja_tablero_player2 (int [20][20],int [20][20],int [20][20],int);
   void dispara_player1 (int [20][20],int [20][20],int [20][20],int,int *);
   void dispara_player1_2 (int [20][20],int [20][20],int [20][20],int,int *);
   void dispara_cpu(int [20][20],int [20][20],int [20][20],int,int *);
   void dispara_player2 (int [20][20],int [20][20],int [20][20],int,int *);
   main()
{
   int controlador,modo,i,j,filas,boton,numbarkos,x,y,puntos_cpu,puntos_1,puntos_2,opcion;
   int tablax[20][20],tablay[20][20],player1[20][20],cpu[20][20],player2[20][20];
   controlador=DETECT;
   modo=0;
   randomize();
   initgraph(&controlador,&modo,"");
   inicializar_raton();
   estado_raton(&x,&y,&boton);
   menu();
   opcion=getch();
   while (opcion!=3)
   {
   switch(opcion)
   {
      case '1':
      puntos_cpu=puntos_1=0;
      filas=fila();
      numbarkos=num(filas);
      asigna(tablax,tablay,player1,player2,cpu,filas);
      dibuja_tabla(tablax,tablay,filas);
      koloka_player1(tablax,tablay,player1,filas,numbarkos);
      koloka_cpu(cpu,filas,numbarkos);
      getche();
      while (puntos_cpu!=numbarkos && puntos_1!=numbarkos)
      {
      dibuja_tablero_cpu(tablax,tablay,cpu,filas);
      dispara_player1 (tablax,tablay,cpu,filas,&puntos_1);
         if (puntos_1==numbarkos)
         {
         clearviewport();
         outtextxy(150,150,"TU GANAS");
         getche();
         break;
         }
      dibuja_tablero_player1(tablax,tablay,player1,filas);
      dispara_cpu(tablax,tablay,player1,filas,&puntos_cpu);
         if(puntos_cpu==numbarkos)
         {
         clearviewport();
         outtextxy(150,150,"CPU GANA");
         getche();
         break;
         }
      }
      break;

      case '2':
         puntos_1=puntos_2=0;
         filas=fila();
         numbarkos=num(filas);
         asigna(tablax,tablay,player1,player2,cpu,filas);
         dibuja_tabla(tablax,tablay,filas);
         koloka_player1(tablax,tablay,player1,filas,numbarkos);
         dibuja_tabla(tablax,tablay,filas);
         koloka_player2(tablax,tablay,player2,filas,numbarkos);
         getche();
         while (puntos_1!=numbarkos && puntos_2!=numbarkos)
         {
            dibuja_tablero_player2(tablax,tablay,player2,filas);
            dispara_player1_2 (tablax,tablay,player2,filas,&puntos_1);
            if (puntos_1==numbarkos)
            {
               clearviewport();
               outtextxy(150,150,"PLAYER 1 GANA");
               getch();
               break;
            }
            dibuja_tablero_player1(tablax,tablay,player1,filas);
            dispara_player2 (tablax,tablay,player1,filas,&puntos_2);
            if (puntos_2==numbarkos)
            {
               clearviewport();
               outtextxy(150,150,"PLAYER 2 GANA");
               getche();
               break;
            }
         }
      break;
      case '3':
         exit(0);
      default:
         sound(500);
         delay(300);
         nosound();
   }
   menu();
   opcion=getche();
   }
   getche();
   ocultar_raton();
   closegraph();
}


      void asigna(int tablax[20][20],int tablay[20][20],int player1[20][20],int cpu[20][20],int player2[20][20],int filas)
      {
         int i,j,x,y;
         y=60;
         for(i=0;i<filas;i++)
         {
            x=60;
            for(j=0;j<filas;j++)
            {
               tablax[j]=x;
               tablay[j]=y;
               player1[j]=0;
               player2[j]=0;
               cpu[j]=0;
               x=x+20;
            }
            y=y+20;
         }
      }

      void dibuja_tabla(int tablax[20][20],int tablay[20][20],int filas)
      {
         int i,j,x0,y0,x1,y1;
         char letra[2],tmp;
         tmp='A';
         x0=tablax[0][0]-10;
         y0=tablay[0][0]-10;
         x1=(tablax[filas-1][filas-1])+10;
         y1=(tablay[filas-1][filas-1])+10;
         clearviewport();
         marco(x0,y0,x1,y1);
         setcolor(BLUE);
         for(j=0;j<filas+1;j++)
         {
            line(x0,y0,x1,y0);
            y0=y0+20;
         }
         y0=tablay[0][0]-10;
         for(i=0;i<filas+1;i++)
         {
            line(x0,y0,x0,y1);
            x0=x0+20;
         }
         x0=tablax[0][0];
         for (i=0;i<filas;i++)
         {
            setcolor(WHITE);
            letra[0]=tmp;
            letra[1]='';
            outtextxy(x0-2,tablay[0][0]-20,letra);
            outtextxy(tablax[0][0]-20,y0+5,letra);
            x0=x0+20;
            y0=y0+20;
            tmp++;
         }
      }

      void koloka_player1 (int tablax[20][20],int tablay[20][20],int player1[20][20],int filas,int numbarkos)
      {
         int boton,x,y,i,j,contador;
         boton=contador=0;
         setcolor(WHITE);
         outtextxy(10,10,"PLAYER 1 COLOCA TUS BARCOS");
         while (contador!=numbarkos)
         {
         visualizar_raton();
         estado_raton(&x,&y,&boton);
         if (boton==1)
            {
             ocultar_raton();
               for(i=0;i<filas;i++)
               {
                  for(j=0;j<filas;j++)
                  {
                     if(x>tablax[j]-10 && x<tablax[j]+10 && y>tablay[j]-10 && y<tablay[j]+10)
                     {
                        if (player1[j]==1)
                        {
                        sound(500);
                        delay(100);
                        nosound();
                        }
                        if (player1[j]==0)
                        {
                        pinta_barko(tablax,tablay,i,j);
                        contador++;
                        player1[j]=1;
                        }

                     }
                  }
               }
            getche();
            }

         }
      }
         void koloka_cpu(int cpu[20][20],int filas,int numbarkos)
         {
            int contador,i,j;
            contador=0;
            while(contador!=numbarkos)
            {
            i=(random(filas));
            j=(random(filas));
            if(cpu[j]==0)
               {
                  cpu[j]=1;
                  contador++;
               }
            }
         }



         void pinta_barko (int tablax[20][20],int tablay[20][20],int i,int j)
         {
         int var;
         for(var=0;var<10;var++)
            {
               setcolor(RED);
               rectangle(tablax[j]-var,tablay[j]+var,tablax[j]+var,tablay[j]-var);
               setcolor(WHITE);
               outtextxy(tablax[j]-2,tablay[j]-2,"B");
            }
         }

         void agua (int tablax[20][20],int tablay[20][20],int i,int j)
         {
         int var;
         setcolor(BLUE);
         for (var=0;var<10;var++)
         {
            circle(tablax[j],tablay[j],var);
         }
         setcolor(WHITE);
         }



         void dibuja_tablero_cpu (int tablax[20][20],int tablay[20][20],int cpu[20][20],int filas)
         {
            int i,j;
            clearviewport();
            dibuja_tabla(tablax,tablay,filas);
            for (i=0;i<filas;i++)
            {
               for (j=0;j<filas;j++)
               {
                  if (cpu[j]==3)
                  {
                     pinta_barko(tablax,tablay,i,j);
                  }
                  if (cpu[j]==2)
                  {
                     agua(tablax,tablay,i,j);
                  }
               }
            }
         }


         void dispara_player1 (int tablax[20][20],int tablay[20][20],int cpu[20][20],int filas,int *puntos_1)
         {
            int boton,x,y,i,j,contador;
            boton=contador=0;
            outtextxy(60,10," - DISPARA PLAYER 1 - ");
            while (contador!=1)
            {
               visualizar_raton();
               estado_raton(&x,&y,&boton);
               if (boton==1)
               {
                ocultar_raton();
                  for(i=0;i<filas;i++)
                  {
                     for(j=0;j<filas;j++)
                     {
                        if(x>tablax[j]-10 && x<tablax[j]+10 && y>tablay[j]-10 && y<tablay[j]+10)
                        {
                           if (cpu[j]==2 || cpu[j]==3)
                           {
                           sound(500);
                           delay(300);
                           nosound();
                           }
                           if (cpu[j]==1)
                           {
                           pinta_barko(tablax,tablay,i,j);
                           *puntos_1=*puntos_1+1;
                           contador++;
                           cpu[j]=3;
                           }
                           if (cpu[j]==0)
                           {
                           agua(tablax,tablay,i,j);
                           cpu[j]=2;
                           contador++;
                           }
                        }
                     }
                  }
               getche();
               }

            }
         }

         void dispara_cpu (int tablax [20][20],int tablay [20][20],int player1 [20][20],int filas,int *puntos_cpu)
         {
         int i,j,contador;
         contador=0;
         outtextxy(60,10,"TURNO DEL ORDENADOR....");
         while (contador!=1)
         {
            i=(random(filas));
            j=(random(filas));
            if (player1[j]==0)
            {
               agua(tablax,tablay,i,j);
               player1[j]=2;
               contador++;
            }
            if (player1[j]==1)
            {
               pinta_barko(tablax,tablay,i,j);
               player1[j]=3;
               *puntos_cpu=*puntos_cpu+1;
               contador++;
            }
            outtextxy(60,460,"- PULSE UNA TECLA PARA CONTINUAR -");
         }
         getche();
         }


         void marco(int x0,int y0,int x1,int y1)
         {
         int c,a,b,x,f, d;
         a=2;
         b=10;
         while(b!=1)
            {
                 setrgbpalette(a,(a*4)+7,a*2,a);
                setpalette(a,a);
                setcolor(a);
                setfillstyle(SOLID_FILL, a);
                rectangle(x0-b, y0-b, x1+b, y1+b);
                b--;
               a++;
            }
         }


         void dibuja_tablero_player1 (int tablax[20][20],int tablay[20][20],int player1[20][20],int filas)
         {
            int i,j;
            clearviewport();
            dibuja_tabla(tablax,tablay,filas);
            for (i=0;i<filas;i++)
            {
               for (j=0;j<filas;j++)
               {
                  if (player1[j]==3)
                  {
                     pinta_barko(tablax,tablay,i,j);
                  }
                  if (player1[j]==2)
                  {
                     agua(tablax,tablay,i,j);
                  }
               }
            }
         }






      void koloka_player2 (int tablax[20][20],int tablay[20][20],int player2[20][20],int filas,int numbarkos)
      {
         int boton,x,y,i,j,contador;
         boton=contador=0;
         setcolor(WHITE);
         outtextxy(10,10,"PLAYER 2 COLOCA TUS BARCOS");
         while (contador!=numbarkos)
         {
         visualizar_raton();
         estado_raton(&x,&y,&boton);
         if (boton==1)
            {
             ocultar_raton();
               for(i=0;i<filas;i++)
               {
                  for(j=0;j<filas;j++)
                  {
                     if(x>tablax[j]-10 && x<tablax[j]+10 && y>tablay[j]-10 && y<tablay[j]+10)
                     {
                        if (player2[j]==1)
                        {
                        sound(500);
                        delay(100);
                        nosound();
                        }
                        if (player2[j]==0)
                        {
                        pinta_barko(tablax,tablay,i,j);
                        contador++;
                        player2[j]=1;
                        }

                     }
                  }
               }
            getche();
            }

         }
      }





      void menu()
      {
         clearviewport();
         bar3d(200,100,400,260,0,2);
         setcolor(BLACK);
         outtextxy(220,140,"ESCOGE UNA OPCION : ");
         outtextxy(220,160,"( 1 ) -UN JUGADOR");
         outtextxy(220,180,"( 2 ) -DOS JUGADORES");
         outtextxy(220,200,"( 3 ) -SALIR");
      }







         void dispara_player2 (int tablax[20][20],int tablay[20][20],int player1[20][20],int filas,int *puntos_2)
         {
            int boton,x,y,i,j,contador;
            boton=contador=0;
            outtextxy(60,10," - DISPARA PLAYER 2 - ");
            while (contador!=1)
            {
               visualizar_raton();
               estado_raton(&x,&y,&boton);
               if (boton==1)
               {
                ocultar_raton();
                  for(i=0;i<filas;i++)
                  {
                     for(j=0;j<filas;j++)
                     {
                        if(x>tablax[j]-10 && x<tablax[j]+10 && y>tablay[j]-10 && y<tablay[j]+10)
                        {
                           if (player1[j]==2 || player1[j]==3)
                           {
                           sound(500);
                           delay(300);
                           nosound();
                           }
                           if (player1[j]==1)
                           {
                           pinta_barko(tablax,tablay,i,j);
                           *puntos_2=*puntos_2+1;
                           contador++;
                           player1[j]=3;
                           }
                           if (player1[j]==0)
                           {
                           agua(tablax,tablay,i,j);
                           player1[j]=2;
                           contador++;
                           }
                        }
                     }
                  }
               getche();
               }
            }
         }


         void dispara_player1_2 (int tablax[20][20],int tablay[20][20],int player2[20][20],int filas,int *puntos_1)
         {
            int boton,x,y,i,j,contador;
            boton=contador=0;
            outtextxy(60,10," - DISPARA PLAYER 1 - ");
            while (contador!=1)
            {
               visualizar_raton();
               estado_raton(&x,&y,&boton);
               if (boton==1)
               {
                ocultar_raton();
                  for(i=0;i<filas;i++)
                  {
                     for(j=0;j<filas;j++)
                     {
                        if(x>tablax[j]-10 && x<tablax[j]+10 && y>tablay[j]-10 && y<tablay[j]+10)
                        {
                           if (player2[j]==2 || player2[j]==3)
                           {
                           sound(500);
                           delay(300);
                           nosound();
                           }
                           if (player2[j]==1)
                           {
                           pinta_barko(tablax,tablay,i,j);
                           *puntos_1=*puntos_1+1;
                           contador++;
                           player2[j]=3;
                           }
                           if (player2[j]==0)
                           {
                           agua(tablax,tablay,i,j);
                           player2[j]=2;
                           contador++;
                           }
                        }
                     }
                  }
               getche();
               }
            }
         }




   void dibuja_tablero_player2 (int tablax[20][20],int tablay[20][20],int player2[20][20],int filas)
   {
      int i,j;
      clearviewport();
      dibuja_tabla(tablax,tablay,filas);
      for (i=0;i<filas;i++)
      {
         for (j=0;j<filas;j++)
         {
            if (player2[j]==3)
            {
               pinta_barko(tablax,tablay,i,j);
            }
            if (player2[j]==2)
            {
               agua(tablax,tablay,i,j);
            }
         }
      }
   }

   int fila()
   {
      int filas;
      clearviewport();
      setcolor(BLUE);
      gotoxy(10,10);
      printf("nDEFINE TAMA¥O PARA EL TABLERO (DE 2 a 20): ");
      scanf("%d",&filas);
      while (filas<2 || filas>20)
      {
         printf("n VENGA S
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
No somos Merkancía....

maitica7

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: JUEGO DE LOS BARCOS
« Respuesta #2 en: Miércoles 5 de Marzo de 2003, 21:50 »
0
Muchas gracias por todo simplemente queria hacerme una idea de como hacer el programa y tu me has aclarado muchas dudas. Si encuentras la versión en c++ mandamela a mi correo maitica7@hotmail.com y si no la encuentras te prometo que cuando haga el programa de los barcos te lo envio perfecto. ok?

Void

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
JUEGO DE LOS BARCOS
« Respuesta #3 en: Jueves 6 de Marzo de 2003, 20:06 »
0
De nada tron, pa eso estamos.... Aun no he enkontrado el programa en c++ (Sé ke está por algún lado en el kaos de mi habitación) De todos modos hacerlo en modo texto no es nada dificil... Fijo ke lo konsigues.... y kuando lo konsigas pos lo kuelgas por aki para ke le exemos un vistazo , ke no?? Weno poseso suerte...
                                   SALUD!
No somos Merkancía....