目前正致力于Space Invaders项目,编程语言基于Java,但并非完全基于Java。它没有像Java这样的所有命令,所以它就像简单的语言一样。 所以为了编程,我用简单的代码编写代码。比如使用if语句和for循环。
所以我坚持的问题是如何让玩家的子弹杀死敌人的AI 我不能让敌人摧毁自己。 我尝试了很多方法,但似乎无法使其发挥作用。
所以这是我的第一个方法: 制作四个单个阵列
int[] enemyPosX
int[] enemyPosY
int[] enemyDirX
int[] enemyDirY
从中我创建一个嵌套循环,生成一个网格,宽度为10,高度为3。 一旦我做到了,我就让它从左向右移动,一旦到达游戏宽度的末端,方向就会改变并向下移动一个。
int width = 10;
int height = 3;
int numEnemy = width * height;
int[] enemyPosX new int[numEnemy];
int[] enemyPosY new int[numEnemy];
int[] enemyDirX new int[numEnemy];
int[] enemyDirY new int[numEnemy];
void main() {
for(int x = 0; x < width; x = x + 1) {
for(int y = 0; y < height; y = y + 1) {
enemyPosX[x] = x * height * 5;
enemyPosY[y] = y * height * 15;
enemyDirX[x] = 5;
enemyDirY[y] = 5;
}
}
}
执行此操作后,我为子弹生成了信息。当玩家开火时。 游戏区域的尺寸为800乘800。
for(int i = 0; i < firedBullets; i = i + 1) {
setColor(0, 0, 0);
fillRect(bulletPosX[i], bulletPosY[i], 6, 30);
bulletPosY[i] = bulletPosY[i] - 5;
if(bulletPosY[i] < -50) {
for(int j = i + 1; j < firedBullets; j = j + 1) {
bulletPosX[j - 1] = bulletPosX[j];
bulletPosY[j - 1] = bulletPosY[j];
bulletDirX[j - 1] = bulletDirX[j];
bulletDirY[j - 1] = bulletDirY[j];
}
firedBullets = firedBullets - 1;
}
}
void onKeyPressed (int code) {
if(code == 37) {
playerPosX = playerPosX - 15;
}
if(code == 39) {
playerPosX = playerPosX + 15;
}
if(code == 32) {
if(firedBullets < maxBullets) {
bulletPosX[firedBullets] = playerPosX + 46;
bulletPosY[firedBullets] = playerPosY - 30;
bulletDirX[firedBullets] = 5;
bulletDirY[firedBullets] = 5;
firedBullets = firedBullets + 1;
}
}
}
我也为二维阵列做过这个,但实际上我似乎无法使它工作。 我怎么能这样做,当玩家的子弹击中敌人的时候它会杀死敌人。 你们可以不使用任何Java命令制作简单的代码吗? 只是在for循环中使用它们并使用数学?
由于