首页 > 解决方案 > 如何根据用户输入将数字转移到空白空间?

问题描述

此代码是 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();
    }   

 }

标签: javamultidimensional-array

解决方案


看起来这是一个游戏,你应该添加一个游戏循环,我建议你阅读这个以完全理解什么是游戏循环:游戏循环

其次,我建议在你的拼图中使用“0”作为一个空槽,这使得事情变得更容易,找到 0 并使用你的 switch 语句改变它的位置,它的邻居在你的列表中。

不幸的是,基于您的问题意见,这与 stackoverflow 政策形成鲜明对比,我希望能回答所有问题。


推荐阅读