关灯游戏
基本设计算法
0为关灯,1为开灯。
用户输入行和列号,等全部的数字都统一为0时获胜。
第一步:用二维数组创建棋盘。由于new之后开辟了内存,都默认是0。所以在二维数组中随便改变几个元素让他为1.等用户让棋盘全部为0时,就可以获胜了。
第二步:改变用户点击的数字和他周围的数字,这时候要考虑临界值的问题。
第三步:在主方法中让用户不断输入,直到他成功为止。
代码实现
int bb[][]={
{0,0,0,0,0,0},
{0,0,0,1,0,0},
{0,0,1,1,1,0},
{0,0,0,1,0,0},
{0,0,0,0,0,0}
};
Scanner sc=new Scanner(System.in);
int sun=0;
while(true){
for(int i=0;i<bb.length;i++){
for(int j=0;j<bb[i].length;j++){
System.out.print(bb[i][j]+" ");
}
System.out.println();
}
System.out.println("请输入您点击的行");
int r=sc.nextInt();
System.out.println("请输入您点击的列");
int c=sc.nextInt();
bb[r][c]=1-bb[r][c];
if(r-1>=0){
bb[r-1][c]=1-bb[r-1][c];
}
if(r+1<bb.length){
bb[r+1][c]=1-bb[r+1][c];
}
if(c-1>=0){
bb[r][c-1]=1-bb[r][c-1];
}
if(c+1<bb[r].length){
bb[r][c+1]=1-bb[r][c+1];
}
for(int i=0;i<bb.length;i++){
for(int j=0;j<bb[i].length;j++){
sun+=bb[i][j];
System.out.print(bb[i][j]+" ");
}
System.out.println();
}
if(sun==0){
break;
}
}
System.out.println("恭喜过关");
输出结果
0 0 0 0 0 0
0 0 0 1 0 0
0 0 1 1 1 0
0 0 0 1 0 0
0 0 0 0 0 0
请输入您点击的行
2
请输入您点击的列
3
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
恭喜过关