iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 13
1

引言

接著昨天的視窗設定,今天稍微較簡單,我們會設定一個管遊戲畫面的檔,
並在實作後解釋遊戲畫面的運作方式。


遊戲狀態

  1. 首先先創立:"GameStatus.h"以及"GameStatus.c"在專案中

  2. 先打上基礎定義與include:

/* File: GameStatus.h */

#ifndef __GAMESTATUS_H__
#define __GAMESTATUS_H__



#endif // __GAMESTATUS_H__

/* File: GameStatus.c */

#include"GameStatus.h"

  1. 定義布林型態與真假值
/* File: GameStatus.h */

#ifndef __GAMESTATUS_H__
#define __GAMESTATUS_H__

// ------------新增部分-------------------
#define boolean int  // 定義布林型態
#define True 1  // True為1
#define False 0  // False為0
// ---------------------------------------

#endif // __GAMESTATUS_H__

  1. 需要一個判斷目前是否需要更新畫面的變數,我們取名為:isFrameUpdated
/* File: GameStatus.h */

#ifndef __GAMESTATUS_H__
#define __GAMESTATUS_H__

#define boolean int  // 定義布林型態
#define True 1  // True為1
#define False 0  // False為0

// ------------新增部分-------------------
boolean isFrameUpdated;  // 稍後會使用到,確認此時是否需更新畫面
// ---------------------------------------

#endif // __GAMESTATUS_H__

  1. 加入初始化用的函數
/* File: GameStatus.h */

#ifndef __GAMESTATUS_H__
#define __GAMESTATUS_H__

#define boolean int  // 定義布林型態
#define True 1  // True為1
#define False 0  // False為0

boolean isFrameUpdated;  // 稍後會使用到,確認此時是否需更新畫面

// ------------新增部分-------------------
void initGameStatus();  // 將isFrameUpdated初始化為True
// ---------------------------------------

#endif // __GAMESTATUS_H__

/* File: GameStatus.c */

#include"GameStatus.h"

// ------------新增部分-------------------
void initGameStatus()  // 初始化isFrameUpdated為True
{
    isFrameUpdated = True;
}
// ---------------------------------------

  1. 在main函數中呼叫initGameStatus函數,並引入新的標頭檔
/* File: main.c */

#include <stdlib.h>  // 標準函式庫
#include <windows.h>  // 控制視窗用
#include <math.h>  // 數學函式庫(三角函數、四捨五入等等)

#include "RenderMemory.h"  // 繪製記憶體
#include "SystemSetting.h"  // 系統設定

// ------------新增部分-------------------
#include "GameStatus.h"  // 遊戲狀態
// --------------------------------------

int main(int argc, char *argv[])
{
    init_render_memory();  // 先初始化memory

    setting_system();  // 設置視窗屬性

// ------------新增部分-------------------
    initGameStatus();  // 初始化遊戲狀態(畫面是否更新初始化為True)
// -------------------------------------- 

    return 0;
}


講解

其中為什麼要用到isFrameUpdated這個變數呢?(字面上來看是「是否畫面更新」的意思)
因為遊戲畫面筆者將它設計成:當玩家按下對應按鍵後,畫面才進行更新。

因此什麼時候按下按鍵,需要讓負責畫面的部分得知。
也就是利用isFrameUpdated這個變數來廣布給整個程式知道,什麼時候該更新畫面。

讀者們不用擔心,明天我們會利用設置按鍵的篇幅,一併帶入這部分讓各位更瞭解其含意。


上一篇
[11屆鐵人賽Day12] 3D引擎製作(二)
下一篇
[11屆鐵人賽Day14] 3D引擎製作(四)—Renderer(上)
系列文
若沒有遊戲引擎、合作夥伴...做得出遊戲嗎? 不試試看不知道吧? [使用C語言]30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言