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

Object 按键实验:意外令牌:无效处理2.2.1,object,processing,boolean-expression,Object,Processing,Boolean Expression,所以我一直在挑选一个朋友的乒乓球游戏,以找出按键功能,并在我的气球游戏中使用它们,我在另一篇文章中提到过。我相信我已经将代码正确地放在了一起,记住了过程和事情的逻辑顺序,但是出于某种原因,意外的标记:void一直作为错误消息出现。我已经关闭了所有的括号,并尽我所知声明了所有的全局变量,但我一直遇到这个消息 代码如下: int level; int paddleWidth = 200; int paddleHeight = 200; int paddleSpeed = 5; int po

所以我一直在挑选一个朋友的乒乓球游戏,以找出按键功能,并在我的气球游戏中使用它们,我在另一篇文章中提到过。我相信我已经将代码正确地放在了一起,记住了过程和事情的逻辑顺序,但是出于某种原因,意外的标记: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;
}
} 




}
}

请使用正确的格式。你的缩进让这很难理解,这可能就是你没有马上得到答案的原因

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

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

更新:在注意到一个巨大的错误后,修复了按键部分。仍然有一个可怕的小意外令牌错误。顺便说一句,意外令牌:void出现在按键部分。再次感谢你,凯文。到目前为止,你的建议真的很有帮助。非常感谢。不过,我有一个问题要问那些仍然关注我的人。我注意到,虽然我的程序现在正在运行,并且图形已经渲染,但我的按键功能控制系统没有工作。我是否也应该考虑加入keyCode函数?很抱歉问了这么多新问题,但由于处理了这样的事情,我学得很快,这有点超出了我的技能。@TheDancingPopelives我也不太清楚你的意思。你能发布你的更新代码吗?