小小冒险岛 C语言作业

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

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

2017级C语言大作业 - 小小冒险岛相关推荐

  1. 2017级C语言大作业 - 见缝插针

    见缝插针 C语言作业 分享17级同学大一上学期用C语言实现的见缝插针.分步骤代码.图片音乐素材.可执行程序可从百度网盘下载: 链接:https://pan.baidu.com/s/1dblHmOD2z ...

  2. 2017级C语言大作业 - 奇怪的大冒险

    奇怪的大冒险 C语言作业 分享17级同学大一上学期用C语言实现的奇怪的大冒险.分步骤代码.图片音乐素材.可执行程序可从百度网盘下载: 链接:https://pan.baidu.com/s/1nR-Sa ...

  3. 2017级C语言大作业 - 水果忍者

    水果忍者 C语言作业 分享17级同学大一上学期用C语言实现的水果忍者.分步骤代码.图片音乐素材.可执行程序可从百度网盘下载: 链接:https://pan.baidu.com/s/1i-e_MVChl ...

  4. 2017级C语言大作业 - 元气骑士

    元气骑士 C语言作业 分享17级同学大一上学期用C语言实现的元气骑士.凉屋工作室制作的元气骑士游戏是一款像素风射击游戏,其新颖的操作方式吸引了众多玩家,随时"拿得起,放得下"的操作 ...

  5. 2017级C语言大作业 - 合金弹头

    合金弹头 C语言作业 分享17级同学大一上学期用C语言实现的合金弹头.分步骤代码.图片音乐素材.可执行程序可从百度网盘下载: 链接:https://pan.baidu.com/s/1cm01uEDNo ...

  6. 2017级C语言大作业 - 气球塔防

    气球塔防 C语言 分享17级同学大一上学期用C语言实现的气球塔防.分步骤代码.图片音乐素材可从百度网盘下载: 链接:https://pan.baidu.com/s/1tN-ErS7q7SEgibvsZ ...

  7. 2017级C语言大作业 - 密室逃生

    密室逃生 C语言 分享17级同学大一上学期用C语言实现的密室逃生.分步骤代码.图片音乐素材可从百度网盘下载: 链接:https://pan.baidu.com/s/1Se8aPaQYa1xy93q3d ...

  8. 2010C语言添加背景图片_2019级C语言大作业 - 火柴人试炼之地

    C语言大作业 - 火柴人试炼之地https://www.zhihu.com/video/1200491618794606592 分享19级同学大一上学期用C语言实现的火柴人试炼之地.分步骤代码.图片音 ...

  9. 2020级C语言大作业 - 王国保卫战

    王国保卫战 C语言大作业 分享20级同学大一上学期用C语言(及少量C++)实现的王国保卫战.由于同学们刚学了三个月的编程,实现还不够完善,工程代码.图片音乐素材可以从百度网盘下载: 链接:https: ...

最新文章

  1. 朱峰谈概念设计(五):进入焦距
  2. 2020ICPC(小米邀请赛2) - Knapsack(贪心+dp)
  3. 子类覆盖父类(Java)
  4. matlab分支定界法linprog_序列比对(二十二)——中间字符串分支定界方法中更紧的界...
  5. 让你受益终生的9种思维
  6. ++操作你还在使用加锁去保证线程的安全吗?确定不了解一下CAS机制?
  7. IIS安装与部署,站点的部署与配置
  8. ICT项目管理与实施体系
  9. eclipse 运行企业进销存管理系统
  10. 让信息带钩的六种武器——《让创意更有黏性》优秀读后感4300字
  11. plsql删除历史记录
  12. Windows驱动程序开发 - 初识驱动
  13. Python计算机二级考试,二十来天的备考,奥利给!【已完结】
  14. 个人开发者应用如何接入主流微信和支付宝支付
  15. 万物互联,该怎么联?
  16. 墨者学院-登录密码重置漏洞分析溯源
  17. java获取系统时间差_java获取系统时间与实际相差8小时的解决方法
  18. pytorch之---relu,prelu,leakyrelu
  19. 0321 复利计算—贷款
  20. 数据和计算系统如何容错?

热门文章

  1. 目标检测——数据清洗的学习笔记
  2. 使用Eclipse调试Android程序时无法安装控制台报错INSTALL_FAILED_UPDATE_INCOMPATIBLE
  3. ubuntu 16.04 Anaconda3 中安装tensorflow环境[CPU版和GPU版]
  4. ESP32开源驱动库Easyio的使用,基于ESP-IDF开发框架,非Arduino
  5. leetcode947. Most Stones Removed with Same Row or Column
  6. jquery 常见选择器以及一些方法
  7. 51nod 1275 连续子段的差异(twopointer+单调队列)
  8. 初学Python之谈
  9. Windows下的git配置
  10. 超棒的30款JS类库和工具