AcidR4in
Ensign
- Registriert
- Juli 2005
- Beiträge
- 175
hi leute ich bin dabei ganz einfach ein spiel des lebens zuprogramieren falls jemand nicht weiß was das ist link
nur habe ich irgendwo ein bug/denkfehler ich weiß es nicht, ich hoffe ihr könnt mir helfen
also ich bin mir fast sicher dass der fehler in der funktion gen liegt aber ich weiß nicht genau wo vielleicht könnt ihr mir helfen
ps wenn mann aus dem organismen eintippen rauswill was über 20 eigeben (wird aber noch geändert)
nur habe ich irgendwo ein bug/denkfehler ich weiß es nicht, ich hoffe ihr könnt mir helfen
Code:
//////////////////////////////////////////////////////////////////////////
//////////////////////////conways game of life////////////////////////////
//////////////////////////////////////////////////////////////////////////
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////////////////////
//////////////////////umgebungs counter///////////////////////////////////
//////////////////////////////////////////////////////////////////////////
int life[20][20]={};
int zaehler(int x,int y){
int zaehl = 0;
if (life [x-1][y-1] ==1) {
zaehl=zaehl+1;
}
if (life [x-1][y] ==1) {
zaehl=zaehl+1;
}
if (life [x-1][y+1] ==1) {
zaehl=zaehl+1;
}
if (life [x][y-1] ==1) {
zaehl=zaehl+1;
}
if (life [x][y+1] ==1) {
zaehl=zaehl+1;
}
if (life [x+1][y-1] ==1) {
zaehl=zaehl+1;
}
if (life [x+1][y] ==1) {
zaehl=zaehl+1;
}
if (life [x+1][y+1] ==1) {
zaehl=zaehl+1;
}
return(zaehl);
}
//////////////////////////////////////////////////////////////////////////
//////////////////////generations berechner///////////////////////////////
//////////////////////////////////////////////////////////////////////////
int gen(int n) {
int x=0,y=0,zaehlgen=0;
if (n>0) {
do {
if(life[x][y]==0){ // freies feld
// zaehlgen=zaehler(x,y);
if (zaehler(x,y)==3){
life[x][y]=1;
}
else;
}
else { // organismus
// zaehlgen=zaehler(x,y);
if ((zaehler(x,y)!= 3) && (zaehler(x,y)!= 2)){
life[x][y]=0;
}
else;
}
x=x+1;
if (x==20){
x=0;
y=y+1;
}
} while(x<=20 && y<=20);
do{ // ausgabe
if (life[x][y]== 1) {
cout << "X|";
}
else {
cout << " |";
}
x=x+1;
if (x==20){
cout << "\n";
x=0;
y=y+1;
}
} while(x<=20 && y<=20);
return (gen(n-1));
} // ende der obersten if-anweisugn
else
do {
if(life[x][y]==0){ // freies feld
zaehlgen=zaehler(x,y);
if (zaehlgen==3){
life[x][y]=1;
}
}
else { // organismus
zaehlgen=zaehler(x,y);
if ((zaehlgen!= 3) && (zaehlgen!= 2)){
life[x][y]=0;
}
}
x=x+1;
if (x==20){
x=0;
y=y+1;
}
} while(x<=20 && y<=20);
do{ // ausgabe
if (life[x][y]== 1) {
cout << "X|";
}
else {
cout << " |";
}
x=x+1;
if (x==20){
cout << "\n";
x=0;
y=y+1;
}
} while(x<=20 && y<=20);
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////main////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
int main () {
int n,x=0,y=0;
while(1) {
while ((x>=0 && x<=20)&& (y>=0 && y<=20)) { // beschriften
cout << "Bitte geben Sie die lebenden organismen an (x,y): ";
cin >> x >> y;
life[x][y] = 1;
}
x=0;
y=0;
do{ // ausgabe
if (life[x][y]== 1) {
cout << "X|";
}
else {
cout << " |";
}
x=x+1;
if (x==20){
cout << "\n";
x=0;
y=y+1;
}
} while(x<=20 && y<=20);
x=y=0;
cout << "Fuer wieviele Generationen soll das Game of life berechnert werden? ";
cin >> n;
cout << gen(n);
//cout << zaehler(0,0);
system("pause");
do{ // array leeren
life[x][y] = 0;
x=x+1;
if (x==20){
x=0;
y=y+1;
}
} while(x<=20 && y<=20);
x=0;
y=0;
}
}
also ich bin mir fast sicher dass der fehler in der funktion gen liegt aber ich weiß nicht genau wo vielleicht könnt ihr mir helfen
ps wenn mann aus dem organismen eintippen rauswill was über 20 eigeben (wird aber noch geändert)