这里声明,这个游戏是由本人,在大一暑假自作的第二个小游戏,转载请注明原帖地址,谢谢!

所有图片都是我一个人用ps搞出来的,比较简单.........毕竟不是学图像制作的,请体谅!另外,图片

不放出来了要运行此程序一定要去下载ege库,因为要用到里面的一个函数库graphics,下载好了,

在项目->属性->配置属性->C/C++处添加库目录即可。

玩法是:主角做自由落体运动,不能让它掉到底线,要按左右按键使它站在上升的云条上面,这样

就能跟着上升,但是不能超过顶线,也不能越过左右边界,否则都是输。分数达到一定程度,难度会增加

一个出现火箭,另一个是云条上升速度增加!

里面有详细的注释,将不再一一讲解,不懂请评论提出。


  1. #include<graphics.h>//这个是外部的函数库,图形库ege里面的,百度即可下载,这个函数库比win 的api 容易很多
  2. #include<stdlib.h>
  3. #include<time.h>
  4. class zhujue//角色基类,主角
  5. {
  6. public:
  7. void jiemian(PIMAGE image);//界面函数
  8. void load(PIMAGE image);//加载界面函数
  9. void judge(zhujue Q[],PIMAGE image);//撞墙判断函数
  10. void rocket(zhujue Q[],PIMAGE image);//火箭出现函数
  11. int x,y;
  12. int temp,score;
  13. };
  14. class yun:public zhujue//公开继承子类
  15. {
  16. public:
  17. void zaoyun(yun y[],PIMAGE image,int a);//制造云条函数
  18. void PanDuan(yun y[],zhujue Q[],PIMAGE image);//判断是否站在云条上面函数
  19. void panduan(yun y[],zhujue Q[],PIMAGE image,PIMAGE image1);//判断是否撞火箭函数
  20. void Score(zhujue Q[],yun y[]);//分数显示函数
  21. int x,y;
  22. };
  23. void zhujue::jiemian(PIMAGE image)
  24. {
  25. putimage(,0.5,image);
  26. }
  27. void zhujue::load(PIMAGE image)//加载出示画面的图片函数
  28. {
  29. PIMAGE img9=newimage();
  30. getimage(image,"图片包\\19.jpg");//函数getimage,获取图片,第一个参数是传入的PIMAGE 变量,第二个是路径
  31. putimage(,,image);//加载简介图片
  32. //Sleep(10000);//系统延迟10秒
  33. }
  34. void yun::zaoyun(yun y[],PIMAGE image,int a)//制造云条
  35. {
  36. if(y[a].x<)//防止重复产生x
  37. y[a].x=rand()%+;//随机产生x
  38. putimage(y[a].x,y[a].y+*a,image);//显示云条,在特定的位置显示出图片
  39. if(y[a].y+*a<=-)//云条到顶
  40. {
  41. y[a].y=-*a;//重新赋值y
  42. y[a].x=;//重新赋值x
  43. }
  44. }
  45. void yun::PanDuan(yun y[],zhujue Q[],PIMAGE image)//判断是否站在云条上
  46. {
  47. for(int i=;i<=;i++)//遍历坐标的判断
  48. {
  49. if((y[i].x<=Q[].x&&Q[].x<=y[i].x+&&Q[].y+<=y[i].y+*i&&Q[].y+>=y[i].y--Q[].score+*i)||
  50. (y[i].x<=Q[].x+&&Q[].x+<=y[i].x+&&Q[].y+<=y[i].y+*i&&Q[].y+>=y[i].y--Q[].score+*i))
  51. {
  52. if(Q[].temp==)//对左右面图像的输出判断。这里是用来当用户按左右键时,输出不同的图片
  53. putimage(Q[].x,Q[].y,image);//temp==0,左边
  54. else
  55. putimage(Q[].x,Q[].y,image);
  56. Q[].y-=*Q[].score;//控制角色y上升
  57. //Q.score++;
  58. }
  59. else //不满足站在云条条件时,输出角色图像,与上面不同的是,角色的y不会上升,即没站的效果
  60. {
  61. if(Q[].temp==)
  62. putimage(Q[].x,Q[].y,image);
  63. else
  64. putimage(Q[].x,Q[].y,image);
  65. }
  66. }
  67. }
  68. void yun::Score(zhujue Q[],yun y[])
  69. {
  70. for(int i=;i<=;i++)
  71. {
  72. if(Q[].y==y[i].y+*i||Q[].y==y[i].y+*i+)
  73. Q[].score++;
  74. }
  75. setcolor(BLUE);//设置字体颜色,这个是graphics 里面的,后面都是
  76. setfontbkcolor(WHITE);//背景颜色
  77. setfont(-,,"幼圆");//字体大小和类型
  78. xyprintf(,,"%d",Q[].score);//在特定的坐标处显示出分数
  79. }
  80. void zhujue::judge(zhujue Q[],PIMAGE image)
  81. {
  82. if(Q[].x<||Q[].x+>||Q[].y+<||Q[].y>)//所有撞墙条件的判断
  83. {
  84. putimage(,,image);//失败图像输出
  85. getch();//等待输入键
  86. getch();
  87. Q[].score=;//分数清零
  88. }
  89. }
  90. void zhujue::rocket(zhujue Q[],PIMAGE image)//产生火箭
  91. {
  92. if(Q[].x<)
  93. Q[].x=rand()%+;
  94. if(Q[].temp==)
  95. {
  96. putimage(Q[].x,Q[].y,image);//输出火箭图片,前两个参数是坐标
  97. Q[].y-=*Q[].score;
  98. }
  99. if(Q[].y<=)
  100. {
  101. Q[].y=;
  102. Q[].x=;
  103. }
  104. }
  105. void yun::panduan(yun y[],zhujue Q[],PIMAGE image,PIMAGE image1)//角色与火箭的碰撞
  106. {
  107. for(int i=;i<=;i++)//对火箭全面碰撞判断
  108. {
  109. if(Q[].x==Q[].x+i&&Q[].y+>=Q[].y+&&Q[].y<=Q[].y+)
  110. {putimage(,,image);putimage(Q[].x,Q[].y,image1);
  111. xyprintf(,,"%d",Q[].score);
  112. getch();getch();getch();Q[].score=;}
  113. if(Q[].x+==Q[].x+i&&Q[].y+>=Q[].y+&&Q[].y<=Q[].y+)
  114. {putimage(,,image);putimage(Q[].x,Q[].y,image1);
  115. xyprintf(,,"%d",Q[].score);
  116. getch();getch();getch();Q[].score=;}
  117. }
  118. }
  119. int main()
  120. {
  121. int d=,f=;//控制台的长、宽
  122. initgraph(&d,&f,"//tc");//开始的动画
  123. initgraph(,);//游戏窗口大小定义,初始化图像环境
  124. HWND hWnd = getHWnd(); // 获得窗口句柄
  125. SetWindowText(hWnd, TEXT("云端漂移小游戏"));// 使用 API 函数修改窗口名称
  126. zhujue Q[];//两个主角类对象
  127. Q[].x=,Q[].y=;//初始化主角的初始位置,以坐标来表示
  128. Q[].temp=,Q[].score=,Q[].score=;//初始化开始的分数,面向左边,云条上升速度,2像素
  129. Q[].x=,Q[].y=,Q[].temp=;
  130. yun y[];
  131. PIMAGE img=newimage();//创建图片对象,变量,要用到多少张图片就建多少个
  132. PIMAGE img1=newimage();
  133. PIMAGE img2=newimage();
  134. PIMAGE img3=newimage();
  135. PIMAGE img5=newimage();
  136. PIMAGE img6=newimage();
  137. PIMAGE img7=newimage();
  138. PIMAGE img8=newimage();
  139. PIMAGE img4=newimage();
  140. PIMAGE img9=newimage();
  141. getimage(img4,"图片包\\14.jpg");//获取图片
  142. getimage(img,"图片包\\10.jpg");
  143. getimage(img1,"图片包\\11.jpg");
  144. getimage(img2,"图片包\\12.jpg");
  145. getimage(img3,"图片包\\13.jpg");
  146. getimage(img5,"图片包\\15.jpg");
  147. getimage(img6,"图片包\\16.jpg");
  148. getimage(img7,"图片包\\17.jpg");
  149. getimage(img8,"图片包\\18.jpg");
  150. getimage(img9,"图片包\\19.jpg");
  151. //putimage(200,95,img);
  152. for(int i=;i<=;i++)//初始化5条云条的位置
  153. {
  154. y[i].x=;
  155. y[i].y=;
  156. }
  157. srand((unsigned)time(NULL));//随机种子
  158. Q[].load(img9);//开头的图片输出
  159. for(;is_run();y[].y-=Q[].score,y[].y-=Q[].score,y[].y-=Q[].score,y[].y-=Q[].score,
  160. y[].y-=Q[].score,y[].y-=Q[].score,Q[].y+=Q[].score,delay_fps())//云条速度控制
  161. {
  162. //putimage(Q.x,Q.y,img5);
  163. //cleardevice();
  164.  
  165. Q[].jiemian(img4);
  166. y[].zaoyun(y,img,);//制造云
  167. y[].zaoyun(y,img1,);
  168. y[].zaoyun(y,img2,);
  169. y[].zaoyun(y,img3,);
  170. y[].zaoyun(y,img2,);
  171. y[].zaoyun(y,img,);
  172. if(Q[].temp==)//control the 图像的朝向面
  173. y[].PanDuan(y,Q,img5);
  174. else
  175. y[].PanDuan(y,Q,img6);
  176. y[].panduan(y,Q,img8,img7);
  177. if(keystate(VK_LEFT)==)//是否有左按键
  178. {
  179. Q[].x-=;
  180. Q[].temp=;
  181. }
  182. else if(keystate(VK_RIGHT)==)//右
  183. {
  184. Q[].x+=;
  185. Q[].temp=;
  186. }
  187. //Q.score1(Q,y);
  188. y[].Score(Q,y);
  189. Q[].judge(Q,img8);
  190. if(Q[].score>=)//分数控制条件
  191. Q[].temp=;
  192. Q[].rocket(Q,img7);
  193. //Q.y-=10;
  194. if(Q[].score<=)//分数大于15,增加难度,火箭出现,云条移动速度变为4
  195. Q[].score=;
  196. else if(Q[].score>&&y[].y==)
  197. Q[].score=;
  198. }
  199. closegraph();//关闭图像环境
  200. return ;
  201. }

