设计模式在游戏多人对战平台中的应用

发布时间:   来源:文档文库   
字号:
龙源期刊网http://www.qikan.com.cn
设计模式在游戏多人对战平台中的应用
作者:楚王辉宫一凡
来源:《电脑知识与技术·学术交流》2008年第26
摘要:文章以网络游戏对战平台为背景,介绍了设计模式在网络游戏中的应用。在传统的面向过程或者面向对象的编程中,各个不同的角色从产生到销毁的全过程,主要使用数组或链表或集合来进行控制,程序逻辑复杂而不易修改和扩展。该文引入了设计模式的概念,使得控制游戏中各个角色的操作更加简便、更加富有逻辑性。该文对从事设计模式研究、游戏制作的技术人员有一定帮助,实现代码采用微软的C#语言。关键词:设计模式;网络游戏;C#
中图分类号:TP311文献标识码:A文章编号:1009-3044(200826-1620-03TheAppliationoftheDesignPatterninOnlineGamesCHUWang-hui,GONGYi-fan,CHENYun
(ShenzhenInstituteofTechnology,Shenzhen518045,China
Abstract:Accordingtothebackgroundofthenetworkbattlegamesystembuilt,thepaperintroducestheApplicationofDesignPatterntechnologyinOnlineGames.Inthetraditional
programmingofprocess-orientedorobject-oriented,mainlyusethearrayorcollectionorchaintocontroltheentireprocessfromgenerationtothedestructionofvariousroles.ThispaperintroducestheDesignPatterns.TheDesignPatterscancontrolsthevariousrolesmoreconvenient,morefulloflogic.ThepaperisavailabilitytothemanwhoengagesontheprogrammingofgameortheresearchofDesignPatterns.
Keywords:designpattern;onlinegames;C#1引言
在传统的面向对象或者面向过程的教学中,很多人都难于明白为什么要使用面向对象技术,教师也只能按照书上的示例给大家生搬硬套的讲解面向对象,难以讲解清楚使用面向对象技术的好处,在某些书籍的讲解示例中,用面向过程技术很快能实现的功能非要套上面向对象的光环,使得学生很难理解面向对象技术的实际作用。此时,在国外很多计算机专家的努力

龙源期刊网http://www.qikan.com.cn
下,总结出了很多成功应用面向对象的范例,并提出了设计模式的概念。在此背景下,本文阐述了使用设计模式技术制作多人对战平台的方法,望能起到抛砖引玉之用。
2系统设计
网络游戏设计的难点在于:每个游戏角色都需要知道在当前屏幕范围内存在多少个其他角色,而其他角色可能是和登陆角色一样的游戏玩家,也可能是游戏当中的怪物或者其他剧情人物。如下图所示:
由前面描述和上面的图形我们可以得出以下几点:
1当角色新登入对战平台,此时,新登陆的角色应该能够知道屏幕中已经存在了哪些角色,同时,屏幕中已经存在的角色也应该能够知道新登陆的角色的信息。
2当角色退出系统时,屏幕中的所有其他角色都能够知道哪个角色退出了系统。3当角色产生了动作,如攻击、移动等,其他角色能够得知该角色的具体方位,和角色攻击对自己产生的影响。
上面的需求类似于.netui框架设计,在.net窗体程序中,可以任意的在Form中添加文本框TextBox,标签Lable,按钮Button,数据绑定控件DataGrid等。不管添加了哪种类型的控件。.net框架都能够自知。并且,当单击了Button按钮时,.net框架能够感知事件的发生,这和网络游戏当中当一个角色发动攻击时,其他角色能够感知攻击是一样的道理。基于以上分析,查阅了net框架事件的实现,得知.net框架采用了委托来实现事件机制,而委托采用了设计模式当中的Observer模式,于是,决定对Observer模式进行改进,实现多人网络对战。4Observer模式。
Observer模式意图的描述是:定义对象间的一种一对多依赖关系,使得每当一个对象改变装态,则其相关依赖对象皆得到通知并自动更新。
在软件的构建过程中,我们常常要为一些对象建立一种通知依赖关系:当一个对象Subject)的状态发生改变或某一特定事件发生时,所有的依赖对象(Observer)都需要得到通知。由于需求的变化,需要得到通知的Observer对象可能会发生变化,这时我们就需要使用面向对象的设计方法来封装这种变化,使观察者和被观察者形成一种松散的耦合关系。

龙源期刊网http://www.qikan.com.cn
基于Observer模式的描述,我们可以对其进行改进,实现网络游戏对战。具体描述如下:每当一个角色登陆游戏服务器,即把该角色添加到屏幕中现存角色的依赖关系中,同时把屏幕上的所有角色添加到登陆角色的依赖关系当中,这样就达到了多对多依赖的效果。
有了这种多对多的依赖关系,当其中一个角色状态发生改变时,就能够通知屏幕中现存的所有对象,使其产生相应的动作。
当一个角色诞生的时候、我们使用AddRolerole)函数把它添加到屏幕集合中。当角色发生事件、例如角色移动位置、发动攻击,则调用NotifyRole(函数通知所有其他相关对象。
当角色消亡、调用RemoveRolerole)函数把角色从屏幕集合中清除。具体UML图如下所示。
3具体实现
1根据以上分析,建立ScreenObject类。publicclassScreenObject{
privatestaticArrayList_list_Roles=newArrayList(;publicstaticvoidAdd(IRolerole{//实现添加角色到当前屏幕_list_Roles.Add(role;}
publicstaticvoidRemove(IRolerole{//实现从屏幕中移除角色_list_Roles.Remove(role;}
publicstringGetState({returnnull;}//获取角色状态publicstringSetState({returnnull;}//设置角色状态publicvoidNotifyRole({//通知所有角色foreach(IRolerolein_list_Roles{

本文来源:https://www.2haoxitong.net/k/doc/c4982e239f3143323968011ca300a6c30d22f1ef.html

《设计模式在游戏多人对战平台中的应用.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式