目前,我試圖讓遊戲中的鼠標控制,將左右移動,收集小球塊。每當一個球產生時,敵人就會出現,並沿直線移動。
我的程序試圖實現,但是所有敵人都立即產卵並且只能向右移動。食物在食用時不會消失。相反,當我移動鼠標時,食物在整個地方閃爍,敵人全部移向右側。我不確定如何讓食物出現一次並留在那裏,然後當玩家吃掉它時,它會消失並在其他地方產生另一個食物,併產生一個敵人,並在左右或上下彈跳離開牆壁。
我想在一個地方製作食物,然後當我吃它時,刪除食物並隨機產生另一種食物。
我想make something similar to this.
感謝您的幫助。
編輯:基於新的代碼關閉僞碼的@ AJC的回答
import java.util.ArrayList;
import java.util.Random;
public class Game{
public static void main(String[] args) {
StdDraw.setXscale(0,100);
StdDraw.setYscale(0,100);
int foodX = 0;
int foodY = 0;
ArrayList enemyXPos = new ArrayList();
ArrayList enemyYPos = new ArrayList();
ArrayList enemySpeeds = new ArrayList();
int score = 0;
Random rand = new Random();
while (true) {
double playerX = StdDraw.mouseX();
double playerY = StdDraw.mouseY();
StdDraw.clear();
int enemyX = 0, enemyY = 0;
if (playerX == foodX && playerY == foodY) {
score += 1;
foodX = rand.nextInt(100);
foodY = rand.nextInt(100);
enemyX = rand.nextInt(100);
enemyY = rand.nextInt(100);
enemyXPos.add(enemyX);
enemyYPos.add(enemyY);
int enemySpeed = rand.nextInt(20);
enemySpeeds.add(enemySpeed);
}
for (int j = 0; j < enemyXPos.size()-1; j++) {
if ((int) enemyXPos.get(j) == playerX && (int) enemyYPos.get(j) == playerY) {
break;
}
}
for (int j = 0; j < enemyXPos.size()-1; j++) {
enemyXPos.add(j, (int) enemyXPos.get(j) + (int) enemySpeeds.get(j));
enemyYPos.add(j, (int) enemyXPos.get(j) + (int) enemySpeeds.get(j));
}
StdDraw.setPenColor(StdDraw.BLUE);
StdDraw.filledCircle(playerX, playerY, 5);
StdDraw.setPenColor(StdDraw.GREEN);
StdDraw.filledCircle(foodX, foodY, 2);
for (int j = 0; j < enemyXPos.size()-1; j++) {
StdDraw.setPenColor(StdDraw.RED);
StdDraw.filledCircle(enemyX, enemyY, 2);
}
StdDraw.show();
}
}
}
要確定什麼代表你的代碼(食物,塊和敵人)中的這三件事情是非常困難的。 –
查看'ArrayList'以及它如何幫助你擁有多個單獨的敵人。想一想「吃東西的玩家」作爲一個事件;有一種方法來檢測這個事件,只有這樣你才能重新定位食物。就其本身而言,你的代碼並不是一個很大的嘗試,而你的問題太寬泛而無法直接回答:就像給敵人隨機化一個位置和方向是一個完全不同的問題,你應該找到很多答案。 – BeyelerStudios
@Beyeler我會環顧四周,看看我能找到什麼。 –