微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

处理Java上的“避免掉落块”游戏

如何解决处理Java上的“避免掉落块”游戏

所以我正在用JAVA处理此游戏,代码在下面,因此要点是我有一个球,它避免了掉落的矩形,因此,现在,球可以侧向移动并且矩形从上方掉落,但是怎么办当矩形碰到球时,我会减少生命。

我制作了一个名为Lives的函数,如果圆被矩形击中,该函数应该减少生命,但是我无法为此提供代码。有人可以帮忙吗?

int score;
int score1;
int miss;
int lives=10;
int ballx,bally;
 
class Rect
{
  float x;
  float y;
  float speed;
  float leng;
  color c;
  boolean valid;
 
  final int MAX_COLOR = 255;
  final int MIN_X = 50,MAX_X = 750;
  final int MIN_Y = -800,MAX_Y = -100;
  int MIN_SPEED = 1,MAX_SPEED = 2;
  final int MIN_Leng = 50,MAX_Leng =100 ;
 
  Rect()
  {
    initAll();
  }
 
  void initAll() {
    valid = true;
    c     = color(random(255),random(255),random(255));
    x     = random(MIN_X,MAX_X); 
    y     = random(MIN_Y,MAX_Y);
    speed = random(MIN_SPEED,MAX_SPEED);
    leng  = random(MIN_Leng,MAX_Leng);
  }
 
 
  void update() {
    if (!valid) {
      initAll();
      return;
    }
    move();
    draw_rect();
  }
  void draw_rect()
  {
    fill(c);
    rect (x,y,leng,leng);
  }
 
 
  void move()
  {
    if (y-leng <= height)
    {
      y += speed;
    } else if (y-leng > height )
    {
      valid = false;
      miss++;
    }
  }
 
  void Lives()
  {
    
  }
  void GameOver()
  {
    if (lives==0)
    {
      for (int i = 0; i < Obj.length; i++)
      {
        Obj[i] = new Rect();
      }
 
      background(0);
      textSize(50 );
      fill(255);
      text( "You Lose ",15,150);
      text( "score: " + score,100);
    }
  }
 
 
  boolean isOver(int mx,int my) {
    float disX = x - mx;
    float disY = y - my;
    if (sqrt(sq(disX) + sq(disY)) < leng/2 ) {
      return true;
    } else {
      return false;
    }
  }
}
 
 
Rect [] Obj = new Rect [10];
 
 
void setup() {
  size (400,600);
  ballx=200;
  bally=300;
  for (int i = 0; i < Obj.length; i++)
  {
    Obj[i] = new Rect();
  }
}
 
 
void draw() {
  
  background(0);
  textSize(50);
  //fill(0);
  text( "score: " + score,100);
  text("Lives: " + lives,50);
  ellipse(ballx,bally,20,20);
 
  for (int i = 0; i < Obj.length; i++) {
    Obj[i].update();
    //Obj[i].Lives();
    Obj[i].GameOver();
  }
  surface.setTitle(nf(frameRate,3,2));
}



void keypressed(){
  
  for(Rect s : Obj){
    if ( key =='q' ){
     ballx=ballx-2;
     score++;
     score1++;
    s.valid = false;
     break;
    }
    if ( key =='e'){
     ballx=ballx+2;
     score++;
     score1++;
     s.valid = false;
     break;
    }
  }
      
}

解决方法

我想到的最简单的是-

案例1-如果您希望球的健康逐渐降低:

定义maximum_Health变量并将其分配给100。 每次障碍物击中您的球时,就可以通过减少您想要定义的重量来减少健康。

情况2-如果每次击中球都失去球寿命

定义剩余生命变量,并给它一些您希望生命数开始的值。 每次有方块撞到你的球时,将剩余的生命减少一。

我认为这应该给您一些提示。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。