Java 试图在分数增加500的情况下提高我的游戏速度,但我有太多的if语句。
在我的代码中,每次可变分数比第一次多500分时,可变速度都需要增加。所以,当分数为500时:Java 试图在分数增加500的情况下提高我的游戏速度,但我有太多的if语句。,java,Java,在我的代码中,每次可变分数比第一次多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 enem
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);
}
}
import java.awt.*;
公敌{
静态整数x=-100;
静态int y=-100;
玩家;
私人int敌人速度=0;
私家车速度=0;
私用整数速度=0;
公敌(玩家){
this.player=player;
}
公共无效更新(){
if(Player.getX()x){
敌方速度=2+速度;
}
if(Player.getY()>y){
敌方速度=2+速度;
}
if(Player.getY()
这个答案取决于你的游戏分数只会不断增加的假设
public void scoreMethod(){
if(GameClass.score % 500 == 0){
speed++;
}
}
这样做的目的是检查游戏分数是否可以除以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;
}
}
}
您需要
%
模运算符if(GameClass.score%500==0){speed++}
if你的分数没有像下面提到的Trobbins那样下降。@Sid只有在OP能为我们确认的情况下,分数才可能永远不会下降。不要把你的问题作为注释放在你的代码中,阅读这个问题的人看不太清楚。@Sid我和%,,比?可能是一个开关声明?非常感谢,这为我节省了很多不必要的代码:)