交互式益智游戏在虚幻引擎4上的界面和逻辑实现

  • 格式:pdf
  • 大小:1.59 MB
  • 文档页数:4

2019.021交互式学习的特点

现代计算机多媒体技术的发展袁使得自主交互式学

习成为可能遥电脑的普及使得每个人都可以通过简便的交互式学习方式学习各种知识技能遥所谓交互式学习,

是指利用多媒体计算机技术和网络技术袁借助多媒体课

件软件或网上资源袁由学习者自主进行的一种双向交流式学习方式遥交互式学习是一种强调交互合作和电脑使

用的新型教学方式遥交互式学习方式具有交互性袁所谓交互性是指媒体

与受众之间的信息传递的双向性遥在交互式学习方式中袁不但是媒体单方面向受众传递和灌输信息知识袁

而受众也可以向媒体反馈自己消化处理过的信息结果袁媒体对反馈结果进行评判尧检测袁并进行针对性的输

出袁以使受众在第一时间与媒体完成对信息的更新确认和互动遥2交互性软件开发工具虚幻引擎4的特点

在计算机和多媒体设备与人的交互过程中袁除了硬件外袁不可或缺的一个方面是软件遥设计良好的交互式软件不但要功能完整袁界面美观袁而且要使用方便袁易

学易用遥交互性软件包括学习训练型软件袁游戏娱乐软

件袁社交媒体软件袁还有展览展示型软件遥交互性软件的制作工具有很多袁比如Flash多媒体

软件尧各种网页制作工具尧各种游戏引擎等等遥而虚幻引擎4是制作交互性软件的一个利器遥它是为实时技术人士创造的一套完整的开发软件工具遥使用虚幻引擎4

可以创建发布PC端尧主机端尧移动端尧虚拟现实及增

强现实游戏曰同时可以将虚幻引擎4用于教育教学软件设计袁房地产场景漫游袁商品展示袁以及电影动画制作等领域遥而虚幻引擎4的交互性可以让使用者和交互性设备进行功能强大的互动袁包括使用电脑屏幕尧鼠标尧

键盘尧游戏手柄尧虚拟现实手柄尧全身感应装置以及其他辅助输入输出设备实现人和机器设备的互动遥另外虚幻引擎4对比其他游戏引擎来说袁最主要的是有了对于

设计师更加友好的蓝图可视化脚本语言袁设计师无需触

碰一行代码袁就能快速制作出游戏可执行代码和界面遥将使用虚幻引擎4的蓝图可视化脚本语言设计实现一个

益智游戏的交互式操作界面和逻辑代码遥3益智游戏在教育教学上的应用价值

益智游戏是指那些通过一定的逻辑或是数学尧物理尧化学尧甚至是自己设定的原理来完成一定任务的小游戏遥

益智游戏通常锻炼了游戏者的脑力袁使游戏者增强

自身的逻辑分析能力和思维敏捷性袁同时益智游戏还让使用者在了解数学尧几何尧逻辑相关知识[1]的同时袁培

养了使用者分析问题袁收集尧组织相关资讯和解决问题的能力曰另外由于游戏任务的解决方案不只一种袁还可以培养使用者各种创造能力遥总之袁益智游戏可以帮助

玩家获得知识经验尧巩固技能技巧尧推进思维发展尧优

化认知结构袁并促进有效学习的策略尧良好学习动机和态度的形成[2]遥

当教育性交互式游戏用于教育和教学袁可使知识的

掌握变得更加容易和富于趣味袁有助于促进对个体智力

的开发和训练袁可进一步扩展学生的思维的空间袁有助于培养想象力尧创造性以及思维的灵活性尧敏捷性和求异性等遥因此开发交互式教育性益智游戏软件对于教育

作者简介:彭瑾渊1978-冤袁女袁硕士袁实验师遥

收稿日期:

2018-11-17交互式益智游戏在虚幻引擎4上的界面和逻辑实现

彭瑾

(西南民族大学信息与教育技术中心,成都610041)

摘要院在计算机技术普及的今天,自主性交互式学习已经成为一种常用的学习手段,开发设计交互

式学习软件是一项需要研究的课题。采用被广泛使用的虚幻引擎4,实现了一个益智游戏的交互式界面

和游戏逻辑编程。此游戏中,主要的界面交互是用鼠标拖拽释放图标进行信息传递,该方法适用于需

