我创建一个Java游戏中,用户可输入的up
的命令,left
,right
,或down
到在该位置移动的字符进行了一定的像素。在Player
课程中,我在用户按下启动按钮后,在JTextField
的ArrayList
中接收到命令。然后我使用for
循环遍历用户的所有输入,并在多维阵列内创建x
和y
目标,以便玩家需要移动的距离为x
和y
。最后我有一个叫做updatePosition()
的函数,它在主游戏循环中被调用。在这个函数中,我循环遍历目标的多维数组,并使用if
语句来检查是否已达到目标。但是,如果执行该方法并且用户输入了例如up
和right
的命令,则该角色向上斜向移动。我想要一种方式,将角色按用户指定的方向移动,并逐个执行。Java游戏 - 运行代码顺序在游戏循环
下面是代码:
moveSpeed = 1;
private double moveAmt = 20;
private Double[][] targetCoordinates = null;
private ArrayList<JTextField> userInputTextFields = new ArrayList<JTextField>();
随着方法下面我获得的JTextFields
内用户已经输入的命令的ArrayList
,并将其存储在本地ArrayList
。我还安装了一个Array
,其大小为用户输入命令的数量JTextFields
。该数组将用于存储角色的x
和y
目标。然后,我最后调用moveChar();
方法,该方法将设置目标x
和y
。
public void getInputText(ArrayList<JTextField> textFields){
this.userInputTextFields = textFields;
targetCoordinates = new Double[userInputTextFields.size()][2];
moveChar();
}
此方法将检查是否用户已经enetered和targetCoordinates
阵列内设置的x
和y
目标的命令。
private void moveChar(){
for (int i = 0; i < userInputTextFields.size(); i++) {
if(userInputTextFields.get(i).getText().equals("up")){
targetCoordinates[i][0] = x;
targetCoordinates[i][1] = y - moveAmt;
} else if(userInputTextFields.get(i).getText().equals("down")){
targetCoordinates[i][0] = x;
targetCoordinates[i][1] = y + moveAmt;
} else if(userInputTextFields.get(i).getText().equals("left")){
targetCoordinates[i][0] = x - moveAmt;
targetCoordinates[i][1] = y;
} else if(userInputTextFields.get(i).getText().equals("right")){
targetCoordinates[i][0] = x + moveAmt;
targetCoordinates[i][1] = y;
}
}
}
最后,这是一个被游戏主循环中调用的方法。它通过targetCoordinates
阵列并检查目标是否被满足。如果不是,则相应地引起或减少角色的x
和y
的位置。
公共无效updatePosition(){
if(targetCoordinates != null){
for (int i = 0; i < targetCoordinates.length; i++) {
if(y >= targetCoordinates[i][1]) {
moveCharacter(x, y - moveSpeed);
} else if(y < targetCoordinates[i][1]) {
moveCharacter(x, y + moveSpeed);
} else if(x > targetCoordinates[i][0]) {
moveCharacter(x - moveSpeed, y);
} else if(x <= targetCoordinates[i][0]) {
moveCharacter(x + moveSpeed, y);
}
}
}
}
和。 。 。问题是什么? _“我想要一种能够移动角色的方式......”并不能告诉我们你试过了什么,或者你卡在哪里。 –
我想你想要一个能够在特定游戏循环之外生存下来的命令的“跳跃者”,并且只有在完成当前命令之后才能获取新命令。新命令在顶部和底部被执行 –
问题是:“我想要一种方式,将角色按照用户指定的方向移动,并逐个执行。” – Human