马里奥吃金币游戏
2017-08-25 11:20
671 查看
马里奥吃金币游戏
游戏生成8个金币以及4个炸弹,都是动态的精灵
马里奥可以上下左右移动
100s内吃完金币算赢,碰到炸弹算输
开始游戏后会有倒计时100s,在最后10s秒数每隔1s闪烁一次,右上角会显示吃到的金币数
赢了之后界面暂停,显示红色文字You Win!从小到大慢慢显示,输了之后显示youlose
游戏界面等自主设计,但采用了别人的游戏引擎,这点还需要多加改进,但游戏思路可以有
游戏引擎采用的别人的设计的接口
需要自己多加考虑函数里面是怎么写的
但给我提供了一种设计思想也是不错的
游戏大概代码如下:
游戏生成8个金币以及4个炸弹,都是动态的精灵
马里奥可以上下左右移动
100s内吃完金币算赢,碰到炸弹算输
开始游戏后会有倒计时100s,在最后10s秒数每隔1s闪烁一次,右上角会显示吃到的金币数
赢了之后界面暂停,显示红色文字You Win!从小到大慢慢显示,输了之后显示youlose
游戏界面等自主设计,但采用了别人的游戏引擎,这点还需要多加改进,但游戏思路可以有
游戏引擎采用的别人的设计的接口
需要自己多加考虑函数里面是怎么写的
但给我提供了一种设计思想也是不错的
游戏大概代码如下:
#include <yzkgame.h> #include <time.h> #include <stdlib.h> #include <math.h>//sqrt #include <stdio.h> #pragma comment( linker, "/subsystem:\"console\" /entry:\"mainCRTStartup\"" )// //#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )//改成windows只有游戏窗口 #pragma comment(lib, "YZKGame.lib") void gameMain(void) { time_t timep; //定义时间 int bgImg=0,i,x=200,y=500,x1,y1,time1; //定义及初始化 int mario=0,leap,n=8,k=0; char a[]="0"; char b[20][2]={"1","2","3","4","5","6","7","8"}; int coinNums[]={1,2,3,4,5,6,7,8}; //8个精灵金币的编号 int coinX[]={100,300,50,90,150,260,550,390}; //定义及初始化8个金币生成的坐标,也可随机产生 int coinY[]={33,500,50,100,120,240,360,450}; int boomx[5]; int boomy[5]; char time2[15]={0}; time1=time(&timep); //time1得到游戏开始时间 setGameSize(1000,600); //设置窗口大小 setGameTitle("马里奥吃金币"); //设置窗口名称 srand((unsigned)time(NULL)); //随机时间函数 createText(14,"倒计时 100s"); //游戏倒计时100s,时间到没吃完结束 setTextColor(14,1,1,0); //设置文本颜色 setTextFontSize(14,25); //设置文本大小 setTextPosition(14,500,550); //设置文本位置 createImage(10,"0.png"); //创建图片,编号为10,是金币的图 setImagePosition(10,900,550); //设置位置 createText(0,"X"); //创建文本 setTextColor(0,1,1,0); setTextPosition(0,930,550); createText(1,a); setTextColor(1,1,1,0); setTextPosition(1,950,550); createImage(bgImg,"大片草地.png"); //设置背景 createSprite(mario,"mario"); //创建精灵mario playSpriteAnimate(mario,"walk"); //播放精灵动画 setSpritePosition(mario,200,500); //设置精灵位置 for(i=10;i<13;i++) //随机生成4个炸弹的位置 { createSprite(i,"bomb"); playSpriteAnimate(i,"laser"); x1=rand()%1000; boomx[i-10]=x1; y1=rand()%600; boomy[i-10]=y1; setSpritePosition(i,x1,y1); } for(i=0;i<8;i++) //设置金币的位置 { createSprite(coinNums[i],"coin"); playSpriteAnimate(coinNums[i],"rotate"); setSpritePosition(coinNums[i],coinX[i],coinY[i]); } createText(13,"You Lose!"); //只是输了,并先隐藏 hideText(13); while(1) //连续移动人物mario { int ch=getPressedKeyCode();//只适合连续 if(RP_KEY_DOWN==ch) //下移 setSpritePosition(0,x,--y); if(RP_KEY_UP==ch) //上移 setSpritePosition(0,x,++y); if(RP_KEY_LEFT==ch) //左移 { setSpritePosition(0,--x,y); setSpriteFlipX(0,FALSE); //改变朝向 } if(RP_KEY_RIGHT==ch) //右移 { setSpritePosition(0,++x,y); setSpriteFlipX(0,TRUE); //改变朝向 } leap=0; //标志位,判断是否吃到金币 for(i=0;i<n;i++) { if(isSpriteVisible(coinNums[i])&&((x-coinX[i])*(x-coinX[i])+(y-coinY[i])*(y-coinY[i]))<100) //判断与金币的位置小于10像素且金币是显示的就算吃到 { leap=1; break; } } if(leap==1) //如果吃到隐藏 { hideSprite(coinNums[i]); setText(1,b[k++]); //金币数+1 } for(i=10;i<13;i++) //判断与炸弹是否接触,接触的话显示出you lose文字 { if(isSpriteVisible(i)&&((x-boomx[i-10])*(x-boomx[i-10])+(y-boomy[i-10])*(y-boomy[i-10]))<100) { showText(13); setTextColor(13,1,0,0); setTextPosition(13,400,250); setTextFontSize(13,30); for(i=0;i<10;i++) { setTextFontSize(13,30+i*10); setTextPosition(13,475-i*5,250-i*5); pauseGame(50); } pauseGame(2000); break; } } if(k==8) //如果金币数等于8,算赢 { createText(12,"You Win!"); setTextColor(12,1,0,0); setTextPosition(12,475,250); setTextFontSize(12,30); for(i=0;i<10;i++) //由小变大显示出You Win! { setTextFontSize(12,30+i*10); setTextPosition(12,475-i*5,250-i*5); pauseGame(50); } pauseGame(5000); break; } sprintf(time2,"倒计时 %ds",100-(time(&timep)-time1));//倒计时秒数 setText(14,time2); //改变倒计时处的文字 if((time(&timep)-time1)>=90) //如果剩下最后10秒,文字每隔一秒闪动一次 { hideText(14); if((100-(time(&timep)-time1))%2==0) showText(14); } if((time(&timep)-time1)>=100) //100秒后还没吃完金币游戏结束 break; pauseGame(10); } }
相关文章推荐
- COCOS2D-X Battle 独立游戏 (二) 新建游戏主工程
- 游戏地图分块加载资源篇——切图工具
- Unity3D通过脚本修改游戏对象图标Select Icon
- 【BZOJ4945】[Noi2017]游戏 2-SAT
- 人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[4]——一步莲华
- 报数游戏2
- OpenGL: 透明 不透明 混合【3D游戏引擎设计】
- C# 消除游戏
- 常用游戏/程序设计网站(持续更新)
- 一个监视CSDN论坛押宝游戏状态的python脚本
- 游戏优化(一)
- code vs 1966 乘法游戏
- 游戏中各向异性头发的渲染
- flash 游戏开发工作总结(2)--规划好你的多平台的config
- bzoj 1874: [BeiJing2009 WinterCamp]取石子游戏 Nim游戏+SG函数
- 做游戏
- FSM:游戏开发中的有限状态机(理论篇)
- Flash As3.0 游戏开发小结
- 开源APP源代码、游戏源代码
- 2015移动游戏行业方向标:创业者必须关注的几个领域