基于ASP的宠物养成小游戏的设计与实现.docx
- 文档编号:6640905
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:26
- 大小:3.23MB
基于ASP的宠物养成小游戏的设计与实现.docx
《基于ASP的宠物养成小游戏的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于ASP的宠物养成小游戏的设计与实现.docx(26页珍藏版)》请在冰豆网上搜索。
基于ASP的宠物养成小游戏的设计与实现
基于ASP的宠物养成小游戏的设计与实现
摘要:
本文简要介绍了小游戏开发的现有发展情况以及现有环境下的休闲类小游戏开发的问题,并对开发目的和市场需求做了一定分析。
本文中描述的项目就是基于C#的WINFORM技术开发的一款宠物养成类休闲小游戏,其运行环境是遵循Framework4.0的框架。
其中简要介绍了《皮卡物语》游戏的开发过程,并对游戏功能模块做了详细的阐述:
包括各个窗口界面的渲染和函数方法。
关键词:
Framework4.0;游戏开发;C#
Abstract:
Thispaperbrieflyintroducestheexistingdevelopmentofsmallgamedevelopmentandthedevelopmentofleisuregamesintheexistingenvironment,andmakessomeanalysisonthedevelopmentgoalandmarketdemand.TheprojectdescribedinthispaperisapetdevelopingleisuregamebasedonthedevelopmentofWINFORMtechnologybasedonC#.TheoperatingenvironmentistheframeworkofFramework4.0.Thispaperbrieflyintroducesthedevelopmentprocessofthegameofpicard,andelaboratesthefunctionmodulesofthegame,includingtherenderingandfunctionmethodsofvariouswindowinterfaces.
Keywords:
Framework4.0;Gamedevelopment;C#
1绪论
1.1开发背景
当时代迈入高速发展的2018年,随着互联网的发展中国的游戏产业已经到了一个蓬勃起飞的阶段,每月各个大型工作室新作品不断的问世,吸引了不少优质软件工程师,他们对于中国游戏软件的开发报有很大的热情,但是每年游戏产品的品质性和市场性却低于国外一些知名大厂制作,而对于开发游戏十分重要的实验资料和优秀示例在国内难以找到,大多数抱有此美好愿景的学子在做相关研究开发时正是因为缺少这些资料和数据所以步履较为缓慢。
但是近年来,在如此困境下,我国的游戏产业也取得了长足的进步,在海内外优秀开发工作者的共同努力下,中国游戏产业方向上朝着一个更加有创新、更加有活力和独立的方向发展,产业规模、市场需求进一步扩大,游戏产业的自主研发能力不断得到改善,整体行业活力满满。
1.2开发目的与意义
休闲类小游戏作为游戏市场中解决零碎时间的重要一环,它具有体积小,操作方便,玩法简单不伤脑,对玩家使用者的计算机性能要求很低,通常的形势以休闲益智为主,有网页版也有桌面应用程序版,近年来,各类独具创新的精品小游戏成井喷式发展,如《球球大作战》、《贪吃蛇大作战》、《天天酷跑》等,各种新颖的休闲小游戏层出不穷,形式多样化,受众面属于各个年龄段的用户欢迎,玩家市场迅速增加。
本文中的《皮卡物语》就属于休闲类的益智小游戏,对于现阶段市场最火热的游戏产业特别是对于学生族和上班族群体来说,这类游戏能够放松身心,消除大脑紧张感,也不用花费太多的时间与精力,兼具健康与娱乐性,而且对家庭来说这类游戏也没有了门槛,此款小游戏不会对孩子传播任何不好的内容,整体风格充满着阳光与积极向上的一面,当前这一板块的市场需求极具潜力,其前景发展也非常乐观。
2游戏需求分析及开发工具
2.1技术可行性分析
该项目利用VisualStudio2015开发的WINDOWS桌面应用程序,其中大量运用了IO输入输出流来实现动态自动存档,使用WinForm创建窗口,然后添加button和picturebox还有label等相关控件,搭建了整个程序的各个界面设计。
后台通过调用Pet类中的值传递给控件以图形化的形式显示在界面中,使用了Timer控件来实现”战斗”界面宠物与敌人回合制战斗的效果,运用了swith函数将宠物的技能定位在窗口上,实现自动化技能展示特效。
2.2经济可行性分析
由于是基于C#程序设计的宠物养成休闲小游戏,从经济面上讲,整体项目结构简单,容易开发,开发阶段用到的人力和物力相对较少,而且现在休闲类游戏市场需求很高,相对来说也经济实用,对于充满压力的各类人群有助于相处疲劳紧张感,充满趣味性。
因此其市场潜力很大,实际发行也会有不错的经济效益。
2.3需求分析
在当今社会,生活节奏日趋加快,人们需要面对来自各方面的压力,各种亚健康问题开始凸显出来,而玩游戏就是人们在空闲时间放松压力最便捷的方式,而其中最容易上手的就是休闲益智类小游戏,之所以选择这一类型:
一是因为在现有的游戏市场中这一类型的游戏占比比较少,且有成功的产品案例--《QQ宠物》。
二是现实生活中宠物已经广为人们所喜爱,这种亲近的陪伴同时与宠物一起成长,正与本文开发《皮卡物语》十分的相似,其独特的养成型的玩法让每一个玩家在体验过程中都不会感到乏味。
三是因为上手简单容易的特性和完善的帮助信息,给各个年龄层的新手玩家都有一个很好的游戏体验。
2.4开发工具
2.4.1C#简介
作为本款游戏的唯一设计语言——C#是microsoft公司发布的一种面向对象的、简单的、类型安全的程序设计语言。
从语言上来说C#不可避免的和他的老对手java具有太多相同点了;它包括有单一继承、接口、还有与Java相似的编译过程和语法。
C#与Java的不同点在于,它借鉴了Delphi的一个特点,与COM是直接集成的,而且它是microsoft公司.NET这种模式的主要组成部分。
C#的优点:
(1)C#是一种安全的、效率的、可信赖的、架构化的,在C的基础上由微软开发的一种面向对象的编程语言。
C#继承了C++和C中本就具有的相关特性,于此同时也将其中复杂的部分舍去了。
C#具有美观可视化的GUI操作和C++的一样的高度效率,以其独特的语法、创新的语言特性和十分方便的控件拖放式编程使.NET开发成为当下最受程序员喜爱的编程语言之一。
(2)C#是面向对象的编程语言。
它使得开发者在基于MICROSOFT.NET平台的开发系统相对于JAVA在Linux操作系统上会更快更有效率。
(3)C#与底层语言C++有很高的相似性,特别是在语法和编译过程上,因此其他语言的开发人员,在熟悉类似语言的开发者可以很快的学习并上手C#。
(4)C#在嵌入式编程上有其独特的便利条件,无论是使用复杂系统级开发还是各种中小型系统均能高效的实现编码。
2.4.2ASP.NET简介
ASP.NET专注于写特别优秀的网站和web应用程序使用HTML、CSS和JavaScript的免费web框架[1]。
ASP.NET能够为当前热门的门户网站提供最佳的解决方案,所有需要的模块它都包括在其中,例如登陆、cookies、管理、测试和部署等。
其分层架构的方式是其特点之一,它将编写的代码与界面分离,让各式各样的网页展示便利[2]。
同时使编程思路更加清晰、简单。
作为ASP.NET的重要新特性之一多语言支持,在其所支持的开发语言种类和强大的语言功能两个特性是重要的两个方面。
首先,ASP.NET为Web应用的解决方案是使用一种中间语言MSIL(MicrosoftIntermediateLanguage)来执行其架构,先将ASP.NET应用编译成MSIL形式,然后MSIL就能够识别并进行机器执行。
2.5开发框架
2.5.1NETFramework4.0简介
.NETFramework提供了所有web服务所需的内部Windows组件。
.NET在运行新一代桌面应用程序时其关键组件在PUBLIC语言(CLR)运行时和.NETFramework包含的所有类库。
同时.NETFramework为企业级开发提供了托管执行环境、让开发流程和部署更清晰,以及集成各种编程语言。
Framework4.0的结构特性:
(1)Web服务是一种编译过程中可编程逻辑层结构,它的作用类似于“黑盒”,在使用安全的HTTPS的标准协议时会在因特网上为用户访问提供更多解决方法。
(2)为了解决WindowGUI的开发问题,.NETFramework为开发者提供了WindowsForms如此强大的桌面解决方案。
(3).NETFramework的类库将各种功能类、常用接口和数据类型组成的库,可根据该库中的内容可访问平台模块的相关功能。
.NETFramework中的类库作用为生成组件、控件和应用程序。
3游戏开发的总体设计
3.1游戏总体设计概述
游戏名称:
《皮卡物语》
适用系统:
windows10和windows7
游戏的完整标识:
皮卡物语(Pika)
缩略词语:
Pika
版本号:
V1.0.0
游戏类型:
休闲养成类游戏
游戏模式:
单人冒险模式
游戏界面:
表3.1游戏界面类
界面
图标按钮
主界面
START
战斗界面
商店
QUIT
状态界面
属性
怪物
装备
金币
游戏操作方式:
在电脑端使用鼠标点击控制其“战斗”和进“商店”。
因为是养成类的小游戏,所以不用控制主角移动就可以完成所有功能操作。
游戏主要玩法:
该游戏为玩家提供一个虚拟的皮卡丘宠物,讲述的是玩家可以操作这种萌宠更新武器,挑战各种BOSS升级打怪,并能在游戏中实现自动存档。
游戏娱乐性:
该游戏为玩家提供了自定义创建昵称和性别来进行游戏。
多样Q版的场景元素和宠物表情让玩家能够体验虚拟宠物的简单乐趣。
3.2游戏总体结构图
通过对游戏各个界面功能模块进行拆分设计,将所属数据流转变为了游戏的总体结构图。
该游戏结构图可以让开发者和用户都能明白的理解游戏的结构模式和各个功能模块定义。
本游戏的结构图如下:
图3-1游戏结构图
3.3游戏功能模块设计
游戏中所用到的数据信息包含有宠物信息、商店信息、怪物信息这三类。
现可将这些游戏中的信息抽象为下列所需要的数据项和数据结构:
(1)宠物信息(姓名,性别,血量值,攻击力,护甲值,等级,经验值,财富值)。
(2)商店信息(商品名,商品价格,商品值)。
(3)怪物信息(怪物名称,血量值,攻击力,护甲值,等级,掉落经验值,掉落金钱)。
本游戏的ER图如下:
图3-2游戏E-R图
3.3.1宠物信息结构设计
首先在C#里面创建的一个公共pet类,其中的相关类信息是在创建宠物的时候建立了IO输入流,将同时建立的”Pet.txt”文件内的内容输入到该类中,此类主要用于游戏各个界面在操作时对pet类属性值进行读取和修改,游戏用户进入主界面后对类值进行后台查询,并可以通过GUI界面显示给用户当前宠物信息。
该类的具体结果如下:
表3.2宠物信息类
数据名称
数据类型
初值
是否为空
说明
Name
String
Noname
No
姓名
Gender
String
Gender
No
性别
Hp
int
0
No
血量值
Battle
int
0
No
攻击力
Reco
int
0
No
护甲值
Grade
int
0
No
等级
Expe
int
0
YES
经验值
Money
int
0
YES
财富值
3.3.2商店信息结构设计
该类的设计是为了给用户的宠物提供一个可以购买商品的地方,当宠物战斗结束后,血量值不足以继续战斗就需要进入商店购买零食补充体力,每次购买后会扣除相应金币,增加属性值,如果金币不够将提醒用户”金币不足”。
当用户想要挑战更高等级的怪物,用户在商店里也可以购买到增加攻击力和护甲值相应的武器装备,具体方式同上,购买了武器装备后将累加到宠物的属性值上,没有上限,但是宠物的血量值是有最大值的,如果超过最大值将按最大值算,不会多加。
该类的具体结果如下:
表3.3商店信息类
字段名称
数据类型
初始值
是否为空
说明
Name
String
Noname
No
商品名
Money
int
0
No
商品价格
Price
int
0
No
商品值
3.3.3怪物信息结构设计
本论文中设计的怪物信息类是在用户进入战斗界面后直接进行绘制填充该类的所有字段值,将所有怪物及属性值由低到高直接在界面上展示给用户,用户可以根据宠物的状态及能力值选择挑战不同的的怪物,每一个怪物掉落的经验值和金币不一样,由怪物的等级决定,在具体战斗界面,程序后台会根据用户的攻击力和护甲属性与怪物的属性进行函数计算,同时利用Timer控件让用户与怪物在一定间隔内进行回合制的打斗,当其中一方的血量值为0时判断战斗结束,用户也可以点击逃跑,提前结束战斗,但会扣除固定经验和金币值。
类的具体结构设计如下:
表3.4怪物信息类
字段名称
数据类型
初始值
是否为空
说明
Name
String
Noname
No
姓名
Gender
String
sex
No
性别
Hp
int
0
No
血量值
Battle
int
0
No
攻击力
Reco
int
0
No
护甲值
Grade
int
0
No
等级
DropExpe
int
0
YES
掉落经验值
DropMoney
int
0
YES
掉落金币值
3.4系统流程图
该系统流程图并不复杂,进入一个登陆界面的步骤包括:
(1)创建宠物/读取存档
(2)输入姓名,选择性别
(3)进入主界面
登入之后有战斗,状态,商店和退出按键,此时如果是第一次玩用户就可以点开战斗界面选择怪物就可以开始战斗了,因为此时宠物的生命值是满值的,进入战斗界面后,用户可以根据宠物的现有能力选择不同等级的怪物,选完之后便可以开始战斗了。
整个游戏的运行逻辑简单,不需要有太复杂的操作和思维就能轻松上手。
图3-3系统流程图
4系统详细设计与实现
4.1游戏登陆模块创建及实现
4.1.1登陆界面功能模块的实现
此窗口是用户运行该桌面程序后进入的第一个主窗口,有4个button可以点击,
(1)Start按钮是新建游戏,当用户第一次使用或者想重新创建宠物可以点击此项。
(2)Load按钮是读取存档,用户可以很方便的读取已创建的pet.txt文件进入游戏。
(3)Help按钮是帮助菜单,用户可以通过此项获取游戏相关操作的帮助提示。
(4)Exit按钮是退出游戏,会关闭整个程序。
图4-1主菜单初始化页面
privatevoidStart_Click(objectsender,EventArgse)
{
Threadt=newThread(newThreadStart(delegate{Application.Run(newAdd());}));
t.Start();
this.Dispose(true);
}
privatevoidLoad_Click(objectsender,EventArgse)
{
FileStreamfile=newFileStream(@"c:
\Pet.txt",FileMode.OpenOrCreate,FileAccess.Read);
StreamReadersr=newStreamReader(file,Encoding.Default);
stringstr=sr.ReadLine();
sr.Close();
file.Close();
if(str==null)
{
Threadt=newThread(newThreadStart(delegate{Application.Run(newMenu(P));}));
t.Start();
this.Dispose(true);//返回主界面
}
else
{
string[]s=str.Split(',');
P.Name=s[0];
P.Sex=s[1];
P.Hp=int.Parse(s[2]);
P.Battle=int.Parse(s[3]);
P.Reco=int.Parse(s[4]);
P.Grade=int.Parse(s[5]);
P.Expe=int.Parse(s[6]);
P.Money=int.Parse(s[7]);
Threadt=newThread(newThreadStart(delegate{Application.Run(newMenu(P));}));
t.Start();
this.Dispose(true);//返回主界面
}
}
代码1登陆界面初始化
4.1.2新建宠物功能模块的实现
在该窗口,用户可以通过良好的UI体验实现创建一个新的虚拟宠物,可以随用户的个人爱好对宠物名字和性别进行操作,在点击”添加”控件后,程序首先会查找宠物是否已经存在,然后后台会在C盘根目录下生成一个”Pet.txt”的文本文件,并将调用”宠物信息类”对其中的属性进行属性值初始化调用StreamWriter构造函数写入到刚创建的”Pet.txt”文件中,完成后再关闭StreamWriter对象和释放file所有资源。
图4-2新建宠物界面
privatevoidpictureBox2_Click(objectsender,EventArgse)
{
stringch;
if(radioButton1.Checked==true)
ch=radioButton1.Text;
else
ch=radioButton2.Text;
/////////////查找宠物是否以存在/////////////
FileStreamfile=newFileStream(@"c:
\Pet.txt",FileMode.Create,FileAccess.Write);
StreamWritersw=newStreamWriter(file,Encoding.Default);
////////////////初始化新宠物/////////////////
//StreamWritersw=newStreamWriter(@"c:
\Pet.txt",true);
P.Name=textBox1.Text;
P.Sex=ch;
P.Hp=100;
P.Battle=20;
P.Reco=5;
P.Grade=1;
P.Expe=0;
P.Money=100;
stringstr=String.Format("{0},{1},{2},{3},{4},{5},{6},{7}",textBox1.Text,ch,100,20,5,1,0,100);
sw.WriteLine(str);
sw.Close();
file.Close();
Threadt=newThread(newThreadStart(delegate{Application.Run(newMenu(P));}));
t.Start();
this.Dispose(true);
}
代码2新建宠物的实现
4.2主界面战斗和商店功能模块的实现
4.2.1用户宠物主界面初始化
在该界面加载的时候,程序会对宠物所有信息初始化,首先调用save()方法动态存档,然后调用ShowPet()方法获取宠物信息类中所有值,将它们展示在label控件上,并且在使用progressBar控件时,将宠物的血量值、攻击力和防御力动态的展示给用户,将数据图形化增加用户直接感受。
同时该窗口有三个可点击的button按钮,
(1)战斗按钮是进入道馆界面,选择怪物战斗
(2)商店按钮是进入商店界面,可以为用户宠物补充体力和购买装备
(3)返回按钮会跳转到登陆主界面,方便用户重新创建宠物或者退出游戏
图4-3用户宠物界面
publicvoidShowPet()
{
label2.Text=P.Grade.ToString();
label9.Text=P.Name;
label10.Text=P.Sex;
label11.Text=P.Hp.ToString();
progressBar1.Maximum=P.Grade*50+50;
progressBar1.Value=P.Hp;
if(P.Battle>progressBar1.Maximum)
{
progressBar1.Maximum=P.Battle;
}
progressBar2.Value=P.Battle;
label12.Text=P.Battle.ToString();
if(P.Reco>progressBar2.Maximum)
{
progressBar1.Maximum=P.Reco;
}
progressBar3.Value=P.Reco;
label13.Text=P.Reco.ToString();
label14.Text=P.Money.ToString();
}
publicvoidSave()
{
stringDerss=@"c:
\Pet.txt";
FileStreamfile=newFileStream(Derss,FileMode.Create);
StreamWritersw=newStreamWriter(file,Encoding.Default);
sw.WriteLine(P.Name+","+P.Sex+","+P.Hp+","+P.Battle+","+P.Reco+","+P.Grade+","+P.Expe+","+P.Money);
sw.Close();
file.Close();
}
代码3用户宠物界面详情
4.3宠物战斗模块的实现
4.3.1进入道馆选择怪物界面的实现
在道馆界面加载的过程中会调用3个方法,分别是ShowPet()、Save()和Monster()。
在本文前面已经提到了前两个方面,ShowPet()是展示宠物信息,Save()是将当前界面宠物相关控件的属性值保存到用户硬盘的”Pet.txt”文件中,在此就不做细述。
Monster()方法实质是新建一个数组,将游戏开发过程中就已经写好的怪物信息写入数组中,再通过查找数组下标的方式将怪物属性值一个一个读出来放在控件上。
于此同时,后台将怪物的PictureBox
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ASP 宠物 养成 小游戏 设计 实现