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

链接:https://pan.baidu.com/s/1ox12uOVHsqO-dL8lSZRTMA

提取码:n5ny

HP1的勇者 C语言作业介绍视频

游戏介绍:

本游戏的是闯关类RPG小游戏, 主角是HP(生命值)仅为1的勇者,与各种各样的怪物搏斗,并战胜怪物,这也意味着他战斗的容错率为0,被怪物所发出的光线击中即游戏失败,考验玩家的反应力、判断力和精确度(眼力)。在游戏中,怪物将会发射不同方向、不同数量的光线,玩家操控勇者通过靠近光线来获取攻击力,越靠近光线获取攻击力会越多,但若过于靠近,就会被怪物击中,对光线与勇者距离的把控是本游戏玩法的关键。此外,玩家可在商店中更换不同的勇者进行游戏。

1.设计思路

1.1游戏实现方面

为实现理想的游戏效果,我们需灵活运用C语言基本语句来实现游戏的运行,采用分步骤完成、先整体结构后局部处理的思路进行编程(具体流程会在后面“功能描述”中提到),用PS、3D画图等软件进行图片的修剪、改进,以及部分图片遮罩图的制作,使用手机自带录音软件进行音频的获取,并调用EasyX库函数实现图片和音频的插入。

1.2玩家体验方面

为了玩家更好的操控勇者,我们设计用鼠标控制勇者的位置;制作进入游戏动画、等待动画、不同角色、不同背景图来增加游戏趣味性;给出怪物图鉴、帮助、文字提示等让玩家更容易上手;制作各种动画效果,如攻击力获取效果、怪物被击打的效果等反馈机制增强玩家的游戏互动感。

2.功能描述

2.1总体

总体上实现怪物输出激光,勇者靠近激光获取攻击力,使怪物损失生命值并打败怪物等效果。(其他功能由另一位成员实现)

2.2各部分

2.2.1 游戏开始

输出背景图、勇者动图、怪物动图等,在屏幕中央设置等待开始的提示词,左键后消失,游戏开始。

2.2.2 光线输出

光线分为纵向&横向、不变时刻(相当于停顿效果)&变化时刻,随boss生命值的减少,光线在数量上和方向上,输出机制上会有变化。

2.2.3 光线与勇者距离判定攻击力和勇者是否出局(核心游戏机制)

勇者模型进入光线但不进入光线多于1/3左右则获取攻击力,且越靠近光线内部获取攻击力越多,若进入光线多与1/3左右则出局。

2.2.4 怪物受伤

利用黑色血条盖住红色血条造成生命值减少效果。输出勇者攻击动画效果。

2.2.5 游戏胜利

怪物生命值为0,游戏即可胜利,将输出提示框等图片,并利用if语句判断鼠标在不同位置按下左键对应的不同结果,如重新开始、继续游戏、返回菜单等。

3.分步骤实现方法

3.1 先输出纵向单一光线

重点:通过speed(控制光线更新速度)来实现警告光线(矩形)逐渐变宽,真实光线(与警告光线大小相同的矩形)从上边框向下边框延长。

难点:需要if语句来判断光线出现、消失的时间点。

代码:

void putSlaser_y2(int n)                  //用于关卡二输出纵向不变光线,n为光线的代号
{    if (Tlaser_bottom[n] < frame2_down)//Tlaser对应数组为真实光线组(对应有警告光线组){setfillcolor(RGB(241, 40, 40)); //设置颜色,输出纵向警告光线(警告光线不造成伤害,起提示作用)solidrectangle(laser_left[n], laser_top[n], laser_right[n], laser_bottom[n]);//画出矩形光线}if (sumry[n] >= 20)//输出真实光线{for (j[n] = h[n]; j[n] <= k[n]; j[n]++)//j[n],k[n],h[n]为控制图片输出的变量putimage(Tlaser_left[n], frame2_up + j[n] * 15, &img_Tlaser2_y);//形成插入的光线图片有向某个方向发射的效果}
}

