跳轉到

Class gridpp::GameEngine

ClassList > gridpp > GameEngine

建立視窗並管理遊戲物件、迷宮、覆蓋元件與主迴圈。 More...

  • #include <GameEngine.h>

Public Functions

Type Name
GameEngine (int cols, int rows, int grid_size=32)
建立遊戲視窗。
Overlay addButton (const std::string & text, int x, int y, int width, int height, OverlayCallback click=nullptr)
建立可使用滑鼠點擊的文字按鈕。
GridObject addCircle (int x, int y, int size, Color color=BLACK, GridObjectCallback init=nullptr, GridObjectCallback update=nullptr, CollisionCallback collide=nullptr)
建立以網格座標為中心的實心圓形;size 是像素直徑且必須大於 0。
Maze addMaze (int cols, int rows, MazeCallback init=nullptr, MazeCallback update=nullptr)
建立空白迷宮。
GridObject addObject (const std::string & image, GridObjectCallback init=nullptr, GridObjectCallback update=nullptr, CollisionCallback collide=nullptr)
建立圖片物件。物件初始位置為 (0, 0)。
Overlay addOverlay (const std::string & image, OverlayCallback init=nullptr, OverlayCallback update=nullptr)
建立以像素座標繪製的 32×32 圖片覆蓋元件。
GridObject addPentagon (int x, int y, int size, Color color=BLACK, GridObjectCallback init=nullptr, GridObjectCallback update=nullptr, CollisionCallback collide=nullptr)
建立以網格座標為中心的實心五角形;size 是像素外徑且必須大於 0。
GridObject addSquare (int x, int y, int size, Color color=BLACK, GridObjectCallback init=nullptr, GridObjectCallback update=nullptr, CollisionCallback collide=nullptr)
建立以網格座標為中心的實心正方形;size 是像素邊長且必須大於 0。
GridObject addStar (int x, int y, int size, Color color=BLACK, GridObjectCallback init=nullptr, GridObjectCallback update=nullptr, CollisionCallback collide=nullptr)
建立以網格座標為中心的實心五角星;size 是像素外徑且必須大於 0。
Overlay addTextOverlay (const std::string & text, int x, int y, int font_size=20, Color color=BLACK, OverlayCallback init=nullptr, OverlayCallback update=nullptr)
建立以像素座標繪製的單行文字。
GridObject addTriangle (int x, int y, int size, Color color=BLACK, GridObjectCallback init=nullptr, GridObjectCallback update=nullptr, CollisionCallback collide=nullptr)
建立以網格座標為中心的實心三角形;size 是像素外徑且必須大於 0。
void clearObjects ()
移除全部 GridObject 與 Maze;不影響Overlay 或已載入的素材。
void clearOverlays ()
移除全部 Overlay;不影響遊戲物件、迷宮或已載入的素材。
int cols () const
int gridSize () const
bool keyDown (int key) const
bool keyPressed (int key) const
void loadAssets (const std::string & database_path)
載入 SQLite 素材包並取代目前素材。
bool mousePressed (int button) const
int mouseX () const
int mouseY () const
int random (int min, int max) const
int rows () const
void run ()
執行遊戲主迴圈,直到視窗關閉。
void setBackgroundColor (Color color)
設定每幀開始繪製的背景顏色。
void showGrid (bool show)
double time () const

Detailed Description

GameEngine 是可複製的 handler。將它傳入 callback 或複製給其他變數時, 所有複本都會操作同一個引擎。

Public Functions Documentation

function GameEngine

建立遊戲視窗。

inline gridpp::GameEngine::GameEngine (
    int cols,
    int rows,
    int grid_size=32
) 

Parameters:

  • cols 網格欄數。
  • rows 網格列數。
  • grid_size 每格的像素寬度與高度。

Exception:

  • std::invalid_argument 若任一尺寸小於 1,或視窗寬、高超過 8192 像素。

function addButton

建立可使用滑鼠點擊的文字按鈕。

inline Overlay gridpp::GameEngine::addButton (
    const std::string & text,
    int x,
    int y,
    int width,
    int height,
    OverlayCallback click=nullptr
) 

Parameters:

  • text 按鈕文字。
  • x 左上角的視窗像素 x 座標。
  • y 左上角的視窗像素 y 座標。
  • width 按鈕像素寬度,必須大於 0。
  • height 按鈕像素高度,必須大於 0。
  • click 點擊按鈕時呼叫的函式;可以是 nullptr。

Returns:

操作新按鈕的 handler。

Exception:

  • std::invalid_argument 若 width 或 height 小於 1。

function addCircle

建立以網格座標為中心的實心圓形;size 是像素直徑且必須大於 0。

inline GridObject gridpp::GameEngine::addCircle (
    int x,
    int y,
    int size,
    Color color=BLACK,
    GridObjectCallback init=nullptr,
    GridObjectCallback update=nullptr,
    CollisionCallback collide=nullptr
) 


function addMaze

建立空白迷宮。

inline Maze gridpp::GameEngine::addMaze (
    int cols,
    int rows,
    MazeCallback init=nullptr,
    MazeCallback update=nullptr
) 

Parameters:

  • cols 迷宮欄數,範圍為 1 到 64。
  • rows 迷宮列數,範圍為 1 到 64。
  • init 迷宮啟用前呼叫一次的函式;可以是 nullptr。
  • update 每幀更新時呼叫的函式;可以是 nullptr。

Returns:

操作新迷宮的 handler。

Exception:

  • std::invalid_argument 若尺寸超出範圍。

function addObject

建立圖片物件。物件初始位置為 (0, 0)。

