000
30.05.2008, 16:38 Uhr
Mind_Freak
|
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; }
|
Bitte helft mir, ich verzweifle
MFG
MIND_FREAK |