在我的代码中,每当变量得分比第一次高500时,变速就需要增加.所以,当得分为500时:speed++.得分为1000时:speed++再次,依此类推.
这是我的代码:
import java.awt.*;
public class Enemy {
static int x = -100;
static int y = -100;
Player player;
private int enemy_xspeed = 0;
private int enemy_yspeed = 0;
private int speed = 0;
public Enemy(Player player) {
this.player = player;
}
public void update(){
if(Player.getX() < x){
enemy_xspeed = -2 - speed;
}
if(Player.getX() > x){
enemy_xspeed = 2 + speed;
}
if(Player.getY() > y){
enemy_yspeed = 2 + speed;
}
if(Player.getY() < y){
enemy_yspeed = -2 - speed;
}
x += enemy_xspeed;
y += enemy_yspeed;
}
public void scoreMethod(){
//THIS BLOCK OF CODE BELOW TAKES TOO MANY LINES I NEED THIS HERE WRITTEN IN NOT MANY LINES
if(GameClass.score == 500){
speed ++;
}
if(GameClass.score == 1000){
speed ++;
}
if(GameClass.score == 1500){
speed ++;
}
if(GameClass.score == 2000){
speed ++;
}
if(GameClass.score == 2500){
speed ++;
}
if(GameClass.score == 3000){
speed ++;
}
if(GameClass.score == 3500){
speed ++;
}
if(GameClass.score == 4000){
speed ++;
}
if(GameClass.score == 4500){
speed ++;
}
}
public void paint(Graphics g){
g.setColor(Color.ORANGE);
g.fillRect(x, y, 20, 20);
}
}
Run Code Online (Sandbox Code Playgroud)
Cub*_*key 10
这个答案依赖于你的比赛得分只会增加的假设.
public void scoreMethod(){
if(GameClass.score % 500 == 0){
speed++;
}
}
Run Code Online (Sandbox Code Playgroud)
这样做是检查游戏得分是否可以除以500而没有任何余数(就像你的if语句一样).
但是,如果您的游戏分数可能会降低,上述解决方案可能会对您的游戏设计产生负面影响:
得分480,
得分490,
得分500,速度提升(到2级)
得分480,
得分490,
得分500,另一个速度增加(虽然现在我们处于3级,当我们再次成为2级时)
在这种情况下,请考虑以下代码,以跟踪速度上次增加的时间,防止上述重复:
int lastSpeedIncrease = -1; //class or 'global' variable
//initialize to -1 and not 0
public void scoreMethod(){
if(GameClass.score > lastSpeedIncrease){
if(GameClass.score % 500 == 0){
speed++;
lastSpeedIncrease = GameClass.score;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
406 次 |
| 最近记录: |