# Brauche hilfe bei Schiffe versenken in c++



## Bone_Spirit (22. Dezember 2004)

hi leute ich muss das spiel schiffe versenken in c++ konsolenanwendung programmieren
aber ich komm nicht weiter ich muss es nur im singel player schreiben 
wie kann ich die schiffe dem computer setzten lassen?

Bitte helft mir!

MfG Bone_Spirit


----------



## Kachelator (22. Dezember 2004)

Da musst du ein bischen konkreter werden. Wie genau können wir dir helfen? Wie weit bist du denn schon gekommen?


----------



## Bone_Spirit (22. Dezember 2004)

das ist bis jetzt mein Quelltext kannst ihn ja mal durschaun:


```
#include <iostream.h>
#include <conio.h>
#include <windows.h>

         void begr (void);        
         void begr2 (void);
         void leicht (void);
         void mittel (void);
         void schwer (void);

int main ()
{
int abbr;
char stufe;   

begr();
getchar();
clrscr();
begr2();        
getchar();
clrscr();      
do
{
cout << "\t\t  -----------------------------------\n";
cout << "\t\t  | Sie befinden sich im Startmenue |\n";
cout << "\t\t  -----------------------------------\n\n\n";

cout << " Waehlen Sie Ihre Schwierigkeitsstufe: \n\n";
cout << " <1> Leicht (8x8)\n <2> Mittel (10x10)\n <3> Schwer (12x12)";         
cout << " \n Zum Abbrechen druecken Sie 0";
cout << "\n\n Eingabe: ";
cin >> stufe;                      

       switch (stufe)              
       {
        case '1': clrscr();
                abbr =1;
                leicht (); 
                getchar();
                clrscr();
                break;

        case '2': clrscr();
                abbr=1;
                mittel();  
                getchar();
                clrscr();
                break;

        case '3': clrscr();
                abbr=1;
                schwer();  
                getchar();
                clrscr();
                break;

        case '0': abbr=0;
                break;


        default: abbr=1;
                 clrscr();
                 cout << "\n\n\n\t\t  Sie haben keine Schwierigkeitsstufe gewaehlt!";
                 cout << "\n\n\t\t Geben Sie bitte eine der genannten Stufen ein!";
                 getchar();
                 clrscr();
       }

} while (abbr != 0);       
}                         




void begr (void)
{
 cout << "\n\n\n\n";
 cout << "      -------------------------------------------------------------------\n";
 cout << "      |                                                                 |\n";
 cout << "      |                                                                 |\n";
 cout << "      |     ########  ##  ###    ##  ##  ##  ##  ###    ##  #######     |\n";
 cout << "      |     ##        ##  ## ##  ##  ## ##   ##  ## ##  ##  ##          |\n";
 cout << "      |     ########  ##  ##  ## ##  ###     ##  ##  ## ##  ##  ###     |\n";
 cout << "      |           ##  ##  ##    ###  ## ##   ##  ##    ###  ##   ##     |\n";
 cout << "      |     ########  ##  ##     ##  ##  ##  ##  ##     ##  #######     |\n";
 cout << "      |                                                                 |\n";
 cout << "      |                                                                 |\n";
 cout << "      |            ########  ##   ##  ##  #######  ########             |\n";
 cout << "      |            ##        ##   ##  ##  ##   ##  ##                   |\n";
 cout << "      |            ########  #######  ##  #######  ########             |\n";
 cout << "      |                  ##  ##   ##  ##  ##             ##             |\n";
 cout << "      |            ########  ##   ##  ##  ##       ########             |\n";
 cout << "      |                                                                 |\n";
 cout << "      |                                                                 |\n";
 cout << "      -------------------------------------------------------------------\n";
}


void begr2 (void)
{
 cout << "\n\n\n\n\n";
 cout << "\n\t       ____________________________________________________";
 cout << "\n\t      " <<char(186)<<"\t\t\t\t\t\t\t   "<<char(186);
 cout << "\n\t      " <<char(186)<<"\t\t\t\t\t\t\t   "<<char(186);
 cout << "\n\t      " <<char(186)<<"\t\t\tHerzlich Willkommen zu\t\t   "<<char(186);
 cout << "\n\t      " <<char(186)<<"\t\t\t\t\t\t\t   "<<char(186);
 cout << "\n\t      " <<char(186)<<"\t\t\t   SINKING SHIPS "<<char(184)<<"\t\t   "<<char(186);
 cout << "\n\t      " <<char(186)<<"\t\t\t\t\t\t\t   "<<char(186);
 cout << "\n\t      " <<char(186)<<"____________________________________________________"<<char(186);
 cout << "\n\n\n\n\n\n\n\n\n\n\t\t Ein Spiel von Julian Moehrlein und Florian Schmitt";
 }

//------------ leichte Spielstufe ------------------

void leicht (void)
{
 int x,y,ab,schuss;
 x=9, y=11, schuss=0;


 cout << "\n\t\t    ----------------------------------";
 cout << "\n\t\t    |  Gewaehlte Spielstufe: leicht  |";
 cout << "\n\t\t    ----------------------------------";
 cout << "\n\n\n Druecken Sie <ENTER> um mit dem Spiel zu beginnen.";

 getchar();
 clrscr();


          char spielfeld[8][8];                     
          memset(spielfeld, char (126) ,64);


          const char space3[] = {32,32,32,'\0'};           
          const char space6[] = {32,32,32,32,32,32,'\0'};  


          cout << "\n\n\n";
          cout << space3 << "Sinking Ships";
          cout << "\n\n\n\n";
          cout << space6 << "  1 2 3 4 5 6 7 8\n";
          cout << space6 << "  ---------------\n\n";     

          for(int i = 0; i < 8; i++)
          {
          cout << space3 << (char)(i + 65) << " | \t";
          for(int j = 0; j < 8; j++)
          {
          cout << spielfeld[i][j] << ' ';         
          }
          cout << '\n';
          }
   cout << "\n\n\nDruecken Sie <q> und dann <ENTER> zum abbrechen";
          gotoxy (x,y);


    

           do
                     {       
                     char ch=0;
                      if (kbhit()) ch=getch ();
                      {        
                      if (ch==72)
                       {

                                if (y>11)
                                {
                                 y=y-1;     
                                }

                          gotoxy (x,y);
                          ab=1;
                       }             ;
                      if (ch==80)
                       {


                               if (y<18)
                                {
                                 y=y+1;
                                }
                         gotoxy (x,y);
                         ab=1;
                      }
                      if (ch==77)
                       {

                               if (x<22)
                               {
                                x=x+2;       
                               }

                         gotoxy (x,y);
                         ab=1;
                       }
                      if (ch==75)
                       {

                                if (x>=11)
                                {
                                 x=x-2;
                                }

                         gotoxy (x,y);
                         ab=1;
                       }
                      if (ch==13)
                      {
                       cout << "x";
                       schuss=schuss+1;   
                       gotoxy (x=x,y);    
                      }

                      if (ch=='q')
                      {
                       ab=0;
                       clrscr();
                       cout << "\n\n\n\n\t Sie haben " << schuss << " mal geschossen.";  
                       break;      
                      }

                      

                      } 
                 }while (ab=1);    



          return ;

}





void mittel (void)
{
 int x,y,ab,schuss;
 x=9,y=11,schuss=0;

 int steuer;
 cout << "\n\t\t    ----------------------------------";
 cout << "\n\t\t    |  Gewaehlte Spielstufe: mittel  |";
 cout << "\n\t\t    ----------------------------------";
 cout << "\n\n\n Druecken Sie <ENTER> um mit dem Spiel zu beginnen.";


 getchar();
 clrscr();

          char spielfeld[10][10];                
          memset(spielfeld, char (126) ,100);



          const char space3[] = {32,32,32,'\0'};            
          const char space6[] = {32,32,32,32,32,32,'\0'};   


          cout << "\n\n\n";
          cout << space3 << "Sinking Ships";
          cout << "\n\n\n\n";
          cout << space6 << "  1 2 3 4 5 6 7 8 9 10\n";
          cout << space6 << "  --------------------\n\n";

          for(int i = 0; i < 10; i++)
          {
          cout << space3 << (char)(i + 65) << " | \t";
          for(int j = 0; j < 10; j++)
          {
          cout << spielfeld[i][j] << " ";
          }
          cout << '\n';


          }

     cout << "\n\n\nDruecken Sie <q> zum abbrechen";

           gotoxy (x,y);


                   do 
                     {
                     char ch=0;
                      if (kbhit()) ch=getch ();
                      {
                      if (ch==72)
                       {

                                if (y>11)
                                {
                                 y=y-1;
                                }

                          gotoxy (x,y);
                          ab=1;
                       }
                      if (ch==80)
                       {


                               if (y<20)
                                {
                                 y=y+1;
                                }
                         gotoxy (x,y);
                         ab=1;
                      }
                      if (ch==77)
                       {

                               if (x<26)
                               {
                                x=x+2;
                               }

                         gotoxy (x,y);
                         ab=1;
                       }
                      if (ch==75)
                       {

                                if (x>=11)
                                {
                                 x=x-2;
                                }

                         gotoxy (x,y);
                         ab=1;
                         }
                       if (ch==13)
                       {
                        cout << "x";
                        schuss=schuss+1;  
                        gotoxy (x=x,y);   
                       }

                        if (ch=='q')
                      {
                       ab=0;
                       clrscr();
                       cout << "\n\n\n\n\t Sie haben "<<schuss<<" mal geschossen."; 
                       break;       
                      }

                      }  

     } while (ab=1);   

   

          return;

}


//------------ schwere Spielstufe ------------------

void schwer (void)
{
 int x,y,ab,schuss;
 x=9,y=11,schuss=0;

 cout << "\n\t\t    ----------------------------------";
 cout << "\n\t\t    |  Gewaehlte Spielstufe: schwer  |";
 cout << "\n\t\t    ----------------------------------";
 cout << "\n\n\n Druecken Sie <ENTER> um mit dem Spiel zu beginnen.";

 getchar();
 clrscr();

          char spielfeld[12][12];               
          memset(spielfeld, char (126) ,144);


          const char space3[] = {32,32,32,'\0'};
          const char space6[] = {32,32,32,32,32,32,'\0'};


          cout << "\n\n\n";
          cout << space3 << "Sinking Ships";
          cout << "\n\n\n\n";
          cout << space6 << "  1 2 3 4 5 6 7 8 9 101112\n";
          cout << space6 << "  ------------------------\n\n";

          for(int i = 0; i < 12; i++)
          {
          cout << space3 << (char)(i + 65) << " | \t";
          for(int j = 0; j < 12; j++)
          {
          cout << spielfeld[i][j] << ' ';
          }
          cout << '\n';
          }

      cout << "\n\n\nDruecken Sie <q> zum abbrechen";

            gotoxy (x,y);

                 do  
                     {
                     char ch=0;
                      if (kbhit()) ch=getch ();
                      {
                      if (ch==72)
                       {

                                if (y>11)
                                {
                                 y=y-1;
                                }

                          gotoxy (x,y);
                          ab=1;
                       }
                      if (ch==80)
                       {


                               if (y<22)
                                {
                                 y=y+1;
                                }
                         gotoxy (x,y);
                         ab=1;
                      }
                      if (ch==77)
                       {

                               if (x<30)
                               {
                                x=x+2;
                               }

                         gotoxy (x,y);
                         ab=1;
                       }
                      if (ch==75)
                       {

                                if (x>=11)
                                {
                                 x=x-2;
                                }

                         gotoxy (x,y);
                         ab=1;
                       }
                      }
                       if (ch==13)  // enter
                       {
                        cout << "x";
                        schuss = schuss+1; 
                        gotoxy (x=x,y);    
                       }

                       if (ch=='q')
                      {
                       ab=0;
                       clrscr();
                       cout << "\n\n\n\n\t Sie haben "<<schuss<<" mal geschossen.";  
                       break;  
                      }


                }while (ab=1);  //ende do-while

         return;
}
```

und jetzt brauch ich noch das der Computer Schiffe setzt


----------



## Kachelator (23. Dezember 2004)

Bitte Codetags verwenden, damit die Formulierung nicht verlorengeht.
 [ CODE ] blablabla [ /CODE ]


----------



## dorado (23. Dezember 2004)

Ich hab mir deinen Code jetzt nicht durchgelesen, ist einfach zu unübersichtlich.
Aber das Setzen der Schiffe durch den Computer erledigst du durch Erzeugen von Zufallszahlen mit 
rand(..) (aber srand(..) nicht vergessen vor dem ersten Aufruf).
Den Bereich der Zufallszahl grenzt du mit dem Modulo Operator (%) ein.
z.B.:
Feldgrösse X=10, Y=15 -> Indexbereich 0-9 und 0-14
x = rand() % 10;   // Zahlen von 0 bis 9
y = rand() % 15;  // Zahlen von 0 bis 14


Gruss
  Dora


----------



## 9th Wonder (27. Dezember 2004)

Wenn du noch das Prog brauchst...
bin in der Tai und hatten auch das als Projekt...

meld dich einfach mal hkfella15@gmx.de


----------

