C语言课程设计报告
机房名称                  
时    间                   
学    院                  
专业班级                  
姓    名                   
学                   
指导教师                 
小游戏“黄金矿工”设计报告
一、课题简述
通过一年的c语言程序设计的学习,我们仅仅掌握了c语言最基本的知识,还有很多内容是我们没有涉及的。所以通过c语言课程设计的学习实践活动和实际演练,使我们能够在实际操作中提高运用c语言解决问题的能力和程序设计的能力。
得知本次课程设计任务是小游戏的设计,我们既兴奋又不安,兴奋是十分期待自己亲手做出的游戏,不安的是我们对funcode这个软件很不了解。幸好这次实践的过程,让我们从做平时简单的小程序过渡到现在的综合应用程序,将学过的c语言知识融入新接触到的funcode操作中,不仅能巩固所学的知识,还能加强对新事物的接受及应用的本领,在不断的挑战问题中大大的提升自己,同时也是对c语言程序设计这门课的深入理解的过程。
而什么样的小游戏是我们能实现而又不乏趣味呢?经过反复思考、讨论,我们小组设计了“黄金矿工”这样一个小游戏:
玩家通过键盘的按键控制矿工抓取金块,将钩子碰触到的金块抓取过来。
1.单机键盘上的空格键进入游戏,金块的总数是20,钻石的总数是2,的总数是3,石
头的总数是4,大小位置是随机的。
2.在没有抓取状态下,钩子左右摆动,此时矿工的是静止的。当钩子摆动到一定角度,玩家可以单击键盘上的上下左右键中的下方向键控制矿工伸出长钩,抓取金子等——抓到一个金子金子加20分,钻石加50分且拉回速度变快,石头加5分且拉回速度变慢,抓到不加分且会爆炸。此时矿工是向下摇动转轴。获取到金子等往回拉后,矿工是不断转动转轴,直到金子拉动到钩子初始处,矿工恢复静止,钩子继续左右摇摆,直到玩家再次单击向下方向键。如果钩子没有碰触到金子,而是碰触到左右和下的边界,则钩子保持原来的速度往回收。
3.加入计分和计时系统。60秒倒计时时间内抓取的金子越多得分越高。
接下来,我们开始思索,要如何实现这些功能,如何将所有功能连接在一起。于是我们先用funcode 熟悉小游戏制作的操作,认真按照老师给我们的实验指南进行练习,反复阅读其内容,并用vc6.0进行对各种小游戏源代码的简单探索。当然,由于技术原因,我们想要设计的软件只是局限于对游戏功能的实现,而实际中正式的欢迎界面,游戏说明等优美的图片,我们并没有进行设计,包括刚开始拟定的金子运动、玩家升级等也取消了。然而,
这并不影响我们制作小游戏的热情,而且我们根据其具体的功能进行了组员之间的分工合作。
二、功能需求
Ⅰ.程序大体流程图:
1. 游戏模块图
Ⅱ.部分函数介绍
本实验用到的API
extern float    dGetScreenLeft();    /*获取世界边界之左边X坐标*/
extern float    dGetScreenTop();    /*获取世界边界之上边Y坐标*/
extern float    dGetScreenRight();  /*获取世界边界之右边X坐标*/
extern float    dGetScreenBottom();  /*获取世界边界之下边Y坐标*/
extern void    dSetSpriteWidth( const char *szName, const float fWidth );  /*设置精灵外形宽度*/
extern float    dGetSpriteWidth( const char *szName );  /*dGetSpriteWidth:获取精灵外形宽度*/
extern int  dRandomRange( const int iMin, const int iMax ); /*获取一个位于参数1到参数2之间的随机数*/
extern void    dSetSpriteRotation( const char *szName, const float fRot ); /*设置精灵的旋转角度*/
extern void  dSetSpriteLinearVelocityPolar( const char *szName, const float fSpeed, const float fPolar );
/*设置精灵移动速度*/
extern int  dAnimateSpritePlayAnimation( const char *szName, const char *szAnim, const int iRestore );
/*精灵播放动画*/
extern float  dGetSpriteLinkPointPosX( const char *szName, const int iId );
/*获取精灵链接点X坐标。链接点是依附于精灵的一个坐标点*/
extern float dGetSpriteLinkPointPosY( const char *szName, const int iId );
/ *获取精灵链接点Y坐标。链接点是依附于精灵的一个坐标点*/
extern void    dDrawLine( const float fStartX, const float fStartY, const float fEndX, const float fEndY, const float fLineWidth, const int iLayer, const int iRed, const int iGreen, const int iBlue, const int iAlpha );
c语言编程小游戏
/*    dDrawLine:两点之间画线*/
Funcode接口介绍
extern void dOnSpriteColSprite( const char *szSrcName, const char *szTarName );
/*精灵与精灵碰撞后将被调用的函数*/
extern int  dSpriteMountToSpriteLinkPoint( const char *szSrcName, const char *szDstName, const int iPointId ); /*将一个精灵绑定到另一个精灵上,绑定位置为指定*    的链接点,暂时的成为另一个精灵的一部分,跟随其运动等*/
extern float    dGetSpritePositionX( const char *szName ); /*获取精灵X坐标*/
extern float    dGetSpritePositionY( const char *szName ); /*获取精灵Y坐标*/
funcode函数
(1)/*主函数入口*/