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