按键实验:意外令牌:void处理2.2.1

时间:2014-08-06 16:35:23

标签: object processing boolean-expression

所以我一直在挑选一个朋友的乒乓球游戏,以便找出keyPressed功能,并在我在另一篇文章中提到的气球游戏中使用它们。我相信我已经正确地将代码放在一起,保持程序和事物的逻辑顺序,但由于某种原因,意外的令牌:void不断出现作为错误消息。我已经关闭了所有括号,并尽我所知地声明了所有的全局变量,但我一直在讨论这个消息。

以下是代码:

int level;



int paddleWidth = 200;
int paddleHeight = 200;
int paddleSpeed = 5;


int posX;
int posY;

boolean p1UP = false;
boolean p1DOWN = false;
boolean p1LEFT = false;
boolean p1RIGHT = false;

void setup()  {

size (800,800);
frameRate(60);
smooth();


posX = width/2;
posY = height/2;

}

void draw()  {



if (level==0) {
background(0);
textSize(50);
text("PREPARE YOUR ANUS", width/2, height/2-200);
text("PRESS A KEY YOU DINGUS", width/2, height/2-400);
if (keyPressed) level=1;

}


if (level==1) {
background(0);

fill(posX,0,posY);
rect(posX, posY, paddeWidth, paddleHeight);



if(p1UP==true) {
  posY -=paddleSpeed;
}
if(p1DOWN==true) {
  posY +=paddleSpeed;
}
if(p1LEFT==true) {
  posX -= paddleSpeed;
}
 if(p1RIGHT==true) {
  posX += paddleSpeed;
}



void keyPressed()  {


if (key=='w' || key=='W') {
p1UP = true;
}
if (key=='s' || key=='S') {
p1DOWN = true;
}  
if (key=='a' || key=='A') {
p1LEFT = true;
}
if (key=='d' || key=='D') {
p1RIGHT = true;
}
} 

void keyReleased()  {


if (key=='w' || key=='W') {
p1UP = false;
}
if (key=='s' || key=='S') {
p1DOWN = false;
}  
if (key=='a' || key=='A') {
p1LEFT = false;
}
if (key=='d' || key=='D') {
p1RIGHT = false;
}
} 




}
}

1 个答案:

答案 0 :(得分:2)

请使用正确的格式。你的缩进使这很难读,这可能就是你没有立即得到答案的原因。

具有正确格式的代码如下所示:

boolean p1UP = false;
boolean p1DOWN = false;
boolean p1LEFT = false;
boolean p1RIGHT = false;

void setup()  {
   size (800,800);
   frameRate(60);
   smooth();
   posX = width/2;
   posY = height/2;
}

void draw()  {
   if (level==0) {
      background(0);
      textSize(50);
      text("use more mature examples", width/2, height/2-200);
      text("PRESS A KEY please", width/2, height/2-400);

      if (keyPressed) level=1;

   }

   if (level==1) {
      background(0);

      fill(posX,0,posY);
      rect(posX, posY, paddeWidth, paddleHeight);


      if(p1UP==true) {
         posY -=paddleSpeed;
      }
      if(p1DOWN==true) {
         posY +=paddleSpeed;
      }
      if(p1LEFT==true) {
         posX -= paddleSpeed;
      }
      if(p1RIGHT==true) {
         posX += paddleSpeed;
      }

      void keyPressed()  {


         if (key=='w' || key=='W') {
            p1UP = true;
         }
         if (key=='s' || key=='S') {
            p1DOWN = true;
         }  
         if (key=='a' || key=='A') {
            p1LEFT = true;
         }
         if (key=='d' || key=='D') {
            p1RIGHT = true;
         }
      } 

      void keyReleased()  {

         if (key=='w' || key=='W') {
            p1UP = false;
         }
         if (key=='s' || key=='S') {
            p1DOWN = false;
         }  
         if (key=='a' || key=='A') {
            p1LEFT = false;
         }
         if (key=='d' || key=='D') {
            p1RIGHT = false;
         }
      } 
   }
}

这很明显你的keyPressed()和keyReleased()函数都在你的draw()函数中,这是无效的。

另请注意,此行非常恶劣:

if (keyPressed) level=1;

即使它现在没有造成任何不良影响,如果你想要做的不仅仅是将等级设置为1,那么你更有可能引入逻辑错误。出于这个原因,if语句应该总是后跟大括号,即使它们只是一个语句:

if (keyPressed){
    level=1;
}