java - 如何根据用户输入将数字转移到空白空间?
问题描述
此代码是 15 拼图游戏的模拟。输出应该是:
我目前正处于尝试执行 switch 语句的阶段,以便根据用户输入将数字移动到空白空间。这是我尝试过的。谢谢你。
import java.util.ArrayList;
import java.util.Scanner;
public class Game {
public static void main(String[] args) {
int rowNum=4;
int colNum=4;
int[][] gameboard = new int[rowNum][colNum];
ArrayList<Integer> used = new ArrayList<Integer>();
int emptySlot = (int) (1 + Math.random() * 16);
for(int row = 0; row < rowNum; row++) {
for(int col = 0; col < colNum; col++) {
if(row*gameboard.length + col == emptySlot) {
System.out.print(" ");
continue; //skip empty slot
}
int number;
while(used.contains(number = (int) (1 + Math.random() * 15)));
used.add(number);
gameboard[row][col] = number;
System.out.printf("%-4d",gameboard[row][col]);
}
System.out.println();
}
System.out.println();
System.out.print("Enter a move: (l)eft, (u)p, (r)ight, (d)own, or (exit):");
Scanner sc = new Scanner(System.in);
int px=0;
int py=0;
String move = sc.nextLine();
switch (move) {
case "l":
px -= 1;
break;
case "u":
py +=1;
break;
case "r":
px += 1;
break;
case "d":
py -=1;
break;
case "exit":
break;
}
sc.close();
}
}
解决方案
看起来这是一个游戏,你应该添加一个游戏循环,我建议你阅读这个以完全理解什么是游戏循环:游戏循环
其次,我建议在你的拼图中使用“0”作为一个空槽,这使得事情变得更容易,找到 0 并使用你的 switch 语句改变它的位置,它的邻居在你的列表中。
不幸的是,基于您的问题意见,这与 stackoverflow 政策形成鲜明对比,我希望能回答所有问题。
推荐阅读
- .net - 不显示动态添加的控件
- windows-subsystem-for-linux - wsl ubuntu .bashrc 停止运行
- python - 使用 easywebdav 进行下载会导致文件损坏
- php - ajax 请求的 CSRF 保护
- python-3.x - 从列表中删除排列
- angular - Angular 6 - 滚动上的动画 Div
- javascript - 使用 jquery 更改 nth-child 上的导航链接颜色
- javascript - 传输字符串的值以运行函数
- azure-functions - v2 函数无法加载类型“Microsoft.Azure.WebJobs.QueueTriggerAttribute”
- html - 如何在 readme.md 中创建 HTML 代码块?