我目前正在研究一款小型游戏,以学习处理程序。
我希望我的游戏在按“停止”时停止,并且希望我的游戏在“停止”更改为“开始”时重置/重新启动。
(当我单击按钮时,它将Stop(停止)更改为Start(开始),然后又更改为Stop(停止)等。(因此,基本上,我有1个“ button”)
我很挣扎,无法在Internet / stackoverflow上找到解决方案,所以也许有人可以帮助我?
(@ mousePressed,如果需要,我需要“停止并重新启动功能”)
float x = width/2;
float speed = 2;
boolean textHasBeenClicked = false;
int aantalRaak = 0;
int aantalMis = 0;
int positieText = 20;
void setup() {
background(0);
size(600,500);
}
void draw() {
clear();
move();
display();
smooth();
//Scoreboard bovenaan
fill(255);
textSize(20);
textAlign(LEFT);
text("Aantal geraakt: " + aantalRaak,0, positieText); text("Aantal gemist: " + aantalMis, width/2, positieText);
//button onderaan
fill(0,255,0);
rect(width/2-40, height-40, 100, 50);// draw anyway...
}
void mousePressed() {
// toggle
textHasBeenClicked = ! textHasBeenClicked;
fill(0);
if (textHasBeenClicked) {
// display text 2
textSize(30);
textAlign(CENTER);
text("Stop" , width/2,height-10);
}
else {
// display text 1
textSize(30);
textAlign(CENTER);
text("Start" , width/2,height-10);
}
}
void move() {
x = x + speed;
if (x > width) {
x = 0;
}
}
void display(){
//schietschijf
float y = height/2;
noStroke();
fill(255, 0, 0);
ellipse(x, y, 40, 40);
fill(255);
ellipse(x, y, 30, 30);
fill(255, 0, 0);
ellipse(x, y, 20, 20);
fill(255);
ellipse(x, y, 10, 10);
}
答案 0 :(得分:0)
您应该尝试break your problem down into smaller steps并一次执行一个步骤。您实际上是在问两个问题:
对于第一个问题,您可以创建一个布尔变量。在draw()
函数中使用该变量,然后在mousePressed()
函数中修改该变量。
boolean running = false;
void draw() {
fill(0);
if (running) {
background(255, 0, 0);
text("Stop", 25, 25);
} else {
background(0, 255, 0);
text("Start", 25, 25);
}
}
void mousePressed() {
running = !running;
}
然后,为了重置草图,您可以创建一个函数,将所有变量恢复为默认值。这是一个简单的示例:
float circleY;
void setup() {
size(100, 500);
}
void draw() {
background(0);
circleY++;
ellipse(width/2, circleY, 20, 20);
}
void reset() {
circleY = 0;
}
void mousePressed() {
reset();
}
尝试使用像这样的小示例代替完整的程序,如果遇到困难,请发布MCVE。祝你好运。
答案 1 :(得分:-1)
您可以考虑实现while循环。我不知道您要使用哪个库进行输入,所以我无法确切告诉您该怎么做。但是类似的东西:
while(!InputReceived) {
if(CheckForMouseInput()) // Assuming CheckForMouseInput returns true if input was detected
break // Input was detected, now do stuff based on that.
else {
// Must #include <thread> and #include <chrono>
// Wait a bit...
continue; // Jump back to the top of the loop, effectively restarting it.
}
可能会满足您的需求。至少那是我要做的。循环中断后,游戏将有效地重新启动,并且您可以基于此执行任何操作。