吃豆人(Pac-man),想必熟悉電子遊戲發展史的玩家都不會陌生。ios
吃豆人是電子遊戲歷史上的經典街機遊戲,由Namco公司的巖谷徹設計並由Midway Games在1980年發行。編程
Pac-Man被認爲是80年代最經典的街機遊戲之一,遊戲的主角小精靈的形象甚至被做爲一種大衆文化符號,或是此產業的表明形象。ubuntu
但吃豆人的玩法如今看來,也許已經有些過期。編程語言
玩家要控制吃豆人吃掉迷宮裏面的全部豆子,同時儘量躲避小鬼怪。一旦吃豆人吃掉能量藥丸,它就能夠在必定時間內反過來欺負小鬼怪了。函數
不過,在漫漫遊戲長河中,吃豆人,永遠都會是最閃耀的那一顆。學習
它是電子遊戲的文化符號,同時獨創了迷宮追逐類型,簡單的畫面和玩法卻在電子遊戲史上留下了濃墨重彩的一筆。ui
所以,今天,我挑選了一個吃豆人開發教程分享給你們。復刻吃豆人,致敬經典!spa
實現效果以下:設計
此教程是免費資源,點擊「C++ 使用 openGL 實現吃豆人遊戲」,便可免費學習所有內容,並有遊戲源碼下載。3d
如下是教程節選:
1.1 實驗內容
本節實驗主要經過 C++ 和 openGL 庫來實現了一個吃豆人的小遊戲。主要的課程內容涉及到 C++ 相關的序列容器 vector 、deque 和迭代器,以及 openGL 相關的窗口初始化與繪圖功能。
1.2 知識點
1.3 實驗環境
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 開發說明
備註:openGL 是一種圖形界面處理庫,提供了許多 API 給其餘語言調用。咱們的地圖、角色和界面等等都須要調用它。
4.1 提早準備
在這裏首先須要爲咱們的項目建立一個文件夾,進入 /home/shiyanlou/Code/ 目錄下,將咱們此次的項目命名爲 Pacman。進入這個文件夾建立三個子文件夾 inlcude(存放頭文件)、src(存放源代碼)和 bin(存放可執行文件)。並建立相應的代碼文件,具體內容與結構以下:
▲include 目錄下
▲src 目錄下(相對應)
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 實現吃豆人遊戲」,便可免費學習所有內容,並有遊戲源碼下載。