之后再制作横向单一光线,后制作多束光线(利用数组)。

3.2 先制作纵向光线与勇者距离来判定攻击力和勇者是否出局

重点:计算出光线模型与勇者模型的距离,并用if语句判断结果。

代码:

void judge_power2_y(int stage, int n) //用于关卡二判断"纵"向光线与勇者的距离,并输出结果
{if (hero_x + 16 > Tlaser_right[n] - sumry[n])//勇者在光线哪一侧,hero_x+16为勇者中心横坐标,此为右侧
{  if (hero_x + 11 < Tlaser_right[n] && hero_y< Tlaser_bottom[n] && hero_y+49 >Tlaser_top[n])        //若此条件成立,勇者死亡system("pause");//我们不妨将死亡定为暂停else if (hero_x + 11 >= Tlaser_right[n] && hero_y< Tlaser_bottom[n] && hero_y + 49 >  Tlaser_top[n] && hero_x <= Tlaser_right[n])//判定攻击力{   if (stage == 3)power += (Tlaser_right[n] - hero_x) / 5 + 1; //power为攻击力else power += (Tlaser_right[n] - hero_x) / 8 + 1; //不同阶段给予攻击力不同power_x = hero_x - 33;//攻击力积攒的特效的图片位置power_y = hero_y - 4;putimage(power_x, power_y, &img_power0, NOTSRCERASE);//遮罩图putimage(power_x, power_y, &img_power1, SRCINVERT);//获得攻击力时的特效}}else//勇者在光线左侧,具体操作与上面类似{if (hero_x + 21 > Tlaser_left[n] && hero_y< Tlaser_bottom[n] && hero_y + 49 >  Tlaser_top[n]) //若此条件成立,勇者死亡system("pause");else if (hero_x + 21 <= Tlaser_left[n] && hero_y< Tlaser_bottom[n] && hero_y + 49 >  Tlaser_top[n] && hero_x + 32 >= Tlaser_left[n])//判定攻击力{   if (stage == 3)power += (hero_x + 32 - Tlaser_left[n]) / 5 + 1;else power += (hero_x + 32 - Tlaser_left[n]) / 8 + 1;power_x = hero_x + 12;power_y = hero_y - 4;putimage(power_x, power_y, &img_power0, NOTSRCERASE);//遮罩图putimage(power_x, power_y, &img_power1, SRCINVERT);//获得攻击力时的特效}}
}

n] - hero_x) / 8 + 1; //不同阶段给予攻击力不同

power += (Tlaser_right[n] - hero_x) / 5 + 1; //power为攻击力

之后做对横向光线的判定。

3.3.3 勇者攻击

重点:运用putimage函数和for语句对一张图片截取不同部分来实现攻击效果。

4.体会与总结

这次游戏制作既有趣又有意义,可以通过一系列代码和p图完成自己和队友想创造的游戏的样子,又是对自己编写代码能力和逻辑推理能力的提升,更好地处理各语句之间和各函数之间的逻辑关系,当然也存在着许多难以解决的问题,让人头疼不已,但也通过向百度求助、查看EasyX帮助等方式解决了困难,比如setbkmode(TRANSPARENT)可以使文字背景透明,相对路径如何设置等,进而学到更多。

在团队协作中,我也意识到有好队友的重要性,也要懂得运用各自的优势处理专门一些问题,这样往往事半功倍;并且对同一件事队友间有时也会有很大的认知上的不同,所以应该多多交流、互相理解。

虽然写代码之路就像铺砖头一样劳累,但最后看到建成的“高楼大厦”后,还是有满满的成就感,感谢那个辛苦的队友和自己。没有不怕试错的态度,没有坚持不懈的精神,就没有相应的成果。

