C/C++,彩色图像小游戏。

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

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

效果图:

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

时间: 2024-10-03 21:57:31

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

js选择颜色小游戏(随机生成不含重复数字的数组,通过数组中的数控制定义好的数组)

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>js网页版小游戏</title> <style media="screen"> .wrap { width: 577px; outline: 1px solid hotpink; margin: 100px auto; box-shadow: 0 0 5px; } .

使用AxureRP7.0制作经典小游戏"大家来找茬"

本案例是<网站蓝图AxureRP7.0从入门到精通视频教程>中的最后一节,适用于对Axure基础知识掌握比较熟练的同学:教程由axure原型库网站录制,转载请注明出处!相信很多刚接触Axure或者学习了一段时间但并没有深入的同学们,看到这个案例一定很惊讶,使用Axure竟然能做出如此逼真的交互效果!通过此案例也可以激发广大同学们学习Axure的热情和信心!试想一下,如果你有情侣的话,把你们珍藏的合影拿出来处理几张,做成大家来找茬的小游戏,不但锻炼了自己的技能,还能给对方一个惊喜,岂不是一举两得

使用AxureRP7.0制作经典数独小游戏原型,axure游戏原型下载

之前,有同学在Q群中提问,如何使用axure制作经典数独解谜小游戏,当时由于时间关系没有来得及亲手制作,而是给同学们提供了Axure6.5版本的一个数独解谜游戏的原型,本教程由axure原型库网站录制,转载请注明出处!但是那个原型做的太过繁杂,所以仅供大家参考交流:在此,金乌老师特地抽时间给同学们使用AxureRP7.0制作了一下,感觉对实战逻辑分析和axure变量的掌握比较有考验,所以就放出来供大家学习交流使用. 在学习的过程中,如果你仅凭自己现有的对axure的掌握,无法准确分析并组织出原型

【H5小游戏开发教程】如何限制微信游戏只能在微信端打开?

在这行里接触的时间多了,就会发现很多有意思的东西. 比如,很多微信小游戏会限制只能在微信端打开,有木有? 有这样的, 也有这样的, 妈蛋,不能用PC访问,这游戏就没法扒呀..... 其实涛舅舅告诉你,这两种都可以扒 而且是用PC! 但是今天,我不教你扒皮 我要教你的是,怎么让你的微信游戏也能限制PC打不开 很想学吧  准备开始! 1.第一种不提了,因为人家是设置了微信授权登录,从微信那里就拦截住了,只能用微信访问,你可能弄不了这么高级的微信授权这块,如果你真能弄,这一讲你也不用听了,因为你已经能

Chrome自带恐龙小游戏的源码研究(完)

在上一篇<Chrome自带恐龙小游戏的源码研究(七)>中研究了恐龙与障碍物的碰撞检测,这一篇主要研究组成游戏的其它要素. 游戏分数记录 如图所示,分数及最高分记录显示在游戏界面的右上角,每达到100分就会出现闪烁特效,游戏第一次gameover时显示历史最高分.分数记录器由DistanceMeter构造函数实现,以下是它的全部代码: 1 DistanceMeter.dimensions = { 2 WIDTH: 10, //每个字符的宽度 3 HEIGHT: 13, //每个字符的高 4 DE

C语言小游戏设计报告

课程设计名称:贪吃蛇小游戏 专业班级:计科15-2 学号:150809229 姓名:XXX 一.设计目标 通过设计,培养学生对电脑的动手能力,使学生巩固<C语言程序设计>课程学习的内容,掌握编写程序的基本方法,强化对其的动手能力,可以独自完成程序的编写. 二.设计内容和要求 设计内容 编写贪吃蛇的小游戏,使其可以成功运行并且操作玩耍. 设计要求 1)源程序要有适当的注释,使程序便于阅读. 2)要有程序运行结果作为依据 三.程序流程 1.编写地图 运用函数,数组编写地图 2.相同的方法把蛇添加进

用Python写一个小游戏

刚学Python时间不长,但也知道了一点,看别人的参考写了一个猜数字小游戏,也算是禹学于乐吧. #!/usr/bin/env   python #coding=utf-8 import random secret = random.randint(1,100) guess,tries = 0,0 print u"已经给出了一个1-99的数字" while guess != secret and tries < 5: print u"请给出你猜的数字:" pri

2D命令行小游戏Beta1.0_代码

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _2D命令行小游戏Beta1_0 { class Game { public Game(int scale) { _scale = scale; peox = 1; peoy = 1; map = new int[_scale, _scale];

python小游戏之课堂提问器

今天,接着前边的python小游戏,又写了个课堂提问器小程序.供大家一乐! #coding:utf-8 from random import randint print '\033[1;32;40m', print '你好,请选择需要几位作答者?\n' print '请输入作答者的人数:', t=1 i=input() data=[] while t<=i:     r=randint(0,32)    # print m[r],     data.append(m[r])     t+=1 p