提问者:小点点

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


所以我一直在拆解一个朋友的乒乓球游戏,以便找出按键函数,并在我在另一篇文章中提到的气球游戏中使用它们。我相信我已经正确地将代码组合在一起,牢记过程和事物的逻辑顺序,但出于某种原因,意想不到的标记: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个答案

匿名用户

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

具有适当格式的代码如下所示:

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;
         }
      } 
   }
}

这很明显,您的keyP的()和keyRele的()函数在您的绘制()函数中,这是无效的。

另请注意,这一行非常令人震惊:

if (keyPressed) level=1;

即使它现在没有造成任何不好的结果,如果你想做的不仅仅是将级别设置为1,你更有可能引入逻辑错误。因此,if语句应该始终后跟大括号,即使它们只有一个语句:

if (keyPressed){
    level=1;
}

相关问题