要用界面元素来进行信息传递的交互式游戏和教学软件的设计,因此具有广泛的借鉴意义。关键词院

交互式;虚幻引擎;蓝图;益智游戏;界面

135

2019.02教学有重要意义遥4交互益智游戏在虚幻引擎4上的实现

4.1交互式益智游戏的游戏规则

在本游戏中袁需要将界面下方绿色方框里1~12的数字填入渊拖拽到冤六角星上的红色方框中袁每个红色方框中只能放入一个数字袁所有的绿色数字都要用上遥

将数字全部填好后袁使得六角星上各行4个数字的总和

都等于26袁即为游戏成功遥游戏界面如图1所示遥

当玩家将12个绿色数字放入红色方框内袁点击右边野填好了冶按钮后袁游戏系统将自动判断游戏结果袁即院渊1冤当所填数字满足游戏成功条件渊即六角星上各

行4个数字的总和都等于26袁且没有重复数字冤时袁

界面左上角会打印野答对了冶遥渊2冤当所填数字有重复渊即有数字多次使用冤时袁

界面左上角打印野有重复使用的数字冶袁这时需要更改

所填数字遥渊3冤当所填数字没有重复袁但不满足六角星上各行4个数字的总和都等于26时袁界面左上角打印野错误冶遥

4.2游戏界面的实现

4.2.1基本操作

本游戏界面的操作方法是使用鼠标左键拖拽绿色数

字至界面中六角星交点上的红色方框处遥当鼠标拖拽数字到红色方框上袁并释放鼠标左键后袁红色方框上显示被拖拽出的数字袁操作方法如图2所示遥4.2.2游戏界面控件的设置

本游戏界面只需要虚幻引擎4的UMG渊UnrealMotionGraphics冤即可创建遥游戏中需要先创建4个游

戏界面控件蓝图渊Widgetblueprint冤和一个DragandDropOperation蓝图类袁如图3所示袁其分别代表院

渊1冤界面底部代表绿色数字的控件DragItem遥

渊2冤界面中六角星各个交点处接收数字的红色控

件To遥渊3冤拖拽时代表数字拖拽效果的橘红色控件Being鄄

Draged遥

渊4冤包含各个控件袁以及六角星图形和右边野填好

了冶按钮的总界面控件Main遥渊5冤用于在两个控件之间传递信息的DragandDropOperation蓝图类袁即传递拖拽的数字数值袁本例

中名为NumberPassing遥在Main控件的Hierarchy列表中袁加入六角星图

案袁12次To控件和12次DragItem控件以及按钮野填

好了冶袁其排列布局方式如4图所示

遥图1

2图3

图4

1362019.024.2.3游戏界面拖拽释放(draganddrop)效果的实现

要在虚幻引擎4中实现控件的拖拽释放袁需要在各

个控件的Graph图表中加入下列蓝图代码遥每个控件根据在拖拽释放效果中的功能不同袁而具有下列不同的蓝图代码遥渊1冤被拖拽的控件袁在本游戏中即是界面底部代表

数字的控件DragItem遥其Graph蓝图代码如图5和图6所示遥

渊2冤接收信息的控件袁在本游戏中即是六角星各个

交点处的方框控件To袁其Graph蓝图代码如图7所示遥

渊3冤在拖拽过程中代表拖拽效果的控件Being鄄Draged遥该控件只需设置几个变量袁用于显示拖拽时的

数字遥另外在DragDropOperation类中袁创建一个整型渊Integer冤变量袁用于在DragItem和To控件之间传递数

字的数值信息遥4.3游戏逻辑的实现

本益智游戏成功时首先需满足下面逻辑条件院六角星上各行数字之和为26且12个数字都用到袁没有重复使用遥

如果将六角星交点上12个数字位置分别编号为A0~A11袁位置如图8所示遥

要判断检测12个数字没有重复使用袁即A0~A11上

的数值两两不等遥首先依次序将A0与A1~A11上的数值进

行比较袁如有相同则打印野有重复使用数字冶袁否则再将A1与A2~A11数值进行比较噎噎依次类推袁进行遍历袁直

至A11完成遥遍历完成袁都没有重复数字后袁进入下一

个判断遥此逻辑条件在Main控件中的实现如图9所示遥

检查完是否有重复数字后袁需要判断以下条件是否

