在processing3中实现游戏菜单

时间:2017-01-03 19:12:48

标签: java menu processing

我正在为我的大学课程制作一个小游戏,并在菜单创建中陷入困境。一直试图解决这个问题。这里是代码: 在尝试摆动循环和noLoop()函数之前,在将箭头位置从void设置移动到void keypressed 之前,我的游戏已经奏效。现在程序在运行绘图之前冻结。  我想要的是只显示键之前的菜单背景,在这种情况下,按下了开始的按钮。如果有人能提出一些指示,那将是一个很大的帮助。 提前谢谢。

int totalArrows = 6;
arrowclass[] theArrows = new arrowclass[totalArrows];
PImage[] imgList = new PImage[4];
PImage bg;
PImage life;
PImage menu;
int score;
int loose = 3;

void setup() {
  size(400, 600);

  bg = loadImage("bck.jpg");
  life = loadImage("life.png");
  menu = loadImage("menu.jpg");
  background(menu);

  // loading the arrow imgs
  for (int i= 0; i<4; i++) {
    println(i+".png");
    imgList[i] = loadImage(i+".png");
  }

 noLoop();

  }


void draw() {
   textSize(32);
  text(score,30,100);


  // active area
  fill(255,31,31);
  rect(0,500,width,100);

  //lifetrack
  if (loose==3){
  image(life,10,10);
  image(life,45,10);
  image(life,80,10);
  }
   if (loose==2){
  image(life,10,10);
  image(life,45,10);
  }
   if (loose==1){
  image(life,10,10);
  }

 // calling class action, movement
 for (int i = 0; i<totalArrows; i++) {
   theArrows[i].run();

if (theArrows[i].y>475 && theArrows[i].y<600) {
     theArrows[i].inactive = true;
}
if(theArrows[i].did == false && theArrows[i].y>598) {
 theArrows[i].lost = true; 
}
if(theArrows[i].lost && theArrows[i].did == false && theArrows[i].wrongclick == false){
 loose--;
 theArrows[i].lost = false;
}
}

if (loose == 0){
  textSize(32);
  text("gameover",width/2,height/2);
  for(int i=0; i<totalArrows;i++){

  }
}

}   
void keyPressed() {
  if (key == 'p'){
  // placing tha arrows. (i*105 = positioning) THIS PART IS AN ISSUE FOR SURE. SEE ARROW CLASS 
   for (int i= 0; i<totalArrows; i++) {
    theArrows[i] = new arrowclass(-i*105);
  }  
  loop();
}
}
    void keyReleased() {

 for (int i= 0; i<totalArrows; i++) { 
   if (theArrows[i].inactive && theArrows[i].did == false) {
    if (keyCode == UP && theArrows[i].id == 3){
      score++;
      theArrows[i].did = true;
    }
    if (keyCode != UP && theArrows[i].id == 3){
      loose--;
      theArrows[i].wrongclick = true;

    }
    if (keyCode == DOWN && theArrows[i].id == 0){
      score++;
      theArrows[i].did = true;
    }
    if (keyCode != DOWN && theArrows[i].id == 0){
      loose--;
      theArrows[i].wrongclick = true;

    }
    if (keyCode == RIGHT && theArrows[i].id == 2){
      score++;
      theArrows[i].did = true;
    }
    if (keyCode != RIGHT && theArrows[i].id == 2){
      loose--;
      theArrows[i].wrongclick = true;
    }
    if (keyCode == LEFT && theArrows[i].id == 1){
      score++;
      theArrows[i].did = true;
    }
    if (keyCode != LEFT && theArrows[i].id == 1){
      loose--;
      theArrows[i].wrongclick = true;
    }
   }
 } 
 }

箭头类:

class arrowclass{
  int y;
  int id;
  boolean did;
  boolean inactive;
  boolean lost;
  boolean wrongclick;

  // proprieties of the class
  arrowclass(int initY){
    y = initY;
    id = int(random(4));
    did = false;
    inactive = false;
    lost = false;
    wrongclick = false;

  }

  //actions 

  void run(){
   image(imgList[id],width/2,y);

  // score goes up, speed goes up
   y += 2+score; 

  // reset arrow to default 
   if (y>600)  {
      y = -50;
      id = int(random(4));
      inactive = false;
      did = false;
      lost = false;
      wrongclick = false;

   }
  }
}

0 个答案:

没有答案