まず、
#include <stdio.h> #define VT 10 #define HZ 10 int next [VT][HZ]; int now [VT][HZ]={{0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,0,0,0,0}, {0,0,0,0,0,0,1,0,0,0}, {0,0,0,0,0,1,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}}; void calc_cell(int v,int h){ int work; work=now[(v+VT-1)%VT][(h+HZ-1)%HZ]+now[(v+VT-1)%VT][(h+HZ)%HZ]+now[(v+VT-1)%VT][(h+HZ+1)%HZ] +now[(v+VT)%VT][(h+HZ-1)%HZ] +now[(v+VT)%VT][(h+HZ+1)%HZ] +now[(v+VT+1)%VT][(h+HZ-1)%HZ]+now[(v+VT+1)%VT][(h+HZ)%HZ]+now[(v+VT+1)%VT][(h+HZ+1)%HZ]; next[v][h]==0; if(now [v][h]==0 && work==3)next[v][h]==1; if(now [v][h]== 1 && work==2 || work == 3) next[v][h]==1; } void copystatus(void) { int v,h; for( v=0;v<VT;v++) for(h=0;h<HZ;h++) now[v][h]=next[v][h]; } void showstatus(void){ int v,h; for(v = 0; v< VT; v++) { for(h= 0; h<HZ; h++) if(now[v][h]==1)printf("*"); else printf(" "); printf("\n"); } } void cls() { printf("\033[2J"); } main() { int v,h;char com='c'; while(com!='q'){ cls();showstatus(); for(v=0;v<VT;v++) for(h=0;h<HZ;h++)calc_cell(v,h); copystatus(); printf("続ける:n セーブ:s ロード:l 戻る:r 終了:q\n"); scanf("%s",&com); } }といったライフゲームをつくりました。
これを、
セーブとロードと1つ前に戻るを可能にしたいのです。
ファイルの入出力をつかって
FILE *fout;
fout=fopen("diskfile","w");でセーブ、wをrにしてロードをつくるようなことを考えているのですが、できませんでした。
それと、1つ戻るは今のところ考えつきません。逆のことをやるようにするとは思うのですが。
いろいろ調べてはみたのですが、分かりませんでした。すみませんが、どなたか教えてください。お願いします。