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 库感兴趣的同学。

1.5 代码获取

//解压源代码

unzip -q Pacman.zip

二、环境准备

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

include

include

include

define _USE_MATH_DEFINES

include

include

include

include

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 border; //墙坐标

//障碍物坐标 (为了清晰分为三部分)

extern vector obstaclesTop;

extern vector obstaclesMiddle;

extern vector obstaclesBottom;

extern deque food;

extern vector bitmap; // 2d图像,可移动区域

extern bool* keyStates; // 按键状态

extern int points; // 得分

linux 吃豆人游戏,C++ 使用 openGL 实现吃豆人游戏相关推荐

  1. C++ 使用 openGL 实现吃豆人游戏

    一.游戏须知 1.1  实验内容       本节实验主要通过 C++ 和 openGL 库来实现了一个吃豆人的小游戏.主要的课程内容涉        及到 C++ 相关的序             ...

  2. steam+linux+吃鸡游戏,steam十款免费吃鸡大逃杀游戏推荐

    今天为大家推荐十款steam免费吃鸡大逃杀游戏.虽然是免费游戏,但还是有许多因为玩法创新而被玩家热捧,如果你喜欢吃鸡游戏,又不愿意花钱买,那么今天的推荐不容错过! <瓦尔格雷夫:不朽的平原> ...

  3. 20年,1人写出70万行代码!沙盒游戏「鼻祖」13年靠玩家捐赠维生

    本文转载自 新智元 一款游戏,让一位玩家皈依佛教. 这位玩家曾寄信开发者,因其开发的游戏理解了「众生皆苦,世事无常」. 究竟是什么游戏还能让人看破红尘? Dwarf Fortress (矮人堡垒)! ...

  4. 高嘌呤食物搜索引擎_“高嘌呤”的食物已发现,尿酸高的人,要尽量挑着吃!...

    导语:在我们的生活中又出现了一种现象,越来越频发,也是越来越倾向于年轻化,那么就是高尿酸,现在高尿酸已经被列为了我们国家的第四高,身体内的嘌呤含量是一部分,那么另一部分也是来源于我们平时摄入的食物,所 ...

  5. 为什么吃鸡显示连接不到服务器,为什么吃鸡进游戏显示连接不上 | 手游网游页游攻略大全...

    发布时间:2015-09-28 原因:显卡太老,不支持DX9.0c+SM3.0 解决方法:换新显卡 标签: 发布时间:2017-05-12 怎么吃鸡?相信很多新手玩家在经过几十甚至上百小时的游戏洗礼之 ...

  6. @[666_C++牛人放出超屌代码]3d超级枪战小游戏

    @[666_C++牛人放出超屌代码]3d超级枪战小游戏 介绍: 本游戏为联网游戏,设置玩家最多为10人,死亡后强制踢出. 可执行文件为Start.exe,点击打开即可 你可以按住Alt+Tab键在控制 ...

  7. 未转变者rust服务器推荐,如果steam只留一个游戏,你会选择吃鸡还是CSGO

    随着steam被更多的玩家所知道,吃鸡这款游戏简直火得一塌糊涂. 那么,现在我们来假设一个情况,假如steam遭遇某些神秘力量的打击而导致关闭所有游戏. 只能保留一款游戏,那么,你会选择绝地求生呢?还 ...

  8. c++ vector最大值_第14章 火柴人的无尽冒险(《C和C++游戏趣味编程》配套教学视频)...

    本章我们将编写一个2D跑酷类游戏,玩家键盘控制火柴人奔跑和跳跃,躲避蝙蝠到达终点.游戏地图随机生成,随着关卡数的增加,游戏难度越来越大,效果如图所示. 首先定义Player类,实现异步输入控制和延时改 ...

  9. 砸钱抢人抢项目,腾讯字节血拼游戏

    2021年,互联网大厂在游戏行业"杀"疯了. 企查查数据显示,2021年仅过去半年,游戏行业投资高达126起,创下近年新高,数量较2019年.2020年同期分别上涨了34%.157 ...

最新文章

  1. 2021年大数据Hive(十一):Hive调优
  2. java面向对象思维导图_2020年Java进阶架构师的必备思维导图,让你少走弯路!
  3. 独家 | 关于数据湖架构、战略和分析的8大错误认知(附链接)
  4. 使用数据库中的Java流制作数据透视表
  5. LAMP架构之编译安装httpd+(php-fpm)+mariadb
  6. python函数整理
  7. java 文件上传 配置_SpringMVCMultipartFilefile文件上传及参数接收
  8. 拒绝无脑吹!从ACL20看预训练缺陷
  9. 安卓设备java代码编辑器_15款android设备上的代码编辑器,超级方便!-Go语言中文社区...
  10. php浮动广告,JavaScript实现漂浮广告代码的实例总结
  11. TranslateAnimation祥解
  12. 高分七号卫星发射成功
  13. SpringCloud使用Feign调用第三方接口
  14. 根据银行卡号查询银行卡字母及银行卡名称
  15. 王家林大咖清华新书预发布:《企业级AI技术内幕:深度学习框架开发+机器学习案例+Alluxio解密》之盘古人工智能框架多层次神经网络的实现
  16. 初识Modern UI for WPF
  17. 图解数据结构与算法【Java】0概述
  18. SQL Server无法以local 登陆问题的解决方法provider: Named Pipes Provider, error: 40 - Could not open a connection
  19. matlab四叶玫瑰线,多种语言画玫瑰,总有一款适合你表白
  20. 全球及中国融媒体行业建设发展机遇及运营前景调研报告2021-2027年

热门文章

  1. 制造业信息化领域,采用迈特 MIt PDM/PLM3.8作为集成支撑平台 与UG、CATIA、PRO/E、SOLIDEDGE、SOLIDWORKS、MDT等三维CAD软件和常用二维CAD软件集成
  2. 收银管理软件优化实体店三大模块?
  3. 【工具类】如何查找PCT专利的授权情况
  4. unity实现动态拼图的思路总结
  5. ORACLE基础知识(2--5)章节
  6. java计算机毕业设计二手车交易平台源码+mysql数据库+系统+lw文档+部署
  7. 【WDS组网】闲置TPlink路由器WDS组网
  8. java图片等比缩小算法,java 图片的放大与缩小--等距采样算法
  9. 爬虫之爬取中国移动采购与招标网
  10. Unity Text显示中文