-3

これは、私が割り当てられたコードです。タスクは、コードの何が問題なのかを見つけることです。このコードは、「Conway's Game of Life」を実装することになっています: http://en.wikipedia.org/wiki/Conway 's_Game_of_Life エラーの場所がわかりません。

import java.util.Scanner;
import javax.swing.JFrame;

public class GameOfLife {

    public static void main(String[] args) {
        final int testCase = 1;

        JFrame frame = new JFrame();
        frame.setSize(500, 500);
        frame.setTitle("Conway's Game of Life");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Cell[][] universe = new Cell[100][100];
        for (int x = 0; x < universe.length-1; x++) {
            for (int y = 0; y < universe[x].length-1; y++) {
                universe[x][y] = new Cell();
            }
        }

        if (testCase == 1) {
            universe[3][2].calculateNext(3);
            universe[3][2].updateCurrent();
            universe[3][3].calculateNext(3);
            universe[3][3].updateCurrent();
            universe[3][4].calculateNext(3);
            universe[3][4].updateCurrent();
        } else if (testCase == 2) {
            universe[49][50].calculateNext(3);
            universe[49][50].updateCurrent();
            universe[49][51].calculateNext(3);
            universe[49][51].updateCurrent();
            universe[50][49].calculateNext(3);
            universe[50][49].updateCurrent();
            universe[50][50].calculateNext(3);
            universe[50][50].updateCurrent();
            universe[51][50].calculateNext(3);
            universe[51][50].updateCurrent();
        } else {
        }

        UniverseComponent component = new UniverseComponent(universe);
        frame.add(component);

        frame.setVisible(true);

        Scanner in = new Scanner(System.in);
        String input = in.nextLine();
        while (input.length() == 0) {
            int neighborCount = 0;
            for (int x=1; x<universe.length-2; x++) {
                for (int y=1; y<universe[x].length-2; y++) {
                    neighborCount = 0;
                    if (universe[x-1][y-1].isAlive()) {
                        neighborCount++;
                    }
                    if (universe[x-1][y].isAlive()) {
                        neighborCount++;
                    }
                    if (universe[x-1][y+1].isAlive()) {
                        neighborCount++;
                    }
                    if (universe[x][y-1].isAlive()) {
                        neighborCount++;
                    }
                    if (universe[x][y+1].isAlive()) {
                        neighborCount++;
                    }
                    if (universe[x+1][y-1].isAlive()) {
                        neighborCount++;
                    }
                    if (universe[x+1][y].isAlive()) {
                        neighborCount++;
                    }
                    if (universe[x+1][y+1].isAlive()) {
                        neighborCount++;
                    }
                    universe[x][y].calculateNext(neighborCount);
                }
            }
            for (int x=1; x<universe.length-2; x++) {
                for (int y=1; y<universe[x].length-2; y++) {
                    universe[x][y].updateCurrent();
                }
            }
            component.repaint();
            input = in.nextLine();
        }
        in.close();
    }
4

1 に答える 1

2

私はあなたに代わってあなたの任務を遂行するつもりはありません (エラーを見つけてください)。しかし、ここに戦略があります:

  1. コードはコンパイルされますか? そうでない場合は、修正してください。
  2. プログラムは実行時にクラッシュしますか? その場合は、スタック トレースで手がかりを探します。次に、デバッガーを使用します。
  3. プログラムがクラッシュせずに実行されてもゲームが適切に進行しない場合は、予想される結果を手で計算できる単純なライフ ゲーム構成を試して、コードの動作が異なる場所を探します。

手順 2 と 3 では、デバッガーの使用の基本を習得することが重要です。幸運を。

于 2013-03-01T00:33:06.493 に答える