本專案為 NTNU《程式設計(二)》期末專題,以 C 語言與 raylib 實作 GUI 介面版的卡牌遊戲《Twisted Fables》。
- 推薦使用 VcXsrv
- 安裝後執行
XLaunch,選擇:- ✅
One large window - ✅
Disable access control
- ✅
- 執行後會常駐一個 X Server 視窗。
暫時設定(每次開機需重新輸入):
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0永久設定(建議寫入 ~/.bashrc):
echo 'export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk "{print \$2}"):0' >> ~/.bashrc
source ~/.bashrcsudo apt update
sudo apt install -y gcc make libraylib-dev libgl1-mesa-dev libx11-dev libpthread-stubs0-devsudo apt update
sudo apt install -y gcc make libraylib-dev libgl1-mesa-dev libx11-dev libpthread-stubs0-devCC = gcc
CFLAGS = -std=c99 -w
CFLAGS += -Iinclude
SRC = TwistedFables.c Function.c Skill.c Card.c vector.c board_gui.c
OBJ = $(SRC:.c=.o)
TARGET = TwistedFables
LIBS = \
./libraylib.a \
./libSDL2.a \
./libSDL2_mixer.a \
-lGL -lm -lpthread -ldl -lrt -lX11
.PHONY: all clean run
all: $(TARGET)
$(TARGET): $(OBJ)
$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
run: all
./$(TARGET)
clean:
rm -f *.o $(TARGET)- 啟動 VcXsrv(XLaunch)
- 開啟 WSL 終端機
- 設定好 DISPLAY 環境變數
- 編譯並執行:
make run- 編譯並執行:
make run你可以先用這段程式碼確認 GUI 是否可用:
// test_gui.c
#include "raylib.h"
int main() {
InitWindow(800, 600, "Raylib Test");
while (!WindowShouldClose()) {
BeginDrawing();
ClearBackground(RAYWHITE);
DrawText("Hello from WSL with raylib!", 100, 100, 20, LIGHTGRAY);
EndDrawing();
}
CloseWindow();
return 0;
}編譯指令:
gcc test_gui.c -o test_gui -lraylib -lGL -lm -lpthread -ldl -lrt -lX11
./test_guiTwistedFables/
├── include/ # 放置 .h 標頭檔
├── raylib/ # raylib 原始碼(可選)
├── build_raylib.sh # raylib 建構腳本
├── TwistedFables.c # 主程式
├── Skill.c / Function.c # 功能模組
├── vector.c / Card.c # 輔助模組
├── board_gui.c # GUI 顯示模組
├── Makefile
└── README.md
└── ...