更新:添加了更多细节,以便为我提供的代码片段提供更多上下文。
我最近提交了一个我在Processing中制作的游戏,作为我大学课程的一部分,但它并没有完全符合我的要求,所以我正在努力添加一些功能和重新编码其中一些使它更有趣和可重放。
无论如何,我遇到的问题是敌人的波浪发生。我的游戏如何工作是有一个专门针对单个敌人实例的类,我为敌人生成了一个ArrayList。下面的代码有一个for循环,它根据设置为整数waveCount的波量设置自己。它会向ArrayList添加一些等于waveCount值的敌人,然后在屏幕上显示敌人。如果他们被击中,则单独移除敌人,如果他们触摸玩家,则降低玩家的生命值,然后重置玩家位置,以及敌人的位置。它们只是从屏幕顶部进入,向下移向底部的玩家,慢慢将自己定位到玩家的x和y位置。
我让敌人的波浪正常工作,但是在我游戏的最后一个版本中,当玩家使用if语句达到某些分数时,我手动增加了波浪,现在我想找到一种方法让游戏自动添加一个当玩家得分达到200增量时挥手。每次比赛得分达到1000增量时,我也希望敌人的速度略微增加。
现在,我对其进行编码的方式导致它在返回单个波之前仅增加一次在200/400/600 /等的波数。我已将敌人作为类的ArrayList处理。如果有人能帮助我找到一种方法来编码一个自动的无限波系统,其中一个波以200的分数增量添加,并且敌人的速度以1000的分数增量增加,那将非常有帮助!
updateWave = false;
hasAddedWave = false;
scoreCheck = score.score;
enemySpeedX = 0.6;
enemySpeedY = 1;
waveCount = 1;
if(scoreCheck > 0 && scoreCheck % 200 == 0 && hasAddedWave == false){
updateWave = true;
}
if(updateWave == true && hasAddedWave == false){
waveCount += 1;
hasAddedWave = true;
}
if(updateWave == true && hasAddedWave == true){
updateWave = false;
hasAddedWave = false;
}
for(int i = 0; i < waveCount; i++){
zombiePosition = random(100,400);
zombies.add(new Enemy(zombiePosition,-50,enemySpeedX,enemySpeedY));
zombies.get(i).show();
}
答案 0 :(得分:0)
理论上,你需要的是一种说法:
"Hey, this guy reached 200 points further than before! Let's throw a new wave at him! "
只是通过那句话你可以很容易地推断它会通过重复的cicle来传递很多东西,显然我不能给你一个代码样本,因为我无法猜出你的代码是什么(作为某人已经指出,你还没有给我们很多的工作)。尝试诸如
之类的东西 if (pointsNow >= pointsBefore+200) doSomething
此外,它回归单波的原因是:
if(scoreCheck > 0 && scoreCheck % 200 == 0 && hasAddedWave == false){
updateWave = true;
}
这个if语句意味着scoreCheck
大于0,并且可以被200整除。这意味着scoreCheck除以200的余数为0.想象一下,如果你的玩家得分为401,那么得分检查不能被除以200,因为剩余的不是0.相反,尝试:
scoreCheck > lastScoreCheck
你在lastScoreCheck中添加200(或者你想要的任何东西)
最后,关于速度,再一次,玩变量。这不是让speed = 1
(例如)拥有:speed = 1 + level*multiplier
,而是在这种情况下将速度设置为某个值1,并添加一个乘数,该乘数由另一个变量决定。将是水平。您可以操纵它以使游戏更容易或更难,例如:speed = 1 + level*5
比speed = 1 + level*0.5
快