c语言编写小游戏系列教程之推动箱子,C_C++,自学去
2015/1/22【新提醒】c语言编写小游戏系列教程之推动箱子,C/C++,自学去
设为首页收藏本站
admin 在线 |每日签到 |我的 |设置 |消息 |提醒(2) |门户管理 |管理中心 |退出积分: 9681
|
用户组: 管理员消息
新听众(3)坛友互动(1)
论坛视频教程c/c++PHP问答平台编程文章
帖子
个人空间搜索QQ群
快捷导航我的帖子(1)
请输入搜索内容论坛
编程语言
C/C++
c语言编写小游戏系列教程之推动箱子
热搜:c语言java编程教程自学去
返回列表
删除主题|升降|置顶|直播|高亮|精华|图章|图标|关闭|移动|分类|复制|索合并|分割|修复|警告|屏蔽|标签|生成文章
查看: 519|回复: 1admin
[精品文章] c语言编写小游戏系列教程之推动箱子 [复制链接]
发表于 201514 18:47:19 | 只看该作者
楼主电梯直达
上节课:上节课中 我们已经实现了人物的移动,大家的可以发现,人物可以移动,但是却不能推动箱子,还能穿过障碍物和箱子。
这节课,我们的人物,就是解决这两个问题,推动箱子,还有障碍物检测。
在这之前不得不先说一个问题,随着程序代码越来越多,我们一个文件中代码已经很长了,这样不利于代码的阅读和维护,所以这节课我们决定将代码 按照功能来分成不同的文件,类似模块化编程,每个功能就是一个模块。如何把代码放到多个文件呢?
把代码的申明部分放到,头文件中,实现部分 放到源文件中。
学
790主题管理员
3975帖子9681积分
积分9681
比如,关于箱子操作的函数以及箱子的结构体定义,我们就放在 box.h中 函数的具体功能实现就放在 box.c 中。人物操作 就放在 person.h 和 person.c中。其他的也是 类似。
头文件如何写?
我们看看例子,下面是 box.h 的所有内容
01. #ifndef _BOX_H_02. #define _BOX_H_
03. 04. #include <config.h>05.
IP
编辑禁止帖子清理
06. //定义箱子结构体07. typedef struct{08. int x;09. int y;10. char flag;11. int state;12. } box_t;
13. 14. //设置箱子位置
15. void set_box(box_t*, int x, int y);
16. //移动箱子,返回0表示成功移动,返回非0表示不能移动17. int move_box(box_t*, dir_t);18. //根据地图坐标获取指定box19. box_t* get_box(int x, int y);20. 21.
#endif复制代码
#ifndef _BOX_H_#define _BOX_H_.............#endif
这段代码,作用是防止头文件被重复的包含,重复包含,这些函数就会被重复的申明,编译器将报错。
第一行 检测 如果这个 常量 _BOX_H_ 没有被定义了,就定义这个变量,然后 下面的函数声明 就会被编译进去,这样的话,如果第二次再包含了这个头文件,会再次检测 这个常量 _BOX_H_是否被定义的时候 ,由于已经定义过了,这段函数声明 就不会被编译进去,保证了这段头文件代码 只能被包含一次。
我把一些公共的类型都定义在 config.h 头文件中,在每个文件中都包含,比如 kdir 这些枚举类型就是声明在 config.h中。
好了,头文件有了,接下来看对应的源文件 box.c
01. #include <config.h>02. 03. /*
04. 函数功能:箱子是否可以移动,返回0表示不可移动05. */
06. static int can_move(box_t* box, dir_t dir)07. {
08. int x=0,y=0; //保存 在x y方向上的移动距离09.
10. switch(dir)11.
{
12. case UP:13. y‐‐;14. break;15. case DOWN:16. y++;17. break;18. case LEFT:19. x‐‐;20. break;21. case RIGHT:22. x++;23. break;24. default:25. break;26. …… 此处隐藏:409字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




