簡體   English   中英

如何在處理中重新啟動游戲?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM