Game of Life
Vorführaufgabe 07 · C
- Datei: vorfuehraufgabe07.c
- Stand:
- Umfang: 100 Zeilen
Anmerkung 2026: Bindet die Header-Datei MyConIO.h ein, die nicht Teil der Veröffentlichung war.
#include <stdio.h>
#include "MyConIO.h"
void clear_field(char field[79][25])
{
int x,y;
for(x=0;x<79;x++)
for(y=0;y<25;y++)
field[x][y]=' ';
}
void sow_field(char field[79][25])
{
int x,y;
char Dateiname[12],zeile[79];
FILE *vorgabe;
printf("Dateiname: ");
scanf("%s",&Dateiname);
vorgabe = fopen(Dateiname,"r");
for(y=0;y<25;y++)
{
fscanf(vorgabe,"%s",&zeile);
for(x=0;x<79;x++)
{
field[x][y]=zeile[x];
}
}
}
void display_field(char field[79][25])
{
int x,y;
mc_gotoxy(1,1);
for(x=0;x<79;x++)
for(y=0;y<25;y++)
{
mc_gotoxy(x,y);
putchar(field[x][y]);
}
}
char get_field(int x,int y,char field[79][25])
{
if (x==-1) x=78;
if (y==-1) y=24;
if (x==79) x=0;
if (y==25) y=0;
return field[x][y];
}
void advance_generation(char field[79][25])
{
int x,y;
char status[79][25];
for(x=0;x<79;x++)
for(y=0;y<25;y++)
{
status[x][y]=0;
if (get_field(x-1,y-1,field)=='#') status[x][y]=status[x][y]+1;
if (get_field(x ,y-1,field)=='#') status[x][y]=status[x][y]+1;
if (get_field(x+1,y-1,field)=='#') status[x][y]=status[x][y]+1;
if (get_field(x-1,y ,field)=='#') status[x][y]=status[x][y]+1;
if (get_field(x+1,y ,field)=='#') status[x][y]=status[x][y]+1;
if (get_field(x-1,y+1,field)=='#') status[x][y]=status[x][y]+1;
if (get_field(x ,y+1,field)=='#') status[x][y]=status[x][y]+1;
if (get_field(x+1,y+1,field)=='#') status[x][y]=status[x][y]+1;
}
for(x=0;x<79;x++)
for(y=0;y<25;y++)
{
if ((status[x][y]==2) || (status[x][y]==3))
{
if (status[x][y]==3) field[x][y]='#';
}
else
{
field[x][y]=' ';
}
}
}
int main(void)
{
char spielfeld[79][25];
clear_field(spielfeld);
sow_field(spielfeld);
mc_init();
mc_clrscr();
do
{
advance_generation(spielfeld);
display_field(spielfeld);
mc_delay(100);
}
while (!mc_keypressed());
mc_exit();
return 0;
}