吃豆人(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 实现吃豆人游戏”中可学习全部内容,并有游戏源码下载。

我用C++复刻了这款上世纪最伟大的游戏相关推荐

  1. 口袋妖怪复刻怎么在电脑上玩 口袋妖怪复刻电脑版玩法教程

    重温经典,激情不减!高还原GBA手游力作<口袋妖怪复刻>进入第四世代,加入超过100只全新超强小精灵,更有新增神秘精灵(超进化)震撼来袭,引爆最强宿命对决!与此同时,数个新都市的开放.数十 ...

  2. 复刻了一个史上最强 Redis 6.0 版本

    阿里云 Redis 从 2015 年商用以来,一直是全球领先的云KV内存数据库产品,自从正式推出云数据库Redis 6.0版本,包含多项重大功能更新和大幅度的性能提升.相比于社区最初多线程版本的设计, ...

  3. python带你成功复刻热门手机游戏——飞翔的小鸟

    前言 大家早好.午好.晚好吖 ❤ ~欢迎光临本文章 飞翔的小鸟(游戏英文名:Flappy Bird) 一款由越南独立开发者开发的手机游戏,是之前非常流行的一款手机游戏 小游戏目标:让小鸟穿过管子,不要 ...

  4. linux 游戏 复刻,魔法门复刻手游官网版-魔法门复刻下载v4.00.9-Linux公社

    魔法门复刻是一款具有超级震撼的世界画面设计的手机游戏.黑暗的魔幻世界风,暗黑的人物形象设计,以及酷炫的游戏战斗场景,都将游戏打造得非常的暗黑系精致.并且游戏里面的种族战争,阵营设计非常的全面,< ...

  5. 超火的举牌加油小人生成器MATLAB复刻版(app designer)

    突然发现cla函数也可以应用到app designer控件上,因而对部分内容做出更改. 手痒,用matlab app designer复刻了一款举牌加油小人生成器,效果如下: 该程序可以生成正方形和长 ...

  6. 3310复刻版 java_情怀满满的经典之作 诺基亚3310复刻版评测体验

    情怀满满的经典之作 诺基亚3310复刻版评测体验 2017年06月30日 00:04作者:王瑞编辑:王瑞文章出处:泡泡网原创 分享 作为一名95后,我也经历过那个被诺基亚统治的时代,那时几乎所有人都在 ...

  7. 天锋w2019_天锋W2019复刻的如此登峰造极?网友大呼:三星你怎么看?

    不管黑的白的红的绿的,对很多人来说能满足自己的需求就是顶呱呱.买手机也是如此,不管价位如何品牌与否,对很多年轻人来说只要可以接打电话刷抖音,用起来666,都可以选择收入囊中.毕竟在这个口号胜于本质的潮 ...

  8. 【Unity2d】带你制作一款类似于金山打字的小游戏

    博主大概08年开始接触电脑游戏,当时玩的是我哥的电脑,那时候家里没网,只可以玩电脑上自带的单机游戏,比如扫雷.蜘蛛纸牌等等,当然还有红色警戒.冰封王座.星际争霸.帝国崛起等等,这些大概是我哥当时在大学 ...

  9. 用Spring Boot复刻一款天猫商城,你可以做到!

    日子一天天的在过,TJ君这两天一直有点惆怅,为啥呢?因为TJ君发现双11越来越近了,一想到等到了那天,TJ君的荷包会被某种不可抗拒之力打开大门,TJ君真是食不知味.寝食难安. 不过想到了双11就想到了 ...

最新文章

  1. 新手学电脑入门教程_炒股技巧大全丨炒股新手怎样才能长期稳定盈利
  2. 嵌入式系统编程软件架构主要包括哪些知识?
  3. 数据结构实验之链表三:链表的逆置
  4. Windows——蓝屏[失败的操作:HardwareProtect_x64.sys]解决方案
  5. vim粘贴板和系统粘贴板的共享(linux)
  6. BZOJ 2597 剪刀石头布(最小费用最大流)(WC2007)
  7. 设置dns_2019让你的网速飞起来,你需要……设置正确DNS服务篇
  8. Linux中删除文件夹和文件的命令
  9. UVA434 Matty‘s Blocks【贪心】
  10. win7做wifi服务器
  11. Leetcode91. Decode Ways
  12. JavaScript:屏蔽浏览器右键点击事件
  13. 浅谈权限设计(从接口权限到数据权限)
  14. Blend for Visual Studio
  15. 几款笔记软件的优缺点
  16. 2022-2028全球与中国移动网页浏览器市场现状及未来发展趋势
  17. Linux如何退出VI编辑
  18. 一星期总结:U盘量产与USB-CDROM制作及修改晨枫U盘维护V2.0完全攻略
  19. 在高德地图上添加折线
  20. linux常用命令及其python调用

热门文章

  1. WCF中安全的那些事!!!
  2. Visual Studio 2010安装教程
  3. sql每一个join都要加on
  4. 组态王6.55连接MySql数据库(笔记)
  5. “豆瓣酱”之用户,场景,功能
  6. 在C#2.0中使用Nullable可空类型(转帖)
  7. 国际化的Struts的开发步骤简介
  8. [SQL]批量修改存储过程视图
  9. tensorflow-RNN和LSTM
  10. Codeforces - tag::data structures 大合集 [占坑 25 / 0x3f3f3f3f]