[WaTor]

Mind_Freak

Grünschnabel
Hallo Leute,

Ich bin neu hier und hab gleich mal eine frage zu dem "Spiel" WaTor.
Und zwar wollte ich fragen ,warum meine Fische sich nicht zufällig irgendwo hinbewegen, sondern immer nur diagonal sich bewegen.
ich hab es mit random() versucht, aber es klappt nicht, wäre nett , wenn mir jmd mal ein Tipp geben würde oder eine andere Denkweise vielleicht.

Hier ist der Quelltext:
Code:
#include <cstdlib>
#include <iostream>
#include <time.h>
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>


using namespace std;

struct Bewohner 
{
string figur;
int zaehler; 
bool bewegt;     
};


int const MAX_LAENGE=8;


int move(int pos, int pos2)
{
    unsigned srand(time(NULL));
    int i = rand()%4;
    
    if(i==0)
    {
       if(pos!=(MAX_LAENGE-1))
       {
       pos=pos+1;
       return pos;
       }
       else
       {
       pos=0;
       return pos;
       }
    }
    
    if(i==1)
    {
       if(pos!=0)
       {
       pos=pos-1;
       return pos;
       }
       else
       {
       pos=(MAX_LAENGE-1);
       return pos;
       }
    }
    
    if(i==2)
    {
       if(pos2!=(MAX_LAENGE-1))
       {
       pos2=pos2+1;
       return pos;
       }
       else
       {
       pos2=0;
       return pos2;
       }
    }
    
    if(i==3)
    {
       if(pos2!=0)
       {
       pos2=pos2-1;
       return pos2;
       }
       else
       {
       pos2=(MAX_LAENGE-1);
       return pos2;
       }
    }
      
}      




int main(int argc, char *argv[])
{
    
    Bewohner fisch;
    fisch.figur = "o)=(";
    fisch.zaehler = 6;
    fisch.bewegt=false;
    
    Bewohner hai;
    hai.figur = "o##(";
    hai.zaehler = 8;
    hai.bewegt=false;
    
    Bewohner wasser;
    wasser.figur ="~~~~";

    
    
    Bewohner feld[MAX_LAENGE][MAX_LAENGE];
   
    for (int i=0; i<MAX_LAENGE;i++)
      for (int j=0; j<MAX_LAENGE; j++)
        feld[i][j] = wasser; 
      
   
 // der Planet erhält einen Fisch und einen Hai   
   feld[2][4] =  fisch;
   feld[MAX_LAENGE-1][MAX_LAENGE-1] =  hai;
   
nochmal:;
 if(cin.get())
 {
  system("CLS");
  for(;;)//  endlosschleife
  {             
    // hier kommt die Ausgabe...    
    cout << "\n";
    cout << "\n"<<"--------------------Matrix Fisch-------------------"<<"\n";     
    
     
    for (int i=0; i<MAX_LAENGE;i++)
    {
      cout <<"\n";  
      for (int j=0; j<MAX_LAENGE; j++)
      {
          cout << feld[i][j].figur;
      }
    }
   
    //  Ende Ausgabe
    
    //    Fische  bewegen sich....
   for (int i=0; i<MAX_LAENGE;i++)
    {
      for (int j=0; j<MAX_LAENGE; j++)
      {
        if ((feld[i][j].figur == "o)=(")&&(feld[i][j].bewegt==false))
        {
            int neu_pos = move(i,j);
  
  
             feld[neu_pos][neu_pos]=fisch;
             feld[i][j]=wasser; 
             fisch.bewegt=true;
        }//end if                  
      }//end for
    }//end for 
    cout << "\n";
    cout << "\n"<<"---------------------------------------------------"<<"\n";
    
       for (int i=0; i<MAX_LAENGE;i++)
    {
      for (int j=0; j<MAX_LAENGE; j++)
      {
        if ((feld[i][j].figur == "o##(")&&(feld[i][j].bewegt==false))
        {
             int neu_pos = move(j,i);


             feld[neu_pos][neu_pos]=hai;
             feld[i][j]=wasser; 
             hai.bewegt=true;
        }//end if                  
      }//end for
    }//end for    
 
   
    for (int i=0; i<MAX_LAENGE;i++)
    {
      for (int j=0; j<MAX_LAENGE; j++)
      {
        if ((feld[i][j].figur == "o)=(")||(feld[i][j].figur=="o##("))
        {
             feld[i][j].bewegt=false; 
        }
      }
    }
     


   goto nochmal;
  }// end for
}
    system("PAUSE");
    return EXIT_SUCCESS;
}

