每日发布冒险岛
公益怀旧版信息

2017级C语言大作业 - 小小冒险岛

蜘蛛岛冒险_海贼王风车镇手掌岛冒险_冒险岛下载安装

C语言 – 小小冒险岛

分享17级同学大一上学期用C语言实现的小小冒险岛。分步骤代码、图片音乐素材、可执行程序可从百度网盘下载:

链接:/s/1MRNnZAMZj8iC_c6bxruQnA

提取码:5zui

摘要

本设计是模仿盛大冒险岛并且从小游戏《小小冒险岛》吸取经验制作而来.算是一个小小的同人游戏.整个游戏的风格以小清新RPG为主,人物与地图全为2D图像冒险岛下载安装,利用if函数实现了人物与背景的分开移动,让人物可以在小游戏框下走出大地图.本游戏图片来自原游戏冒险岛下载安装,玩法为人物的移动和狩猎怪物。玩家可以在不同的地图中来回穿梭,在不同的挡板上跳跳下下。走出村庄可以进行狩猎怪物,不过也会被怪物狩猎,被怪物触碰会减低Hp,当Hp为0时gameover。

一、设计思路

1、搭建基本框架.

2、从原游戏中盗取最基本的人物及背景图.

3、实现人物简单的左右移动,设计图片的输出.

4、编写结构体,对于地图要素进行定义.

5、对于定义好的地图要素编写挡板及跳跃的判定,实现人物在地图中的跳跃.

6、增加地图的要素,定好传送点,方向,并且加入更多的地图,实现地图的变换.

7、再次增加地图要素,加入怪物的数据及贴图,完善人物的攻击函数.

二、分步骤实现方法

1.对于人物图像的输出

其实在一开始我的人物图片比如站立,走动.及攻击的连贯显示是不清楚的.但是采用了我对于动画的了解,在一定而规律的时间内改变人物的图片,可以营造动的感觉.这么说好像Sleep好像是最合适的,但是因为有怪物的存在,如果用Sleep就会影响怪物的显现,于是采用的老师飞机大战是用的延迟数.人工确定帧数,良好的显现出了人物.

2.对于地图要素的定义

小小冒险岛一个地图中的要素十分多,有挡板,绳索,有光圈,而且各个地图独立,如果单独定义会占很多行数,而且变量会很多很杂.这里采用了结构体,对于要素的定义整齐而有规律,输入要数数据时更加简单.

3.人物跳跃与挡板联系

这游戏中人物离开挡板就会进入跳跃状态,于是我把人物的跳跃写进withoutinput,而withinput只改变人物上升速度及状况判定.在withoutinput中在改变人物的位置移动.为了使role_x,role_y为人物底边中间位置,人物图片的输出位置为role_x,role_y分别减去宽的二分之一和高.这样便于判断人物与挡板相遇.人物的下落用循环函数来写,每下降一个像素都会判断每一个挡板,一旦判定了,人物的纵坐标等于挡板的纵坐标,从而提高人物与挡板的契合.

4.人物爬绳

人物在爬到绳子最上端,与最下端时或者横向移动离开绳索范围会脱离爬绳状态,这里也采用了与跳跃一样的自动判定.同时人物在绳索上同时按W和K时会改变role_vy,借助跳跃函数实现人物的快速爬绳.(因为时间关系没有人物爬绳的图片.这个快速爬绳如果能加个特效也会很有趣)

5.人物传送

人物通过光圈从一个地图到另一个地图不是一件容易的事,我对于每个传送点都定义了他们的位置,传送去的地图,传送去地图的光圈的位置.为了处理好人物传送后位置变换的处理,我赋予它一个相对于游戏框的位置,在通过传送点相对于背景的位置反推背景的位置,实现了人物的传送.

6.人物二段跳

按E可以实现人物的二段跳,即便在空中也可以改变人物的跳跃方向.并且提高role_vx role_vy的绝对值,用于加快人物走地图.因为个人爱好,二段跳没有延迟,于是就有了像是飞行一样的效果.

三、体会与总结

1.不应该在循环函数内部定义变量,这会极大地拖慢程序运行的速度.

2.两个人应该多多商量代码中的变量,并且统一算法,不要一个相似的部分用两种算法写.

3.在每次写完相应的程序一定要备份,不然一改出现bug还得自己一步一步敲回去.

4.在这次大作业中我深刻体会到了与人合作的困难.两个人的代码风格不一样,写出来的代码另一个人很难看懂,如果注释非常少那么是更加糟糕.在编程时特别是与人合作时,一定要规范自己的代码,不能由着自己的性子乱写一通,到时候别人看不懂,自己到时候也很难改.

赞(0) 打赏
未经允许不得转载:079冒险岛发布网 » 2017级C语言大作业 - 小小冒险岛
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