好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

回合制战斗类游戏.doc

17页
  • 卖家[上传人]:hs****ma
  • 文档编号:519331322
  • 上传时间:2022-09-24
  • 文档格式:DOC
  • 文档大小:851KB
  • / 17 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 回合制战斗类游戏程序功能与设计思路整体设计目标:含有游戏场景、游戏角色、动作控制、动画、交战(可选)、人 工智能、音效(可选)等各部分内容1 •游戏实现功能说明:本次游戏是关于回合制战斗游戏的设计,游戏含有背景音效,玩家通过点击攻击命令 图标对怪物发动攻击,程序响应后智能的选择攻击模式,计算对双方产生的伤害值, 并显示对战消息,当其中的任何一方生命值为 0时,游戏结束游戏场景设计:贴天空、山峦、草地图,并实现其循环移动,对山峦进行透明处理游戏角色设计:贴怪兽、玩家图,并进行透明效果处理,设定生命值动作控制、交战:点击攻击命令图标玩家可以对怪物发动技能攻击,同时怪物也可以 选择相应的攻击方式动画:怪物和玩家采用透明动画制作的技巧,对图案进行连续显示及图案本身背景的 透明化处理人工智能:在游戏中设定怪物有 5种行为即利爪攻击、闪电链攻击、致命一击、使用 梅肯斯姆回复生命值、逃跑,根据以上设计的怪物行为,利用“ if-else ”、“ switch 语句,使计算机对角色进行事件情况判断,用来模拟怪物对战时的思考与行为的方式 音效:游戏的背景音效贯穿于整个游戏的始终2. 界面效果显示:1)游戏开始界面效果显示:2)游戏进行界面效果显示:#-3)游戏结束界面效果显示:3 •主界面设计思路(简单结构框图):贴天空图贴背景图贴山峦图设置背景循环移动(天空、山峦、草地)贴草地图贴怪物图贴攻击命令图标 贴玩家图贴攻击效果图画显示对战消息和生命值贴游戏结束图画#-相关原理知识介绍游戏流程:开始显示贴图、播放背景音乐点击攻击命令图标玩家发动攻击程序随机响应玩家角色攻击 方式、AI怪物攻击与思考方显示攻击特效、对战消息计算相应伤害值并进 行生命值的加减玩家生命值player.nHp>0&& 怪物生命值monster.nHp>0游戏结束1、贴图原理:位图是属于GDI的对象之一,在一套游戏开发过程中,常常需要运用大量的位图 来构建游戏的所有画面。

      以游戏程序来说,由于使用的位图数量相当多,因此都会先 将位图存成文件,等到程序需要时再将文件加载到窗口中将位图从文件中加载到绘 制窗口中必须经过以下几个步骤1) 从文件加载位图(BITMAP对象2) 建立一个与窗口 DC兼容的内存DC3) 内存DC使用步骤1 )所建立的位图对象4) 将内存DC的内容粘贴到窗口 DC中,完成显像的操作BitBlt ()函数对指定的源设备环境区域中的像素进行位块( bit_block )转换,以传 送到目标设备环境例如: BitBlt (hdc, 50,50,350,250 , mdc, 200,1 00 , SRCCOP)Y;这行程序表示,从来源DC(mdC坐标点(200,100)的地方开始向右向下剪裁出宽350, 高250的区域,并将其贴到目的 DC(hdc)以坐标点(50,50)为原点的区域中2、 背景循环移动原理:循环背景是不断地进行背景图的裁切与结合,然后显示在窗口上所产生的一种背 景画面循环滚动的效果下面就介绍如何利用同一张跟窗口大小相同的背景天空图案 来产生背景由左向右循环滚动的动画效果的当背景在由左向右移动时,背景图右移 的过程中,屏幕会出现“缝隙”,所以我们需要把移出屏幕的图贴到缝隙中来。

      这样 子循环后,就可以看到在空中飞行的效果了由上面的分析看出,我们的工作就是两次贴图:1) 第一步,裁取原始背景图右边部分进行贴图操作到另一个 DC中,假设目前裁 取的右边部分的宽度为 x;2) 第二步,裁取原始背景图左边部分惊醒贴图操作到另一 DC中,完成了向右滚 动接合后的新背景图;3) 第三步,将接合后的背景图显示在窗口中,之后递增 x值,进行循环操作当 x大于等于背景图后,就将x的值重设为0,继续重复循环这样子就形成了背景循环 效果注意:循环背景的选图很重要,要力求看不出背景缝隙3、 技能攻击算法设计原理1. AI 怪物攻击与思考方式设计假设怪物作战时具有如下几种行为:1 )利爪攻击2 )闪电链攻击3)致命一击4) 使用梅肯斯姆回复生命值(补血)5) 逃跑那么我们可以根据以上设计的怪物行为,设计以下一段算法,用来模拟怪物对战时的 思考与行为的方式:if (monster.nHp > 20) // 生命值大于 20{if (rand() % 5 != 1) //进行利爪攻击概率 4/5mon ster.k ind = 0;else //进行闪电链攻击概率1/5mon ster.k ind = 1;{case 0: //利爪攻击mon ster.k ind = 0; break;case 1: //释放闪电链mon ster.k ind = 1;}这段代码中,利用if-else 判断式判断怪物生命值,然后怪物有 4/5的几率释放普通的利爪攻击,有1/5的几率释放闪电链魔法攻击,当怪物重伤生命值小于 20点时,也有一定的几率逃跑。

      以上的利用“ if-else ”、“switch ”语句,使计算机角色进行事件情况判断,然后写 出相应的动作实现代码,这就是行为型游戏 AI设计的核心精神2. 玩家角色攻击方式设计然后设计玩家的攻击技能在游戏中给人物设定了两个技能,一个主动的普通攻击技 能“无敌斩”,伤害计算公式为 damage = ran d()%10 + player.lv*player.w(player.lv 为角色等级,player.w为攻击系数)而被动技能为可以有一定几率打出 4倍暴击伤害的“恩赐解脱”,其暴击的实现方式很简单,就是用if条件句进行概率的判断(在这里利用 4==rand( )%5来设定暴击概率为20%,如果判断成功就将“倍率x普通攻击”作为damage的值下面贴出代码人物技能的代码:if (4 == rand() % 5) // 20%几率触发幻影刺客的大招,恩赐解脱, 4倍暴击伤害{damage = 4 * (ra nd() % 10 + player.lv*player.w);//player.lv 为角色等级,player.w为攻击系数monster.nHp -= ( int )damage;| sprintf(str, "恩赐解脱触发,这下牛逼了, 4倍暴击…对怪物照成了 %d点伤害”,damage);}else{damage = rand() % 10 + player.lv*player.w;monster.nHp -= ( int )damage;sprintf(str, "玩家使用了无敌斩,伤害一般般...对怪物照成了 %d点伤害", damage);}二、设计步骤说明1.开发环境配置(路径、头文件、静态或动态链接库等)Windows 7、Visual Studio 2013 、Win32 项目2.全局以及局部的各种变量说明自定义一个结构体:struct chr{intnHp;//设定角色生命值intfHp;//设定角色生命值上限intlv;//设定角色等级intw;//设定攻击伤害加权值int};ki nd;//设定攻击种类自定义全局变量:HBITMARIra, bg[3], girl, skill, skillult, slash, magic, recover, game;HDChdc, mdc, bufdc;HWNDhWnd;DWORDtPre, tNow;intpNum, f, txtNum;Boolattack, over;chrplayer, mon ster;chartext[5][100];intx0 = 0, x1 = 0, x2 = 0, num = 0;3. 自定义类及其成员函数的说明自定义函数:voidMyPaint( HDChdc); //自定义绘图函数voidMsg In sert( char*); //新增的对战消息函数void CheckDie( int hp, bool player); // 生命值判断函数4. 实现功能的关键代码及代码含义a. 添加背景音效在主程序中添加头文件:#include "mmsystem.h"// 导入声音头文件#pragma commen(lib , "winmm.lib" ) // 导入声音头文件库在函数InitInstance(HINSTANCE, int) 中添加如下代码://打开音乐文件mciSendString( "open background.mp3 alias bgMusic " , NULL, 0, NULL);mciSendString( "play bgMusic repeat" , NULL, 0, NULL);b. 贴图在函数 In it In sta nce(HINSTANCE, i nt) 中定义变量 HBITMAP bmp;添加如下代码:bg[0] = (HBITMAP)LoadImage(NULL, "bg0.bmp", IMAGE_BITMAP, 640, 480, LR_LOADFROMFILE);bg[1] = (HBITMAP)LoadImage(NULL, "bg1.bmp", IMAGE_BITMAP, 640, 600, LR_LOADFROMFILE);bg[2] = (HBITMAP)LoadImage(NULL, "bg2.bmp", IMAGE_BITMAP, 640, 600, LR_LOADFROMFILE);dra = (HBITMAP)LoadImage(NULL, "dra.bmp" , IMAGE_BITMAP, 760, 198, LR_LOADFROMFILE);girl = (HBITMAP)LoadImage(NULL, "girl.bmp" , IMAGE_BITMAP, 480, 148, LR_LOADFROMFILE);skill = (HBITMAP)LoadImage(NULL, "skill.bmp" , IMAGE_BITMAP, 50, 50, LR_LOADFROMFILE);skillult = (HBITMAP)LoadImage(NULL, "skillult.bmp" , IMAGE_BITMAP, 50, 50, LR_LOADFROMFILE); slash = (HBITMAP)LoadImage(NULL, "slash.bmp" , IMAGE_BITMAP, 196, 162, LR_LOADFROMFILE);magic = (HBITMAP)LoadImage(NULL, "magic.bmp" , IMAGE_BITMAP, 200, 100, LR_LOADFROMFILE); recover = (HBITMAP)LoadImage(NULL, "recover.bmp" , IMAGE_BITMAP, 300, 150, LR_LOADFROMFILE); game = (HBITMAP)LoadImage(NULL, "over.bmp" , IMAGE_BITMAP, 289, 74, LR_LOADFROMFILE);c.。

      点击阅读更多内容
      相关文档
      安徽省安全员《A证(企业负责人)》冲刺试卷三.docx 2026年房地产经纪人《房地产经纪业务操作》预测试卷三.docx 安徽省安全员《A证(企业负责人)》模拟试卷一.docx 2026年房地产经纪人《房地产交易制度政策》模拟试卷四.docx 安徽省安全员《B证(项目负责人)》冲刺试卷二.docx 2026年房地产经纪人《房地产经纪专业基础》预测试卷四.docx 2026年房地产经纪人《房地产经纪业务操作》考前点题卷一.docx 2023年通信工程师《通信专业实务(传输与接入-无线)》试题真题及答案.docx 安徽省安全员《A证(企业负责人)》试题精选.docx 2026年房地产经纪人《房地产经纪专业基础》预测试卷二.docx 2026年房地产经纪人《房地产经纪业务操作》考前点题卷二.docx 2026年房地产经纪人《房地产经纪职业导论》冲刺试卷三.docx 2026年房地产经纪人《房地产交易制度政策》冲刺试卷三.docx 2026年房地产经纪人《房地产经纪专业基础》考前点题卷二.docx 2026年房地产经纪人《房地产经纪职业导论》冲刺试卷五.docx 2026年房地产经纪人《房地产经纪职业导论》冲刺试卷四.docx 2026年房地产经纪人《房地产交易制度政策》冲刺试卷一.docx 2026年房地产经纪人《房地产交易制度政策》冲刺试卷四.docx 安徽省安全员《B证(项目负责人)》冲刺试卷三.docx 2026年房地产经纪人《房地产经纪业务操作》模拟试卷二.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.