MFG

Mind_Freak;-)
 
Zuletzt bearbeitet:
hi ich habe auch Wator-Spiel, dass der Fisch und Hai schwimmt.hier
Code:
#include <cstdlib>
#include <iostream>
#include <time.h>
#include <stdio.h>
#include <windows.h>


using namespace std;

struct Bewohner 
{
string figur;
int zaehler;   //Vermehrung
bool bewegt; 
int hunger;     
};


int const MAX_LAENGE=9;


int move_1_links(int pos)
{
    if (pos >0)
    {
       pos = pos-1;     
       return (pos);
    }
    else 
       return (MAX_LAENGE-1);
}// bewege_horizontal_links        


int main(int argc, char *argv[])
{
    
    int a1=6;
   
    
        
    Bewohner fisch;
    fisch.figur = "o)=(";
    fisch.zaehler = 6;
    fisch.bewegt=false;
    fisch.hunger=6;
    
    Bewohner hai;
    hai.figur = "o##(";
    hai.zaehler = 8;
    hai.bewegt=false;
    
    Bewohner wasser;
    wasser.figur ="~~~~";

    
    
    Bewohner feld[MAX_LAENGE][MAX_LAENGE];
   
    for (int i=0; i<MAX_LAENGE;i++)
    {
      for (int j=0; j<MAX_LAENGE; j++)
      {
        feld[i][j] = wasser; 
      }
    } 
   
 // der Planet erhält einen Fisch und einen Hai   
   feld[4][2] =  fisch;// hier kann man bestimmen, wo der Fisch anfangen zu schwimmen
   feld[MAX_LAENGE-1][MAX_LAENGE-1] =  hai;
   

 
  for(;;)//  endlosschleife
  {
    // hier kommt die Ausgabe...    
    cout << "\n";
    cout << "\n"<<"--------------------Matrix Fisch-------------------"<<"\n";     
 
     
     
     
    for (int i=0; i<MAX_LAENGE;i++)
    {
      cout <<"\n";  
      for (int j=0; j<MAX_LAENGE; j++)
      {
          cout << feld[i][j].figur;
      }
    }
   
    //  Ende Ausgabe
    
    //   Hai bewegt sich....
   for (int i=0; i<MAX_LAENGE;i++)
    {
      for (int j=0; j<MAX_LAENGE; j++)
      {
        if ((feld[i][j].figur == "o##(")&&(feld[i][j].bewegt==false))
        {
             int neu_pos = move_1_links(j);
          
             feld [i][neu_pos]=hai;
             feld[i][j]=wasser; 
             hai.bewegt=true;
             
            
      
      
        }//end if                  
      }//emd for
    }//end for 
////////////////////////////////////////////////////////////////////////////   
   // Der Fisch bewegt sich....
    for (int i=0; i<MAX_LAENGE;i++)
    {
      for (int j=0; j<MAX_LAENGE; j++)
      {
        if ((feld[i][j].figur == "o)=(")&&(feld[i][j].bewegt==false))
        {
             int neu_pos = move_1_links(i);
          //   cout <<i<<" ";
          //   cout<< neu_pos;
           //  system("PAUSE");
             feld[neu_pos][j]=fisch;
             feld[i][j]=wasser; 
             fisch.bewegt=true;
        }//end if              
    /*    if((feld[i][j] ==6 )&&(feld[i][j].figur =="o)=("))
        {
                       //Hier muss man noch machen...
        }        
      */  
            
      }//emd for
////////////////////////////////////////////////////////////////////////////////      
      
      
    }//end for 
    cout << "\n";
    cout << "\n"<<"---------------------------------------------------"<<"\n";
       
 
   
    for (int i=0; i<MAX_LAENGE;i++)
    {
      for (int j=0; j<MAX_LAENGE; j++)
      {
        if ((feld[i][j].figur == "o)=(")||(feld[i][j].figur=="o##("))
        {
             feld[i][j].bewegt=false;
        }//end if                  
      }//emd for
    }//end for   
     
    cout << "\n";
    cout << "\n"<<"---------------------------------------------------"<<"\n";
      
   
   //int z;
  // cin >> z;
   Sleep(1000);// Verzögerung
   system("CLS"); //  Löscht alles, was davor passiert ist und fängt nochmal von vorne an.
  }// end for

 

    system("PAUSE");
    return EXIT_SUCCESS;
}
 

Neue Beiträge

Zurück