2019级C语言大作业 - HP1的勇者相关推荐

  1. 2019级C语言大作业 - 火柴人试炼之地

    火柴人试炼之地 C语言大作业 分享19级同学大一上学期用C语言实现的火柴人试炼之地.分步骤代码.图片音乐素材.可执行程序可以从百度网盘下载: 链接:https://pan.baidu.com/s/1X ...

  2. 2019级C语言大作业 - 冷冻双侠

    冷冻双侠 C语言作业 分享19级同学大一上学期用C语言实现的冷冻双侠,可从码云下载: https://gitee.com/xingguiweichen/frozen_couple 一. 游戏介绍 程序 ...

  3. 2019级C语言大作业 - 十步万度

    十步万度 C语言作业 分享19级同学大一上学期用C语言实现的十步万度,可从码云下载: 期末作业/十步万度 摘要 本组设计并编写的游戏<十步万度>,是我们仿照原有的<十步万度>游 ...

  4. 2019级C语言大作业 - 泡泡龙

    分享19级同学大一上学期用C语言实现的泡泡龙.分步骤代码.可执行程序可从百度网盘下载: 链接:https://pan.baidu.com/s/1r5S3oH54hM3OQeIQuwnjjQ 提取码:j ...

  5. 2019级C语言大作业 - BrickMansions

    BrickMansions 运行演示 C语言作业 分享19级同学大一上学期用C语言实现的BrickMansions,可从码云下载: https://gitee.com/Brick_Mansions/B ...

  6. 2019级C语言大作业 - 三国杀

    三国杀19年 C语言演示视频 分享19级同学大一上学期用C语言实现的三国杀游戏.分步骤代码.图片音乐素材.可执行程序可以从百度网盘下载: https://pan.baidu.com/s/1K3ANkU ...

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

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

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

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

  9. 2020级C语言大作业 - 丛林大作战

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

最新文章

  1. python循环语句-python中的for循环语句怎么写
  2. python开发工程师面试题-分析经典Python开发工程师面试题
  3. 乐高小颗粒履带机器人_玩转乐高大颗粒积木(四十二)——乐高不倒翁、轮式是挖掘机、大颗粒皮筋车...
  4. 请求solr服务器未响应,solr与tomcat整合
  5. linux系统进程控制实验报告,Linux进程控制实验报告.doc
  6. 专题导读:高性能计算虚拟数据空间
  7. numpy+pandas+matplotlib绘制误差条形图
  8. UVA 11452 Dancing the Cheeky-Cheeky
  9. 教你一招:让集群慢节点无处可藏
  10. Socket的通信是基于连接的通信,通信结束时,Socket将不再有用,关闭时为了节约宝贵的系统资源
  11. Ruijie(RGOS 11.X)忘记登录密码console口恢复密码
  12. 计算机找不到ac97前面板怎么办,电脑Win7系统前面板耳机插孔没有声音解决方法(音频设置+前面板插线方法)...
  13. java雪崩_java-雪崩效应及解决办法
  14. 在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别
  15. 每日一面 - Spring Boot 中的 ApplicationContext 的分层是什么意思?
  16. 虚拟服务器登录,虚拟主机服务器登录
  17. python 同时输出国际和国内BMI值
  18. 抖音算法实习生面经(一面+二面)
  19. 如何在m1芯片上运行android模拟器
  20. 微服务ServiceMesh及三种服务发现机制

热门文章

  1. 《南溪的目标检测学习笔记》——夏侯南溪的CNN调参笔记,加油
  2. Spyder IDE中使用git
  3. 时间序列模型之——prophet
  4. Python cheat sheet 大全
  5. ubuntu 16.04 R语言安装 rJava package失败解决方案
  6. django日志使用TimeRotateFileHandler
  7. CleanCodeHandbook Chapter 5: Bit Manipulation(33-34)
  8. leetcode907.SumofSubarrayMinimums
  9. 求数组中k个数的所有组合
  10. 【Linux】 C++编程(vim)