簡體   English   中英

如何用 C++ 和 Raylib 制作一個簡單的菜單?

[英]How to make a simple menu with C++ and Raylib?

我是一名新手程序員,我試圖在 C++ 中使用 Raylib 庫。

但我無法讓一個簡單的開始菜單工作。 我一直在嘗試調用 void 函數,使用 switch 和簡單的 if 語句......我如何使用 switch 或 if 語句在 raylib 中創建一個簡單的菜單而不關閉並打開程序的新 window? 我猜在While循環中的某個地方?



#include "raylib.h"




int main(void)
{
    // Initialization
    //--------------------------------------------------------------------------------------
    const int screenWidth = 800;
    const int screenHeight = 450;

    InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window");

    SetTargetFPS(60);               // Set our game to run at 60 frames-per-second
    //--------------------------------------------------------------------------------------

    // Main game loop
    while (!WindowShouldClose())    // Detect window close button or ESC key
    {

       BeginDrawing();
        ClearBackground(RAYWHITE);
        DrawText("Congrats! You created your firstwindow!", 190, 200, 50, LIGHTGRAY);
        EndDrawing();
        
        if(IsKeyPressed(KEY_Q)) DrawText("New thing here", 200, 210, 60, GREEN);
        if(IsKeyPressed(KEY_W)) DrawText("New thing here number two", 200, 210, 60, BLACK);

        

           
            
        }
        //----------------------------------------------------------------------------------
   
    CloseWindow();   
    return 0;


   }

我一直在嘗試使用 Break 和 Pause 和 Goto 的東西,我如何在不關閉 window 的情況下結束 While 循環,我需要更改 while 循環的語句嗎?

我不確定我是否理解您的問題...您想在不關閉 window 的情況下將 go 退出主游戲循環嗎? 這實際上是不可能的,因為您在那里渲染了所有 window 的東西。 對我來說,您似乎對語言本身缺乏一些基本的了解。 例如,您的 if 不會按照您想要的方式工作,因為它只會 flash 文本一秒鍾,而不是一直顯示它。

bool showText = false;

while(...) {
    if(IsKeyPressed(KEY_Q)) showText = !showText; // if you press Q again the text will 
    disappear

    if(showText) DrawText(...);
}

可能不是最干凈的方法,但它有效。 希望我的回答對你有所幫助。 如果您不確定某些內容,可以查看Raylib 示例

如果我正確理解了這個問題,您需要在游戲啟動之前有一個菜單。 您可以在同一個 window 中實現這一點,而不是嘗試啟動一個新的。

現在,確切的解決方案將根據您制作的游戲類型而有所不同,但我能想到的最簡單的解決方案是使用 if 語句來檢查我們是否在 while 循環的菜單中。 這可能看起來像這樣。

    bool isInMenu = true
    // Main game loop
    while (!WindowShouldClose())    // Detect window close button or ESC key
    {
        // Update here
        if(isInMenu)
        {
            if(IsKeyPressed(KEY_Q)) isInMenu = false;
        }
        else
        {
            if(IsKeyPressed(KEY_W)) isInMenu = true;
        }

        // Draw here
        BeginDrawing();
        if(isInMenu)
        {
            ClearBackground(RAYWHITE);
            DrawText("This is the menu", 190, 200, 50, LIGHTGRAY);
        }
        else
        {
            ClearBackground(RAYWHITE);
            DrawText("Congrats! You created your firstwindow!", 190, 200, 50, LIGHTGRAY);
        }
        
        EndDrawing();

    }
    //------------------------------------------------------------------------------
   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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