将生命游戏"demo进行重构,包括如下子任务:
1、将arr数组改造为GameOfLife类的成员变量,并在构造函数中对其初始化
2、countLivingNeighbors、 getNextVal upd ateNextState. printMatrix改造为GameOfLife的成员函数
3、尝试将该demo移植到独立线程下执行:每隔若干毫秒执行一次更新并打印提示:
import java.util.*;
// 必须定义 `ShowMeBug` 入口类和 `public static void main(String[] args)` 入口方法
public class ShowMeBug {
public static void main(String[] args) {
GameOfLife life = new GameOfLife(arr);
Thread t = new Thread(life);
while(true){
t.sleep(1000);
t.start();
}
System.out.println("Hello World!");
}
}
class GameOfLife implements Runnable{
public final int[][] arr;
public GameOfLife(int[][] arr){
this.arr = arr;
}
public void updateNextState(int[][] arr){
int m = arr.length;
int n = arr[0].length;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
arr[i][j] = getNextVal(arr,i,j);
}
}
}
public int getNextVal(int[][] arr,int i,int j){
countLivingNeighbors(arr,i,j);
}
public int countLivingNeighbors(int[][] arr, int i,int j){
.....
}
public void printMatrix(){
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[0].length;j++){
System.out.println(arr[i][j] + " ");
}
System.out.println();
}
}
@Override
public void run(){
updateNextState(arr);
printMatrix();
}
}