效果图:

转载请注明原出处,谢谢!

C/C++,彩色图像小游戏。的更多相关文章

  1. jQuery实践-网页版2048小游戏

    ▓▓▓▓▓▓ 大致介绍 看了一个实现网页版2048小游戏的视频,觉得能做出自己以前喜欢玩的小游戏很有意思便自己动手试了试,真正的验证了这句话-不要以为你以为的就是你以为的,看视频时觉得看懂了,会写了, ...

  2. 拼图小游戏之计算后样式与CSS动画的冲突

    先说结论: 前几天写了几个非常简单的移动端小游戏,其中一个拼图游戏让我郁闷了一段时间.因为要获取每张图片的位置,用`<style>`标签写的样式,直接获取计算后样式再用来交换位置,结果就悲 ...

  3. 推荐10款超级有趣的HTML5小游戏

    HTML5的发展速度比任何人的都想像都要更快.更加强大有效的和专业的解决方案已经被开发......甚至在游戏世界中!这里跟大家分享有10款超级趣味的HTML5游戏,希望大家能够喜欢! Kern Typ ...

  4. 如何开发一个简单的HTML5 Canvas 小游戏

    原文:How to make a simple HTML5 Canvas game 想要快速上手HTML5 Canvas小游戏开发?下面通过一个例子来进行手把手教学.(如果你怀疑我的资历, A Wiz ...

  5. JavaScript版拼图小游戏

    慕课网上准备开个新的jQuery教程,花了3天空闲时间写了一个Javascript版的拼图小游戏,作为新教程配套的分析案例 拼图游戏网上有不少的实现案例了,但是此源码是我自己的实现,所以不做太多的比较 ...

  6. C语言-纸牌计算24点小游戏

    C语言实现纸牌计算24点小游戏 利用系统时间设定随机种子生成4个随机数,并对4个数字之间的运算次序以及运算符号进行枚举,从而计算判断是否能得出24,以达到程序目的.程序主要功能已完成,目前还有部分细节 ...

  7. Cocos2d-x 版本小游戏 《是男人就下100层》 项目开源

    这个是很久就开始动手写的一个小游戏了,直到最近才把它收尾了,拖拖拉拉的毛病总是很难改啊. 项目是基于 cocos2d-x v2.2 版本 ,目前只编译到了 Win8 平台上,并且已经上传到了商店,支持 ...

  8. Chrome 中的彩蛋,一款小游戏,你知道吗?

    今天看到一篇文章,介绍chrome中的彩蛋,带着好奇心进去看了一眼,没想到发现了一款小游戏,个人觉得还不错,偶尔可以玩一下,放松放松心情!^_^ 当 Chrome 无法连接到互联网时, 或者上着网突然 ...

  9. 软件工程:黄金G点小游戏1.0

    我们要做的是黄金G点小游戏: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值. ...

随机推荐

  1. Swing学习笔记1-----Swing组件类的层次

    1.  从结构上划分 Swing 组件类分为两种,一种是JComponent类,一种是Windows类.其中windows类包含的是一些可以独立显示的组件,而JComponent类包含的是不可以独立显 ...

  2. 向mysql中插入Date类型的数据

    先看数据库表的定义 date字段为sql.date类型.我要向其中插入指定的日期和当前日期. 一.插入当前日期 思路:先获取当前系统,在将当前系统时间转换成sql类型的时间,然后插入数据库.代码如下 ...

  3. jquery 中的框架

    DWZ 国产Ajax RIA开源框架 Ninja UI 框架    提供页面插件 angela ui框架  表单布局等 Chico UI    快速页面布局  PrimeUI    w2ui   布局 ...

  4. 在服务器上启用HTTPS的详细教程

    现在,你应该能在访问https://konklone.com的时候,在地址栏里看到一个漂亮的小绿锁了,因为我把这个网站换成了HTTPS协议.一分钱没花就搞定了. 为什么要使用HTTPS协议: 虽然SS ...

  5. Powershell 十个常见任务

    学习Powershell的时候,基本的语法也了解了一些,但是就是不知道要写些什么?作为一个过来者,和大家一起分享下常见的几个管理任务脚本. 1.更改本地Administrator账号密码 [ADSI] ...

  6. 玩转SQL Server复制回路の变更数据类型、未分区表转为分区表

    玩转SQL Server复制回路の变更数据类型.未分区表转为分区表 复制的应用: 初级应用:读写分离.数据库备份 高级应用:搬迁大型数据库(跨机房).变更数据类型.未分区表转为分区表 京东的复制专家 ...

  7. 【Hello CC.NET】CC.NET 实现自动化集成

    一.背景 公司的某一金融项目包含 12 个子系统,新需求一般按分支来开发,测完后合并到主干发布.开发团队需要同时维护开发环境.测试环境.模拟环境(主干).目前面临最大的两个问题: 1.子系统太多,每次 ...

  8. ABP理论学习之领域服务

    返回总目录 本篇目录 介绍 IDomainService接口和DomainService类 样例 创建一个接口 服务实现 调用应用服务 一些讨论 何不只使用应用服务 如何强制使用领域服务 介绍 领域服 ...

  9. 剑指Offer面试题:11.打印1到最大的n位数

    一.题目:打印1到最大的n位数 题目:输入数字n,按顺序打印出从1最大的n位十进制数.比如输入3,则打印出1.2.3一直到最大的3位数即999. 二.不同的解法 2.1 不假思索的解法 最容易想到的办 ...

  10. Step by step Install a Local Report Server and Remote Report Server Database

    原创地址:http://www.cnblogs.com/jfzhu/p/4012097.html 转载请注明出处 前面的文章<Step by step SQL Server 2012的安装 &g ...