太空侵略者杀死敌人

时间:2014-10-06 00:15:05

标签: java arrays multidimensional-array shift

目前正致力于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循环中使用它们并使用数学?

由于

0 个答案:

没有答案