吃豆人(Pac-man),想必熟悉電子游戲發展史的玩家都不會陌生,
吃豆人是電子游戲歷史上的經典街機游戲,由Namco公司的巖谷徹設計并由Midway Games在1980年發行,
Pac-Man被認為是80年代最經典的街機游戲之一,游戲的主角小精靈的形象甚至被作為一種大眾文化符號,或是此產業的代表形象,
但吃豆人的玩法現在看來,也許已經有些過時,
玩家要控制吃豆人吃掉迷宮里面的所有豆子,同時盡可能躲避小鬼怪,一旦吃豆人吃掉能量藥丸,它就可以在一定時間內反過來欺負小鬼怪了,
不過,在漫漫游戲長河中,吃豆人,永遠都會是最閃耀的那一顆,
它是電子游戲的文化符號,同時首創了迷宮追逐型別,簡單的畫面和玩法卻在電子游戲史上留下了濃墨重彩的一筆,
因此,今天,我挑選了一個吃豆人開發教程分享給大家,復刻吃豆人,致敬經典!
實作效果如下:
此教程是免費資源,點擊“C++ 使用 openGL 實作吃豆人游戲”,即可免費學習全部內容,并有游戲原始碼下載,
以下是教程節選:
一、實驗介紹
1.1 實驗內容
本節實驗主要通過 C++ 和 openGL 庫來實作了一個吃豆人的小游戲,主要的課程內容涉及到 C++ 相關的序列容器 vector 、deque 和迭代器,以及 openGL 相關的視窗初始化與繪圖功能,
1.2 知識點
- C++ 編程基礎
- C++ 模板庫使用
- openGl 庫使用
1.3 實驗環境
- xfce 終端
- ubuntu16.04
- openGl 庫
1.4 適合人群
有一定 C++ 編程基礎,了解 STL 模板庫,對游戲設計、邏輯分析和 openGL 庫感興趣的同學,
二、環境準備
2.1 安裝 openGL 庫
執行以下命令安裝所需的各種依賴
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install freeglut3-dev
2.2 編譯程式
需要進入 Pacman/src/ 目錄
make
2.3 運行程式
需要進入 Pacman/bin/ 目錄
./Pacman
2.4 運行效果
三、專案分析
3.1 模塊拆分
在開始撰寫程式之前我們需要利用 C++ 的思想把實際問題轉換成一個個物件,說到游戲應該就能想到角色、地圖和怪物以及操作命令等,我們把這些元素細化就可以得到游戲設計模塊:
- 角色設計
- 地圖設計
- 怪物設計
- 食物設計
- 操作設計
- 界面設計
3.2 開發說明
- C++ :編程語言
- Linux ubuntu 16.04 :開發環境
- openGL :第三方庫
備注:openGL 是一種圖形界面處理庫,提供了許多 API 給其他語言呼叫,我們的地圖、角色和界面等等都需要呼叫它,
四、詳細設計
4.1 提前準備
在這里首先需要為我們的專案創建一個檔案夾,進入 /home/shiyanlou/Code/ 目錄下,將我們這次的專案命名為 Pacman,進入這個檔案夾創建三個子檔案夾 inlcude(存放頭檔案)、src(存放源代碼)和 bin(存放可執行檔案),并創建相應的代碼檔案,具體內容與結構如下:
▲include 目錄下
- control.h
- createpacman.h
- food.h
- gameover.h
- gameresult.h
- gamestart.h
- init.h
- laberynth.h
- main.h
- monster.h
▲src 目錄下(相對應)
- control.cpp
- createpacman.cpp
- food.cpp
- gameover.cpp
- gameresult.cpp
- gamestart.cpp
- init.cpp
- labernth.cpp
- Pacman.cpp
- monster.cpp
4.2 預定義與全域變數
首先在 include 創建 main.h,用來存放頭檔案和一些全域變數,全域變數的定義是方便所有的模塊訪問并反映游戲的狀態,全域變數定義后,在主函式中進行賦值,所有模塊就都能訪問了,
//main.h
#ifndef _MAIN_H_
#define _MAIN_H_
#include <vector>
#include <GL/glut.h>
#include <iostream>
#include <cstring>
#define _USE_MATH_DEFINES
#include <math.h>
#include <vector>
#include <deque>
#include <stdlib.h>
using namespace std;
extern bool replay; //檢查是否啟動游戲
extern bool over; //檢查游戲是否結束
extern float squareSize; //一個單元大小
extern float xIncrement; // x坐標
extern float yIncrement; // y坐標
extern int rotation; // 方向
extern float* monster1; //第一個怪物的坐標和方向
extern float* monster2; //第二個怪物的坐標和方向
extern float* monster3; //第三個怪物的坐標和方向
extern float* monster4; //第四個怪物的坐標和方向
extern vector<int> border; //墻坐標
//障礙物坐標 (為了清晰分為三部分)
extern vector<int> obstaclesTop;
extern vector<int> obstaclesMiddle;
extern vector<int> obstaclesBottom;
extern deque<float> food;
extern vector<vector<bool>> bitmap; // 2d影像,可移動區域
extern bool* keyStates; // 按鍵狀態
extern int points; // 得分
#endif
......
接下來,還有“初始化游戲地圖”“怪物設計”“食物設計”等內容,點擊“C++ 使用 openGL 實作吃豆人游戲”,即可免費學習全部內容,并有游戲原始碼下載,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/3896.html
標籤:其他
