• 締切済み

JSPで15ゲーム作る課題なんだけど・・・・

全部そろってクリア表示をさせたいのですが、完成判定がうまくできません。 どなたか助けて・・・ //完成判定 int cnt=1,k=0,clear=0; for(i = 0; i < ss.length; i++){ for(j = 0; j < ss[i].length; j++){ if(Integer.toString(cnt)==ss[i][j]){ k = 1; break; } cnt++; } if(k == 1){ break; } } ここに完成判定させるif文を書いていました・・・ どこがいけなくて、どこがたりないのでしょうか? ちなみに、if(Integer.toString(cnt)==ss[i][j]){ は、System.outすると機能していません。でも、コンパイルエラーにもなりません。

みんなの回答

  • auty
  • ベストアンサー率58% (284/486)
回答No.2

「15ゲーム」がどんなものか忘れていたので調べてみました。 全部順番に並んでたら、完成ですね。 そうすると、並んでいるすなわち一致すれば、そこまではOKということが分かります。 このときは次のチェックに行きます。 並んでいないものが見つかったらもうだめです。つまり未完成ということが分かりました。 ここでループを抜け出します。そしてその情報は、kにセットしています。 さて間違いですが、ifの判定で、「異なっていたら」としなければなりません。並んでいないものが見つかったということです。これには、否定の!を使って、 if( !Integer.toString(cnt).equals(ss[i][j]) ) { k = 1; break; } とします。また最後も if(clear == 1){ out.print("clear"); ではありませんね。 そうです。k==0 のときが完成したときです。

kontikuwa
質問者

お礼

返信おそくなりました>< 丁寧な解説ありがとうございます。 おかげ様で完成いたしまし。 もっと勉強してautyさんに近づけるようにがんばりたいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • auty
  • ベストアンサー率58% (284/486)
回答No.1

確か先日もこの問題がテーマとなっていましたが、 文字列の比較は、 Integer.toString(cnt)==ss[i][j] ではできません。==は、参照の比較です。 今回、両者は同じオブジェクトを参照しているわけではないので常にfalseとなります。 文字列の比較は、 Integer.toString(cnt).equals(ss[i][j]) で行ってください。 なお、==が成り立てば、equalsは成立しますが、逆は必ずしも成り立ちません。

kontikuwa
質問者

お礼

回答ありがとうございます。 ==をequalsに変えて  k = 1;  clear=1;  break;  } ・ ・ ・ if(clear == 1){ out.print("clear"); としても、out.printされないです・・・>< ほかに完成判定させるロジックはないでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 現在学校のjavaの課題電卓を作っています

    import java.io.*; class dentaku { public static void main(String[] args)throws IOException { BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); System.out.print("式を入力"); String input = r.readLine(); String sum[] = new String[input.length()]; String number = ""; int s = 0; int goukei =0; char enzan = ' '; for(int i=0; i < input.length(); i++) { //System.out.print(str[i]); //文字列から1文字ずつ抽出 char num = input.charAt(i); if(i == input.length()-1) { sum[s] = number; } else { if(num == '+' || num == '-'|| num == '*'|| num == '/') { //配列sumに代入 sum[s] = number; s++; sum[s] = String.valueOf(num); s++; } else { //変数numberにnumを代入 number = number + num; } } } for(int j=0; j<sum.length; j++) { if(sum[j] == null) { break; } if(j == 0) { goukei = Integer.parseInt(sum[j]); } else { if(sum[j].equals("+") || sum[j].equals("-")|| sum[j].equals("*")|| sum[j].equals("/")) { enzan = sum[j].charAt(0); } else { switch(enzan) { case '+': goukei += Integer.parseInt(sum[j]); break; case '-': goukei -= Integer.parseInt(sum[j]); break; case '*': goukei *= Integer.parseInt(sum[j]); break; case '/': goukei /= Integer.parseInt(sum[j]); break; } } } } System.out.print(goukei); } } までできたのですが 実行し 実際に 1+1+1とうってみると答えが23になってしまいます。 どのようにしたらいいのでしょうか

    • ベストアンサー
    • Java
  • VB添削

    このプログラムは 例えば3 3 4とテキストボックスに数字が打ち込まれると 3×3行列が4個分 のテキストボックスがでてきます。 ここに数字を打ち込んでいき、ボタン2を押すと3×3のテキスト トボックスが出てくると同時に足し算した結果が出てくるようにしたいです。 以下のプログラムはできたところまで作成しています。 どこを直せばよいのでしょうか。 Public Class Form1 Private number As Integer Private rows As Integer Private columns As Integer Private Sub Form11_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load For i As Integer = 1 To 3 AddHandler Me.Controls("TextBox" & i).TextChanged, AddressOf TextBox_TextChanged Next End Sub Private Sub TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) If System.Text.RegularExpressions.Regex.IsMatch(CType(sender, TextBox).Text, "[^0-9]") Then MessageBox.Show("数字で入力してください", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error) With CType(sender, TextBox) .Text = .Text.Substring(0, .Text.Length - 1) .SelectionStart = .Text.Length End With End If Dim cnt1 As Integer Dim cnt2 As Integer Dim cnt3 As Integer If Integer.TryParse(TextBox1.Text, cnt1) And Integer.TryParse(TextBox2.Text, cnt2) And Integer.TryParse(TextBox3.Text, cnt3) Then For k = 1 To cnt3 For i = 1 To cnt1 For j = 1 To cnt2 Dim tb As TextBox = New TextBox() tb.Name = "tb" + i.ToString() Me.Controls.Add(tb) tb.Top = (i - 1) * 28 + 55 tb.Left = (j - 1) * 30 + 40 * (cnt2 * (k - 1)) + 10 tb.Width = 25 Next Next Next End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Bounds = New Rectangle(10, 10, 1350, 800) Me.AutoScroll = True End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim sum As Double Dim cnt As Integer = 0 For i As Integer = 1 To rows For j As Integer = 1 To columns Dim tb As TextBox = New TextBox() cnt += 1 : If cnt > rows * columns Then cnt = 1 tb.Name = "tb" + cnt.ToString Me.Controls.Add(tb) tb.Top = (i - 1) * 30 + (80 + 40 * rows) tb.Left = (j - 1) * 60 + 10 tb.Width = 40 sum = 0 For k As Integer = 1 To number sum += Double.Parse(CType(Me.Controls("tb" + (cnt + (rows * columns * (k - 1))).ToString()), TextBox).Text) Next tb.Text = sum.ToString() Next Next End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged End Sub End Class

  • 配列の中に複数存在する数がいくつあるか

    お世話になります。配列の中に同じ数が存在する数がいくつあるかを調べたいのですが、途中でつまづいてしまいました。 例えば配列arrayの中に、0, 0, 5, 0, 5, 1, 5といった数が格納されているとしたら 複数ある数は0と5の2つなので、2を返す、というだけのプログラムです。 int n=array.length; int cnt=0; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ if(array[i]==array[j]){ cnt++; break; } } } return cnt; forループで配列0から同じ数を順番に調べ、もしヒットすればカウントを増やして内側のループをブレイクし、配列1からまた順番に調べようとしたのですが、 上の例の場合、配列0と配列1が同じ数(0)ですので、カウントが余計に増えてしまいます。 どのように組めばうまく動作するでしょうか。宜しくお願いします。

    • ベストアンサー
    • Java
  • Integerで変換する前に、0~9までの数字か判別したいです。

    /* // 桁数入力 の処理の部分で、Integerで変換する前に、0~9までの数字かどうか判別したいです。 入力した文字が'0'~'9'までの文字かどうか判別し、 trueなら、int len = Integer.parseInt(line) で変換し、 lenが1~10までの数値かどうか判別し、trueならwhileを抜ける それ以外は、もう一度入力するプログラムなのですか、 うまく作れなくて困ってます。 コンパイルはできましたが、入力時に入力が入らない現象がおきました。Ctrl + C では戻れます。 ここのプログラムが間違っているのですが、 if (line.length() != 0 && '0' >= line.charAt(i) && line.charAt(i) <= '9') { 何かいい方法はありませんか? */ // 数当てゲーム import java.io.*; public class Kazuate { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); // 宣言 StringBuffer sb = new StringBuffer(); // ランダムで生成したlen桁の数値 → 文字列にしたもの String line = null; // 入力文字 int len = 0; // 答えの桁数 int n = 0; // ランダムの数値記憶用 int counter = 0; // 比較回数 int match = 0; // 位置と数字が一致した数 int hit = 0; // 数値が一致した数 int linecounter = 0; // 重複チェック用カウンタ // 桁数を入力 System.out.print("1~10桁の数値当てゲームです。\n" + "同じ数値は出ないようになっています。\n" + "何桁の数当てゲームをやりますか?\n" + "桁数(1~10までの値): "); while (true) { for (int i = 0; i < len; i++) { line = reader.readLine(); if (line.length() != 0 && '0' >= line.charAt(i) && line.charAt(i) <= '9'){ len = Integer.parseInt(line); if (Integer.parseInt(line) >= 0 && Integer.parseInt(line) <= 10) { break; } } System.out.print("入力が間違っています。\n" + "もう一度を入力して下さい。\n" + "桁数(1~10までの値): "); continue; } break; } // コンピュータが数を生成 do { n = (int)(Math.random() * 10); line = String.valueOf(n); if (sb.toString().indexOf(line) == -1 || sb.length() == 0) { sb.append(n); } } while (sb.length() != len); //デバッグ用に表示 System.out.println(sb.toString()); //数当て outer: while (true) { line = null; match = 0; hit = 0; counter++; System.out.print(counter + "回目の比較\n" + "答えは? :"); line = reader.readLine(); // 入力した桁数の間違いをチェック if (line.length() == 0 || line.length() != sb.length()) { System.out.println("桁数が違います。"); counter--; continue; } for (int i = 0; i < len; i++) { for (int j = i + 1; j < len; j++) { if (line.charAt(i) == line.charAt(j)) { System.out.println("同じ数値を入れないで下さい。"); counter--; continue outer; } } } // 入力した数値とコンピュータの生成した数値を比較 // matchとhitをカウント match = 0; hit = 0; for (int i = 0; i < len; i++) { if (sb.charAt(i) == line.charAt(i)) { match++; } for (int j = 0; j < len; j++) { if (sb.toString().charAt(i) == line.charAt(j)) { hit++; } } } // 判定・表示 if (sb.toString().equals(line) == false) { System.out.print("間違いです\n" + "match(位置と数字が一致した数) = " + match + "\n" + "hit(数値が一致した数) = " + hit + "\n"); } else { System.out.println("正解です。\n" + "答えは" + sb.toString() + "です\n" + "お疲れさまでした。"); break; } } } }

    • ベストアンサー
    • Java
  • C言語 エラー表示 break の位置が誤っている(関数 main ) 

    #include<stdio.h> int main(void){ int n,i,j,k; char c='*'; printf("正の整数:"); scanf("%d",&n); if(n>0){ for(i=1;i<=n;i++){ printf("%d",i); for(j=1;j<=n+1-i;j++){ if(j==1){ if(i-1>0){ for(k=i-1;k>0;k--){ printf(" "); } } } printf("%c",c); } printf("\n"); } } break; return 0; } これをコンパイルすると「break の位置が誤っている(関数 main )」と表示されるのですが何でですか? 困ってます↓

  • VBプログラム エラーが出ます

    Public Class Form1 Private number As Integer Private rows As Integer Private columns As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If Not Integer.TryParse(TextBox1.Text, rows) OrElse _ Not Integer.TryParse(TextBox2.Text, columns) OrElse _ Not Integer.TryParse(TextBox3.Text, number) Then MessageBox.Show("数字で入力してください", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If Me.Bounds = New Rectangle(10, 10, 1300, 800) Dim cnt As Integer = 0 For k As Integer = 1 To number For i As Integer = 1 To rows For j As Integer = 1 To columns Dim tb As TextBox = New TextBox() cnt += 1 tb.Name = "tb" + cnt.ToString() Me.Controls.Add(tb) tb.Top = (i - 1) * 30 + 80 tb.Left = (j - 1) * 60 + 70 * (columns * (k - 1)) + 10 tb.Width = 50 Next Next Next End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim sum As Double Dim cnt As Integer = 0 For i As Integer = 1 To rows For j As Integer = 1 To columns Dim tb As TextBox = New TextBox() cnt += 1 : If cnt > rows * columns Then cnt = 1 tb.Name = "tbA" + cnt.ToString Me.Controls.Add(tb) tb.Top = (i - 1) * 30 + (80 + 40 * rows) tb.Left = (j - 1) * 60 + 10 tb.Width = 40 sum = 0 For k As Integer = 1 To number sum += Double.Parse(CType(Me.Controls("tb" + (cnt + (rows * columns * k-1))).ToString(), TextBox).Text)    エラー Next tb.Text = sum.ToString() Next Next End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Do Until Me.Controls.Count <= 6 For Each tbD As Object In Me.Controls If CType(tbD, Control).Name Like "tb*" Then Me.Controls. Remove(tbD) Next Loop End Sub End Class エラーと書いている箇所 どう直したらよいのでしょうか。 縮小変換しないで呼び出されるアクセス可能なitemがないためオーバーロードの解決に失敗しました と出ます。 あとwindowsの画面の大きさを入力される値が小さければ少し小さいwindowsになるように変えたいのですがどうしたよいのでしょう。

  • VB2005で、Structureの配列を返すプログラムを以下のように書きたい

    VB2005で、Structureの配列を返すプログラムを以下のように書きたいのですが、そもそもVB6しか使ったことが無いもので、以下のような素数の結果を返すこのプログラムの書き方はVB2005らしいでしょうか? Module Module1 Public Structure SosuuStatus Public num As Integer Public status As String End Structure Class Sosuu Function SosuuCheck(ByVal st As Integer, ByVal ed As Integer) As SosuuStatus() Dim i As Integer, j As Integer Dim sosuu(0 To ed - st) As SosuuStatus Dim cnt As Integer = 0 For i = st To ed sosuu(cnt).num = i sosuu(cnt).status = "" '初期化 If 1 = i Then sosuu(cnt).status = "素数ではない" ElseIf 0 = (i Mod 2) Then sosuu(cnt).status = "素数ではない" Else For j = 3 To Math.Sqrt(ed) If 0 = (i / j) Then sosuu(cnt).status = "素数ではない" End If Next j End If If sosuu(cnt).status = "" Then sosuu(cnt).status = "素数である" End If cnt = cnt + 1 Next i SosuuCheck = sosuu End Function End Class End Module

  • 至急お願いします

    高専生です。 文字列で数字列を入力。 それを実数値に変換し そこから8進数に変換し 再び文字列とて出力したいです。 変換はできているのですが printf("%s",ss)が実行されると 正しい8進数の直後に文字化けまたは 0が出力されてしまい困っています。 例えば10進数の225は8進数では341ですが このプログラムでは出力が341'0'と0が付きます 同様に10進数12345は8進数では30071ですが これでは30071'ヨ@0'と意味不明な文字化けが付きます どうか解決法をご教授ください! 以下自分が組んだプログラム ______________________________________________________ #include<stdio.h> #include<string.h> void main(){ char s[5],ss[100]; int i=0,num=0,keta,hex=0,j=1,cnt1=1,k,x; while(1){ printf("5桁以内の文字列を入力せよ\n"); scanf("%s",&s); keta=strlen(s); //桁をカウントさせる if(keta>5){ printf("文字数不正\n"); } else { break;//条件満たしたら次へ } } while(1){ //桁数から1の倍数の数字を作ります 次のループのギミック j=j*10; cnt1++; if(cnt1>=keta){ break; } } while(1){ if(s[i]=='\0'){ break; } hex=s[i]-'0'; num=num+hex*j; j=j/10; ++i; //文字列で入力されたのを実数に直しました } printf("変換後=>%dです\n",num);//確認用表示 k=keta-1; for(;k>=0;k--){ int x=num%8; ss[k]='0'+x; num=num/8; } s[keta]='\0'; printf("%s%d",ss); ←ここです!!! return; }

  • C言語の課題で悩んでいます

    線形最小2乗法と直接探索法の併用により、あるデータを最小2乗近似によって係数を求めるプログラムを作りました。 プログラムを実行したところ以下の警告が出て悩んでいます。 114行目 互換性のないポインタ型からの引数 1 個の `sweep' を渡しますです 114行目 互換性のないポインタ型からの引数 5 個の `sweep' を渡しますです 分りやすいように114行目のところに@がつけてあります。 どなたかご指摘お願いします。 #include<stdio.h> #include<math.h> #define eps 1.e-5 void sweep(double *,double *,int,int,int *,int); void DSO(double *,double *,int *,double *,double *,int,int); void FUN(double *,double *,double *,int,double *,int *); int main(void) { double a[1],da[1],x[7],y[7]; int i,n,delta[1]; scanf("%d",&n); for(i=0;i<n;++i) scanf("%lf %lf",&x[i],&y[i]); scanf("%lf %lf",&a[0],&da[0]); printf("Iteration b(1) b(2) b(3) a f\n"); DSO(a,da,delta,x,y,1,n); } /*DSO*/ void DSO(double *pa,double *pda,int *pdelta,double *px,double *py,int m,int n) { double ak,akp,akm,f0,fp,fm; int k,j,iteration=0; for(k=0;k<m;++k){ *(pdelta+k)=1; } FUN(pa,px,py,n,&f0,&iteration); do{ j=0; for(k=0;k<m;++k){ ak=*(pa+k); akp=*(pa+k)+*(pda+k); akm=*(pa+k)-*(pda+k); if(*(pdelta+k)==1){ *(pa+k)=akp; FUN(pa,px,py,n,&fp,&iteration); if(f0>fp){ *(pdelta+k)=1; f0=fp; break; } else{ *(pa+k)=akm; FUN(pa,px,py,n,&fm,&iteration); if(f0>fm){ *(pdelta+k)=-1; f0=fm; break; } else{ j++; *(pa+k)=ak; } } } else{ *(pa+k)=akm; FUN(pa,px,py,n,&fm,&iteration); if(f0>fm){ *(pdelta+k)=-1; f0=fm; break; } else{ *(pa+k)=akp; FUN(pa,px,py,n,&fp,&iteration); if(f0>fp){ *(pdelta+k)=1; f0=fp; break; } else{ j++; *(pa+k)=ak; } } } } }while(j!=m); printf("*** SOLVED ***\n"); FUN(pa,px,py,n,&f0,&iteration); return; } /*Function for sum of square errors*/ void FUN(double *pa,double *px,double *py,int n,double *pf,int *pi) { double b[3],c[3][4],iwork[3],t[3],yi; int i,ILL; c[0][0]=n; c[0][1]=0.; c[0][2]=0.; c[0][3]=0.; c[1][1]=0.; c[1][2]=0.; c[1][3]=0.; c[2][2]=0.; c[2][3]=0.; for(i=0;i<n;i++){ c[0][1]+=log10(*(px+i)); c[1][1]+=log10(*(px+i))*log10(*(px+i)); c[0][2]+=pow(log10(*(px+i)),*(pa+0)); c[1][2]+=pow(log10(*(px+i)),*(pa+0)+1.); c[2][2]+=pow(log10(*(px+i)),2.**(pa+0)); c[0][3]+=*(py+i); c[1][3]+=*(py+i)*log10(*(px+i)); c[2][3]+=*(py+i)*pow(log10(*(px+i)),*(pa+0)); } c[1][0]=c[0][1]; c[2][0]=c[0][2]; c[2][1]=c[1][2]; sweep(c,t,3,4,iwork,ILL); @114行目 for(i=0;i<3;++i){ b[i]=c[i][3]; } *pf=0.; for(i=0;i<n;++i){ yi=b[0]+b[1]*log10(*(px+i))+b[2]*pow(log10(*(px+i)),*(pa+0)); *pf+=(*(py+i)-yi)*(*(py+i)-yi); } printf("%6d %12.3e%12.3e%12.3e%7.2f%11.2e\n", *pi,b[0],b[1],b[2],*(pa+0),*pf); ++*pi; return; } /*Gauss-Jordan method*/ void sweep(double *pa,double *pt,int n,int m,int *piwork,int ILL) { double max,w; int i,j,k,iw,p,q; for(i=0;i<n;++i){ max=fabs(*(pa+m*i)); for(j=0;j<n;++j){ if(max<fabs(*(pa+m*i+j)))max=fabs(*(pa+m*i+j)); } for(j=0;j<m;++j) *(pa+m*i+j)=*(pa+m*i+j)/max; } for(j=0;j<n;++j){ max=fabs(*(pa+j)); for(i=0;i<n;++i){ if(max<fabs(*(pa+m*i+j)))max=fabs(*(pa+m*i+j)); } *(pt+j)=max; for(i=0;i<n;++i) *(pa+m*i+j)=*(pa+m*i+j)/max; } for(i=0;i<n;++i){ *(piwork+i)=i; } for(k=0;k<n;++k){ max=fabs(*(pa+m*k+k)); p=k; q=k; for(j=k;j<n;++j){ for(i=k;i<n;++i){ if(max<fabs(*(pa+m*i+j))){ max=fabs(*(pa+m*i+j)); p=i; q=j; } } } if(max<=eps){ ILL=1; printf("MATRIX IS ILL\n"); return; } for(i=0;i<n;++i){ w=*(pa+m*i+k); *(pa+m*i+k)=*(pa+m*i+q); *(pa+m*i+q)=w; } for(j=k;j<m;++j){ w=*(pa+m*k+j); *(pa+m*k+j)=*(pa+m*p+j); *(pa+m*p+j)=w; } i=*(piwork+k); *(piwork+k)=*(piwork+q); *(piwork+q)=i; for(j=k+1;j<m;++j){ *(pa+m*k+j)=*(pa+m*k+j)/(*(pa+m*k+k)); } for(i=0;i<n;++i){ if(i!=k){ for(j=k+1;j<m;++j){ *(pa+m*i+j)=*(pa+m*i+j)-*(pa+m*i+k)*(*(pa+m*k+j)); } } } } for(j=n;j<m;++j){ for(i=0;i<n;++i){ iw=*(piwork+i); *(pa+m*iw+n-1)=*(pa+m*i+j); } for(i=0;i<n;++i){ *(pa+m*i+j)=*(pa+m*i+n-1)/(*(pt+i)); } } return; }

  • Excel VBAライフゲーム

    ExcelのVBAでライフゲームを作りたいのですが、次のプログラムの途中以降がわかりません。 もしよろしければ、このつづきの簡単な実行できるVBAライフゲームを教えてください。 続きのプログラムを教えていただけたら幸いです。 Option Explicit Const ALIVE As Integer = 1 Const DEAD As Integer = 0 Const SIZE As Integer = 19 Const Tmax As Integer = 100 Dim C(SIZE, SIZE) As Integer Sub LifeGame() Dim InitRate As Single Dim T As Integer Dim N As Integer Dim Cnext(SIZE, SIZE) As Integer Dim I As Integer, J As Integer InitRate = -1 Do While InitRate < 0 Or 1 < InitRate Loop For I = 0 To SIZE For J = 0 To SIZE If Rnd() < InitRate Then C(I, J) = ALIVE Else C(I, J) = DEAD End If Next J Next I For T = 1 To Tmax For I = 0 To SIZE For J = 0 To SIZE If C(I, J) = ALIVE Then Cells(I + 1, J + 1).Value = "■" Else Cells(I + 1, J + 1).Vallue = "" End If Next J Next I For I = 0 To SIZE For J = 0 To SIZE N = Count(I, J) Next J Next I For I = 0 To SIZE For J = 0 To SIZE C(I, J) = Cnext(I, J) Next J Next I Next T End Sub Function Count(I As Integer, J As Integer) As Integer End Function