【发布时间】:2018-11-11 17:34:52
【问题描述】:
所以基本上我试图找到一种方法来执行一个代码块,当我按下一个键而不是必须扫描一个字符串然后按回车来调用它。这是我第一次在这里提问,在代码方面我也不是很进步。只是尝试学习可以提高我的编码知识的新事物。这是我当前的代码:
主要方法(我试图改变我在变量“key”中扫描的部分):
import java.util.Scanner;
public class testGame {
public static void main(String[] args) {
// TODO Auto-generated method stub
dungeon numberOne = new dungeon();
String key;
numberOne.setPlayer();
numberOne.printLayout();
Scanner input = new Scanner(System.in);
for(int x = 0; x < Integer.MAX_VALUE; x++)
{
key = input.next();
if(key.equals("w"))
{
numberOne.moveUp();
numberOne.printLayout();
}
else if(key.equals("d"))
{
numberOne.moveRight();
numberOne.printLayout();
}
else if(key.equals("s"))
{
numberOne.moveDown();
numberOne.printLayout();
}
else if(key.equals("a"))
{
numberOne.moveLeft();
numberOne.printLayout();
}
else
{
numberOne.printLayout();
}
}
}
}
助手类:
public class dungeon {
private monster[] randMonster = new monster [10];
private String printDungeon ="";
private int x = 17;
private int y = 34;
private String pastLayout = "H";
private String currentPostion = "O";
private String[][] layout = //I deleted this as it was long. It was an
ASCII art layout..
public void printLayout()
{
for(int x = 0; x < layout.length; x ++)
{
for(int y = 0; y < layout[0].length; y++)
{
printDungeon = printDungeon + layout[x][y];
}
System.out.println(printDungeon);
printDungeon = "";
}
}
public void setPlayer()
{
layout[x][y] = "O";
}
public void moveUp()
{
if(layout[x-1][y].equals("#"))
{}
else
{
layout[x][y]=pastLayout;
pastLayout = layout[x-1][y];
layout[x-1][y] = currentPostion;
x--;
}
}
public void moveDown()
{
if(layout[x+1][y].equals("#"))
{}
else
{
layout[x][y]=pastLayout;
pastLayout = layout[x+1][y];
layout[x+1][y] = currentPostion;
x++;
}
}
public void moveLeft()
{
if(layout[x][y-1].equals("#"))
{}
else
{
layout[x][y]=pastLayout;
pastLayout = layout[x][y-1];
layout[x][y-1] = currentPostion;
y--;
}
}
public void moveRight()
{
if(layout[x][y+1].equals("#"))
{}
else
{
layout[x][y]=pastLayout;
pastLayout = layout[x][y+1];
layout[x][y+1] = currentPostion;
y++;
}
}
}
【问题讨论】:
-
Detect a key press in console 的可能重复项(第二个答案是这个问题的重要答案)。
标签: java class input keyboard invoke