Object 按键实验:意外令牌:无效处理2.2.1
所以我一直在挑选一个朋友的乒乓球游戏,以找出按键功能,并在我的气球游戏中使用它们,我在另一篇文章中提到过。我相信我已经将代码正确地放在了一起,记住了过程和事情的逻辑顺序,但是出于某种原因,意外的标记:void一直作为错误消息出现。我已经关闭了所有的括号,并尽我所知声明了所有的全局变量,但我一直遇到这个消息 代码如下: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
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我也不太清楚你的意思。你能发布你的更新代码吗?