[英]How can I restart a game in Processing?
所以我想寫一個處理游戲,你試着用籃球圈接住一個落下的球。 一切都很順利,直到某個時候,當您輸贏並按下“重新開始”時,游戲將不會重新開始。 這是我的 setup() 方法(僅初始化變量的相關部分):
void setup() {
game = new Game();
scr = new SplashScreen();
gameBackground = new Image();
background = new DynamicBackground();
button = new Rect();
/* Music set */
intro = new Music();
lifeMusic = new Music();
failMusic = new Music();
/* Ball and ring set */
ball = new Image();
ring = new Image();
/* Life points set */
life1 = new Image();
life2 = new Image();
life3 = new Image();
life4 = new Image();
failCount = 3;
sucCount =0;
winStr = "YOU WON!";
gameOverStr = "GAME OVER";
restartStr = "Resetart";
flag = true;
win = new Text();
gameOver = new Text();
restart = new Text();
size(710, 490);
.....
}
這是我的mousePressed
方法:
void mousePressed(){
if(mouseX>button.x && mouseX <button.x+button.width && mouseY>button.y && mouseY <button.y+button.height){
loop();
setup();
}
}
如您所見,我嘗試在游戲結束時執行noLoop()
,而不是當您按下我稱為“重新啟動”的按鈕時,它將loop()
和setup()
。
一按“重啟”,游戲就卡住了,為什么?
setup()
由內部回調調用。 它不打算調用setup
。 注意在設置中 window 已初始化( size(710, 490);
)。 setup 的調用導致系統掛起。
將 static 對象的初始化保留在setup
中,但將所有動態對象(“移動”對象)的初始化移動到init
function。 在setup
和 mousePressed 中調用此mousePressed
:
void init() {
game = new Game();
scr = new SplashScreen();
gameBackground = new Image();
background = new DynamicBackground();
button = new Rect();
/* Ball and ring set */
ball = new Image();
ring = new Image();
// ...
}
void setup() {
size(710, 490);
// init static objects
/* Music set */
intro = new Music();
lifeMusic = new Music();
failMusic = new Music();
// init dynamic objects
init();
}
void mousePressed(){
if(mouseX>button.x && mouseX <button.x+button.width && mouseY>button.y && mouseY <button.y+button.height){
init();
loop();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.