同时满足即院A0+A2+A5+A7=26A1+A2+A3+A4=26

A0+A3+A6+A10=26

A1+A5+A8+A11=26A4+A6+A9+A11=26

A7+A8+A9+A10=26

如果上述每个条件都同时满足袁则命令系统打印野答对了冶袁如果不满足则打印野错误冶遥该条件实现代

码比较简单袁读者可自行设计袁这里不做图示说明遥另

外本游戏其他设置包括在关卡蓝图中创建Main控件实

例袁以及每个控件中的变量尧图形颜色尧字体等的设置细节就不一一介绍遥主旨是介绍拖拽和释放渊DragandDrop冤操作和游戏逻辑的实现袁因为此两项功能在大多

数益智游戏中都经常有应用遥5结语

要实现信息化交互式教学模式袁

就要针对不同的图5

图6

7图8

图9

(下转第140页

)

137

2019.02教学内容尧施教手段袁以及互动方法进行各种研究设计[3]遥实现方法有院渊1冤使用类似游戏机制的方式来刺

激学生的学习兴趣曰渊2冤设计互动式教学场景袁使学生能身临其境地进行学习体验遥

虚幻引擎4是一个设计开发互动式教育教学软件的有用工具袁研究和发展各种互动式教育方法和教学软件

将是教育者和设计者们面临的共同任务遥参考文献[1]尚俊杰,庄绍勇.游戏的教育应用价值研究[J].

远程教育杂志,2009,(1):63-68.[2]吴航.游戏与教育要要要兼论教育的游戏性[D].华

中师范大学,2001.[3]薛涛,刘志峰,孙萍.信息化交互式教学模式研

究--以城市地下空间专业为例[J].中国西部科技,2016,(1):

116-119.设置监测的频率遥部分代码如下所示院defremotesvr(ip,port):s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)try:s.connect((ip,port))s.close()returnTrueexcept:returnFalse4.2.5记录本地日志文件

在监控过程中产生的所有告警类信息袁都会通过追

加的方式写入本地的日志文件袁同时写入事件产生的时

间戳袁以本地服务器的时间为准遥为实现这个功能袁需

要导入logg和time模块进行日志填写遥4.2.6构建和发送告警邮件

通过email模块构建一个模块含发送地址尧接收地

址尧主题和具体内容的告警邮件遥再通过smtp模块设置

发送和接收的邮箱地址袁如果一段时间内产生了日志就会

自动发出告警邮件袁默认间隔时间为1800秒渊30分钟冤袁

具体值可以在配置文件中设置遥部分代码如下所示院server=smtplib.SMTP_SSL(smtp_server,465)server.login(fr_addr,password)server.sendmail(fr_addr,to_addr,msg.as_string())server.quit()4.2.7接收告警邮件

接收告警信息的邮箱不是本程序的设计范围袁但是

接收告警的邮箱可以在配置文件中设置一个或多个遥邮

件内容的格式和日志文件是一样的袁但邮件的内容是不重复的袁即只显示本次邮件发送周期内产生的告警信

息袁以免重复的内容过多而影响阅读遥为使接收者能随时随地收到邮件袁建议在手机端安装相应邮箱的应用袁并设置收到新邮件的提醒遥4.3绘制图形化界面

在主要功能都实现后袁导入matplotlib模块用于绘制图形化主界面遥首先绘制一个窗口渊figure冤袁窗口标题上显示该服务器的名称和IP地址遥然后在窗口中绘

制多个子图渊subplot冤袁每个子图按照图表内容分别绘

制X轴和Y轴坐标及数值袁然后再绘制柱状图尧折线图尧饼图或者文字列表袁最后设置子图的小标题尧图例尧数值标签等遥以第一个子图渊硬件资源状态冤为

例袁部分代码如下所示院fc=爷#007457爷fig.text(0.5,0.99,'系统运行监控',fontsize=16,color=fc)ax1=plt.subplot2grid((2,6),(0,0),colspan=2)labelx=['CPU','内存','磁盘']bary=[cuse,muse,duse]plt.title('资源使用率(单位院%)',fontsize=12,color='w')plt.xlabel('系统硬件状态',fontsize=10,color=fc)plt.ylim(0,100)rect=plt.bar(x=labelx,height=bary,width=0.5,color='chartreuse',label=labelx)5结语