inline GridObject gridpp::GameEngine::addObject (
    const std::string & image,
    GridObjectCallback init=nullptr,
    GridObjectCallback update=nullptr,
    CollisionCallback collide=nullptr
) 

Parameters:

  • image 繪製時使用的素材名稱。
  • init 物件啟用前呼叫一次的函式;可以是 nullptr。
  • update 每幀更新時呼叫的函式;可以是 nullptr。
  • collide 與另一個可見物件位於同一格時呼叫的函式;可以是 nullptr。

Returns:

操作新物件的 handler。


function addOverlay

建立以像素座標繪製的 32×32 圖片覆蓋元件。

inline Overlay gridpp::GameEngine::addOverlay (
    const std::string & image,
    OverlayCallback init=nullptr,
    OverlayCallback update=nullptr
) 

Parameters:

  • image 素材名稱。
  • init 元件啟用前呼叫一次的函式;可以是 nullptr。
  • update 每幀更新時呼叫的函式;可以是 nullptr。

Returns:

操作新圖片元件的 handler。


function addPentagon

建立以網格座標為中心的實心五角形;size 是像素外徑且必須大於 0。

inline GridObject gridpp::GameEngine::addPentagon (
    int x,
    int y,
    int size,
    Color color=BLACK,
    GridObjectCallback init=nullptr,
    GridObjectCallback update=nullptr,
    CollisionCallback collide=nullptr
) 


function addSquare

建立以網格座標為中心的實心正方形;size 是像素邊長且必須大於 0。

inline GridObject gridpp::GameEngine::addSquare (
    int x,
    int y,
    int size,
    Color color=BLACK,
    GridObjectCallback init=nullptr,
    GridObjectCallback update=nullptr,
    CollisionCallback collide=nullptr
) 


function addStar

建立以網格座標為中心的實心五角星;size 是像素外徑且必須大於 0。

inline GridObject gridpp::GameEngine::addStar (
    int x,
    int y,
    int size,
    Color color=BLACK,
    GridObjectCallback init=nullptr,
    GridObjectCallback update=nullptr,
    CollisionCallback collide=nullptr
) 


function addTextOverlay

建立以像素座標繪製的單行文字。

inline Overlay gridpp::GameEngine::addTextOverlay (
    const std::string & text,
    int x,
    int y,
    int font_size=20,
    Color color=BLACK,
    OverlayCallback init=nullptr,
    OverlayCallback update=nullptr
) 

Parameters:

  • text 顯示文字。
  • x 左上角的視窗像素 x 座標。
  • y 左上角的視窗像素 y 座標。
  • font_size 字型大小,必須大於 0。
  • color 文字顏色。
  • init 元件啟用前呼叫一次的函式;可以是 nullptr。
  • update 每幀更新時呼叫的函式;可以是 nullptr。

Returns:

操作新文字元件的 handler。

Exception:

  • std::invalid_argument 若 font_size 小於 1。

function addTriangle

建立以網格座標為中心的實心三角形;size 是像素外徑且必須大於 0。

inline GridObject gridpp::GameEngine::addTriangle (
    int x,
    int y,
    int size,
    Color color=BLACK,
    GridObjectCallback init=nullptr,
    GridObjectCallback update=nullptr,
    CollisionCallback collide=nullptr
) 


function clearObjects

移除全部 GridObject 與 Maze;不影響Overlay 或已載入的素材。

inline void gridpp::GameEngine::clearObjects () 


function clearOverlays

移除全部 Overlay;不影響遊戲物件、迷宮或已載入的素材。

inline void gridpp::GameEngine::clearOverlays () 


function cols

inline int gridpp::GameEngine::cols () const

Returns:

遊戲網格欄數。


function gridSize

inline int gridpp::GameEngine::gridSize () const

Returns:

每格的像素寬度與高度。


function keyDown

inline bool gridpp::GameEngine::keyDown (
    int key
) const

Returns:

指定鍵目前是否持續被按住。


function keyPressed

inline bool gridpp::GameEngine::keyPressed (
    int key
) const

Returns:

指定鍵是否在目前幀剛被按下。


function loadAssets

載入 SQLite 素材包並取代目前素材。

inline void gridpp::GameEngine::loadAssets (
    const std::string & database_path
) 

Parameters:

  • database_path 素材包路徑。

Exception:

  • std::runtime_error 若檔案無法讀取、格式無效或找不到 sprites 資料表。

function mousePressed

inline bool gridpp::GameEngine::mousePressed (
    int button
) const

Returns:

指定滑鼠按鍵是否在目前幀剛被按下。


function mouseX

inline int gridpp::GameEngine::mouseX () const

Returns:

滑鼠的視窗像素 x 座標。


function mouseY

inline int gridpp::GameEngine::mouseY () const

Returns:

滑鼠的視窗像素 y 座標。


function random

inline int gridpp::GameEngine::random (
    int min,
    int max
) const

Returns:

min 到 max 之間的隨機整數,包含兩端。


function rows

inline int gridpp::GameEngine::rows () const

Returns:

遊戲網格列數。


function run

執行遊戲主迴圈,直到視窗關閉。

inline void gridpp::GameEngine::run () 


function setBackgroundColor

設定每幀開始繪製的背景顏色。

inline void gridpp::GameEngine::setBackgroundColor (
    Color color
) 


function showGrid

inline void gridpp::GameEngine::showGrid (
    bool show
) 

Parameters:

  • show true 會在背景上繪製網格線。

function time

inline double gridpp::GameEngine::time () const

Returns:

視窗初始化後經過的秒數。



The documentation for this class was generated from the following file GameEngine.h