我創建一個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