Processing 如何暂停帧速率以显示帧速率因变量

Processing 如何暂停帧速率以显示帧速率因变量,processing,Processing,我试图在我正在制作的2d侧滚视频游戏中显示我的分数。问题是我的分数取决于帧数,在角色死亡后,我想在屏幕上放大显示分数。我的程序的工作方式是,在冲突发生后,计数器被设置为一个特定的数字(100),每个循环的计数器将减少,一旦达到某个数字,程序将重新启动。我的想法是在碰撞和程序重新启动之间的时间内显示分数。我的问题是,由于程序仍在运行,分数将不断增加。有没有办法解决这个问题?我试着暂停平局循环,但由于比赛不会再次恢复,所以没有效果。非常感谢你的帮助 这是我的分数课: public class Sco

我试图在我正在制作的2d侧滚视频游戏中显示我的分数。问题是我的分数取决于帧数,在角色死亡后,我想在屏幕上放大显示分数。我的程序的工作方式是,在冲突发生后,计数器被设置为一个特定的数字(100),每个循环的计数器将减少,一旦达到某个数字,程序将重新启动。我的想法是在碰撞和程序重新启动之间的时间内显示分数。我的问题是,由于程序仍在运行,分数将不断增加。有没有办法解决这个问题?我试着暂停平局循环,但由于比赛不会再次恢复,所以没有效果。非常感谢你的帮助

这是我的分数课:

public class Score {
 private PFont font;
 private int x, y; 
 private PImage img;




  //constructor
  public Score ( int x, int y, PFont font) {
    this.x = x;
    this.y = y;
    this.font = font;       
  }

  public void draw () {

    Scorevar = frameCount/20;
    textFont(font);
    fill (0);
    //textAlign(CENTER);
    textMode(MODEL);
    text("Score = "+ Scorevar, x, y);

  }
}
这是我的主循环中涉及分数的部分

void draw() {
  background (255);


  chari.draw();
 //collision and collison image
  if ( collide_count == 0 ) {
  chari.draw();
  }
   else {

 image( collide, chari.x+130, chari.y+100 );
 collide_count--;



 }
 if ( collide_count > 5 && collide_count < 80) {

   score2.draw();

 }


 if ( collide_count == 5) {


 frameCount = 0;
   setup();
 }

  blockfield.draw();

  score1.draw();




}
void draw(){
背景(255);
chari.draw();
//碰撞与碰撞图像
如果(碰撞计数==0){
chari.draw();
}
否则{
图像(碰撞,chari.x+130,chari.y+100);
碰撞计数--;
}
如果(碰撞计数>5和碰撞计数<80){
得分2.抽签();
}
如果(碰撞计数==5){
帧数=0;
设置();
}
blockfield.draw();
得分1.抽签();
}
碰撞代码:

public void update(float cY, float cW) {
      for ( int i =frameCount/200; i >0; i--) {
     //for (int i =frameCount/400; i >0; i--) {
     //moves blocks right to left
      block[i].x -=(frameCount/200);
      //spawns block when they leave the screen
      if (block[i].x < -Blockpic.width) {
       block[i].setX( random(width, width*2));
       block[i].setY( random (height));
       //println(block[i].x + " " + block[i].y);
      }

      if (block[i].x < 130) {
         if(block[i].y > cY && block[i].y < (cY+cW)){
            //println(collide_count + " with");
            collide_count = 100;


          }
      }
     }
   }
公共无效更新(浮动cY、浮动cW){
对于(int i=frameCount/200;i>0;i--){
//对于(int i=frameCount/400;i>0;i--){
//从右向左移动块
块[i].x-=(帧数/200);
//当它们离开屏幕时生成块
if(块[i].x<-Blockpic.width){
块[i].setX(随机(宽度,宽度*2));
块[i].setY(随机(高度));
//println(块[i].x+“”+块[i].y);
}
if(块[i].x<130){
if(块[i].y>cY和块[i].y<(cY+cW)){
//println(与“)”相冲突;
碰撞计数=100;
}
}
}
}

只需将分数值保存到一个单独的变量中。然后使用该变量设置死亡屏幕的分数。

我引入了一个名为finished的新布尔值,默认情况下该值设置为false,在冲突期间设置为true

      if (block[i].x < 130) {
        if(block[i].y > cY && block[i].y < (cY+cW) && !finished){
            //println(collide_count + " with");
            collide_count = 80;
            finished = true;
           currentCount = frameCount/20;

          }

再次感谢!

那么,使用标志
bool StillPlaying
有什么错呢?碰撞后,设置
StillPlaying=false
并在每次分数增加时进行检查。您好,谢谢,但我如何保存该值而不不断更改?因为分数是帧计数。除非我误解,否则您应该有一个称为frameCount的值,它会增加每一帧。在任何时候,你都可以说currentCount=frameCount,并且当frameCount继续增加时,currentCount不会增加。我尝试过,但问题似乎是我的死亡屏幕会持续一系列帧,所以它仍然会增加。我理解这一点。我的建议是当冲突发生时,您可以设置一个与当前帧计数值相等的不同值,您可以使用该值来显示分数。谢谢。请尝试此操作。创建一个名为finished的布尔值。游戏开始时,将其设置为false。然后将“if(block[i].y>cY&&block[i].y<(cY+cW)){”更改为“if(block[i].y>cY&&block[i].y<(cY+cW)&&!finished){“在if语句中,将finished设置为true。这将确保每次游戏只运行一次,并且设置为currentCount的值在游戏重新开始之前不会更改。记住每次游戏重新开始时将finished设置为false。
  public void draw () {

    Scorevar = frameCount/20;
    textFont(font);
    fill (0);
    //textAlign(CENTER);
    textMode(MODEL);
    if ( finished == true) {
      text("Score = "+ currentCount, x, y);
    }
   else {
      text("Score = "+ Scorevar, x, y);
    }
  }