Java 太空入侵者用子弹杀死敌人
当玩家的子弹击中敌人时,我如何让敌人死亡? 这就是我所拥有的,我知道它不是Java,但我的编程语言是基于Java的。 我希望你们推荐的代码不是java命令代码。 我希望有简单的代码。 例如通过移动阵列移除敌人,并检测敌人和子弹位置的碰撞 在我目前的代码中,我不知道如何使子弹在与敌人相撞时摧毁自己和敌人。我知道如何检测碰撞,如下所示:Java 太空入侵者用子弹杀死敌人,java,arrays,multidimensional-array,2d,shift,Java,Arrays,Multidimensional Array,2d,Shift,当玩家的子弹击中敌人时,我如何让敌人死亡? 这就是我所拥有的,我知道它不是Java,但我的编程语言是基于Java的。 我希望你们推荐的代码不是java命令代码。 我希望有简单的代码。 例如通过移动阵列移除敌人,并检测敌人和子弹位置的碰撞 在我目前的代码中,我不知道如何使子弹在与敌人相撞时摧毁自己和敌人。我知道如何检测碰撞,如下所示: if(bulletPosX[i] > enemyPosX[x] || bulletPosY[i] > enemyPosY[y]) {} 但是我不知道如
if(bulletPosX[i] > enemyPosX[x] || bulletPosY[i] > enemyPosY[y]) {}
但是我不知道如何删除它们。我知道我必须改变阵型。但我不知道如何在代码中执行它
import graphics;
int firedBullets = 0;
int maxBullets = 15;
int[] bulletPosX = new int [maxBullets];
int[] bulletPosY = new int [maxBullets];
int[] bulletDirX = new int [maxBullets];
int[] bulletDirY = new int [maxBullets];
int width = 10;
int height = 3;
int maxEnemy = 30;
int[] enemyPosX new int[maxEnemy];
int[] enemyPosY new int[maxEnemy];
int[] enemyDirX new int[maxEnemy];
int[] enemyDirY new int[maxEnemy];
void main() {
// Information for Enemy
for(int x = 0; x < width; x = x + 1) {
for(int y = 0; y < height; y = y + 1) {
enemyPosX[] = x * width * 6;
enemyPosY[] = y * height * 15;
enemyDirX[] = 10;
enemyDirY[] = 20;
}
}
}
void paintWindow() {
// Information for Bullet
for(int i = 0; i < firedBullets; i = i + 1) {
setColor(255, 255, 255);
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;
}
}
for(int x = 0; x < width; x = x + 1) {
for(int y = 0; y < height; y = y + 1) {
for(int i = 0; i < firedBullets; i = i + 1) {
if(bulletPosX[i] > enemyPosX[x] || bulletPosY[i] > enemyPosY[y]) {
// How can i delete the enemyAI ?
}
}
}
}
}
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;
}
}
}
导入图形;
int firedBullets=0;
int=15;
int[]bulletPosX=新int[MaxBullet];
int[]bulletPosY=新int[MaxBulletPosy];
int[]bulletDirX=新int[MaxBulletDirx];
int[]bulletDirY=新int[MaxBulletDiry];
整数宽度=10;
整数高度=3;
int max=30;
int[]enemyPosX新int[max敌军];
int[]enemyPosY新int[max敌军];
int[]enemyDirX新int[max敌军];
int[]enemyDirY新int[max敌军];
void main(){
//敌情
对于(int x=0;xenemyPosX[x]| | bulletPosY[i]>enemyPosY[y]){
//如何删除enemyAI?
}
}
}
}
}
void onKeyPressed(内部代码){
如果(代码==37){
playerPosX=playerPosX-15;
}
如果(代码==39){
playerPosX=playerPosX+15;
}
如果(代码==32){
如果(firedBullets
首先,您用于碰撞检测的代码将检测子弹是否在屏幕的某个象限内,因为您正在测试子弹的位置是否在敌人的一侧,但对到一侧的距离没有限制
其次,从数组中删除一个元素,并将所有元素移到一个数组上
public void removeElement(int[] input, int index) {
for (int i = index + 1; i < input.length; i++) {
input[i - 1] = input[i];
}
input[input.length - 1] = -1;
}
public void removeElement(int[]输入,int索引){
for(int i=index+1;i
这样做的目的是将索引后的每个元素复制到上一个位置,覆盖旧值。然后将最后一个元素设置为-1,您可以将其更改为任何其他所需的值以标记为null。这在您的语言中可能不起作用,因为.length只返回数组的长度
最后,请不要将类似java的语言标记为java。将其标记为实际语言。此语言不支持。长度如何检测子弹是否与敌人相撞?那么你如何消除冲突的子弹和敌人呢?这种语言不支持null,所以如果你仔细查看我的代码,我不可能这么做,你是对的,iy在到达游戏场的某个点时会自我毁灭,但我也在代码中对敌人与子弹碰撞的地方或子弹与敌人碰撞的地方做了评论