贪吃蛇C C++程序源代码

1. //这个是背景的单元格数据结构 2. const length = 40; 3. const width = 20; 4. struct square{ 5. bool blocked; //是否有障碍物 6. bool food; //是否有食物 7. int x; //单元格在背景中的相对横坐标 8. int y; //单元格在背景中的相对纵坐标 9. }bg[length][width]; //直接创建游戏背景 10. 。。。。。。。。 #include <iostream.h> #include <windows.h> #include <stdlib.h> #include <conio.h> #include <time.h> //使用当前时间做种子; enum dir{up,down,left,right}; //枚举类型enum dir; //围墙; ### 贪吃蛇C/C++程序源代码分析 #### 数据结构定义 1. **单元格数据结构**:为了构建游戏界面,程序首先定义了一个结构体`struct square`,用于表示游戏背景中的每一个单元格。该结构体包含了四个成员: - `bool blocked;`:布尔型变量,用于标识该单元格是否有障碍物。 - `bool food;`:布尔型变量,用于标识该单元格是否有食物。 - `int x;`:整型变量,代表该单元格在游戏背景中的相对横坐标。 - `int y;`:整型变量,代表该单元格在游戏背景中的相对纵坐标。 通过定义这样的结构体,可以方便地管理游戏背景中的每个单元格的状态。 2. **游戏背景数组**:接着使用`struct square`定义了一个二维数组`bg[length][width]`来表示整个游戏的背景。其中`const length = 40;`和`const width = 20;`分别定义了游戏背景的长度(列数)和宽度(行数),即游戏背景为40列×20行的网格。 #### 游戏初始化函数 1. **设置背景**:`void setBG(int length, int width)`函数负责初始化游戏背景,具体步骤包括: - 创建并初始化了控制台窗口句柄`HANDLE hOut`和坐标位置结构体`COORD OutChar`,以便在控制台上绘制单元格。 - 通过双层循环遍历整个二维数组,将每个单元格的坐标、障碍物状态和食物状态进行初始化,并在控制台上绘制出空白的单元格。 2. **构造障碍物**:`void createBlock(int x, int y, unsigned short color)`函数用于在指定坐标位置绘制障碍物,参数`color`表示障碍物的颜色。 - 使用`SetConsoleCursorPosition`函数定位光标到指定坐标位置,然后通过`cout`语句输出具有特定颜色的空白字符,从而在控制台上显示出来。 3. **生成单个障碍物**:`void createWall(int x, int y)`函数是在指定位置创建障碍物的具体实现。它调用`createBlock`函数绘制绿色障碍物,并更新对应单元格的`blocked`状态为`true`。 4. **随机生成障碍物**:`void rand_createWall(void)`函数负责随机生成一定数量的障碍物。 - 首先使用`time`函数和`srand`函数以当前时间为种子设置随机数生成器,确保每次运行程序时生成不同的随机数序列。 - 再通过循环和`rand`函数生成随机坐标,并调用`createWall`函数创建障碍物。同时使用`checkExisted`函数确保不会在同一位置重复创建障碍物。 5. **判断坐标是否被占用**:`bool checkExisted(int x, int y)`函数用于检查指定坐标位置是否已经被占用,即是否有障碍物或食物存在。 6. **创建食物**:`void createFood(int x, int y)`函数与`createWall`类似,用于在指定位置创建食物,颜色为蓝色,并更新对应单元格的`food`状态为`true`。 7. **随机创建食物**:`void rand_createFood(void)`函数负责随机生成一定数量的食物。 - 类似于`rand_createWall`函数,通过随机坐标生成和调用`createFood`函数创建食物,同时使用`checkExisted`函数避免食物出现在已有障碍物的位置上。 #### 总结 以上代码片段展示了贪吃蛇游戏中游戏背景的初始化、障碍物和食物的生成等关键功能。通过这些函数的实现,可以有效地构建起游戏的基本框架。此外,这些代码还涉及到了控制台绘图、随机数生成和数据结构操作等多个方面,对于初学者来说是非常好的学习示例。















剩余10页未读,继续阅读

- woodzcz2013-01-02没看清文件类型,下来是个word文档,没法直接用来测试看看,积分要的有点高
- trueman30002013-01-04代码很经典,不过还没怎么看懂。继续研究中。
- panyanqiao2013-07-25东西不错,不过我是菜鸟,不怎么懂
- cheung1892013-11-25很经典的遊戲,代碼很值得參考
- 避马瘟2013-07-08没法直接用,但是可以看出代码中蛇移动的算法、转向以及吃食的算法。代码的结构也还行。

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 丁二烯罐基础施工方法研究(PPT).ppt
- 郑州绿地广场立面.doc
- 图书馆管理系统程序设计代码.docx
- 互联网+视域下职业院校顶岗实习管理模式优化探究.docx
- 基于单片机的霓虹灯控制器的方案设计书.doc
- 国际分公司土方坍塌应急预案.docx
- 顾客财产台帐表.docx
- 地产项目规划设计回顾.doc
- 225-连锁经营企业《培训手册》.doc
- 钢板桩设计及施工作业指导书.doc
- 河南国基建设集团有限公司彭建新QC小组定稿.ppt
- [河北]框架剪力墙结构综合病房楼模板施工方案.doc
- 站前广场地下空间深基坑支护与降水专家评审汇报材料.ppt
- 某螺栓球网架网架屋面工程施工方案.doc
- 关于大学计算机面向应用的分类教学与计算思维培养的研究.docx
- 质量缺陷桩基补强处理施工方案.doc


