我的心是海洋-好地方
网络小游戏
----
连连看
摘要
因特网的发展使人类进入了一个全新的世界,人与人之间可 以远隔万
里为了同一兴趣爱好而交流,做到了网络无国界,信息无国界。随着因特
网的不断发展 ,
网络游戏作为一个新的名词融入到了人们的日常生活当中。
网络游戏来源于“
onl inegame
”,更直接的翻译是“在线游戏”,亦即必
须在大家联网而且都在线的时候,才 能够团队互动,否则就属于单机游戏
了。
网络游戏产业作为现代电脑电子技术的产 物,正在以其独特的魅力在
全世界的娱乐领域占据主流位置,我们在承认广大娱乐网民的选择空间狭小的同时,也必须明确的一点就是网络游戏本身所具有的强大的吸引力。
网络游戏的吸引力主要在于 ,它在让玩家打发时间的同时,可以让人实现
在显示生活中不能实现的理想,得到在显示中不能得到的东 西。而且网游
产业促动高科技技术不断升级,作为经济增长的一大支撑点,已经成为经
济腾飞的 “第四产业”。近年来,世界网络游戏市场高速发展。根据统计,
全球网络玩家所占互联网人群的比例已 经超过
30%
。网络游戏凭借其信息
双向交流,速度快,不受空间限制等互联网有时, 具有诱人的互动性、仿
真性和竞技性,已经成为网络业盈利优厚的三大领域之一。网络平台的发
展,为网络游戏奠定了坚实的“物质”基础。宽带的迅猛发展为网络游戏
提供了“高速公路”,而专用游 戏服务器则为网络游戏提供了容量巨大的
“加油站”。前不久,网络游戏还被视为一个“高风险”的行业 ,但随着
人们对网络游戏的重新认识,网络游戏正在恢复其应有的地位。
关键字
连连看、网络游戏、网络对战。
目录
1
选题背景
..................................... .........................
1.1
课题来源
.................................................. .......
1.2
目的
.................... .........................................
1.3
意义
................................... ..........................
1.4
主要问题
................................................. ........
1.5
技术要求
................. ........................................
1.6
发展概况
................................. ........................
1.7
指导思想
. .................................................. ......
2
方案论证
......................... .....................................
2.1
设计 原理
........................................... ..............
2.2
方案选择
........... ..............................................
2.3
数据流图
............................. ............................
3
系统设计
.................................................. .............
3.1
基本思路
............ .............................................
3 .1.1
解决游戏区域问题
........................ ....................
3.1.2
获取图片位置的思路
..........................................
3. 1.3
网络通信协议的思路
........................ ..................
3.1.4
其它功能的思路
.< br>.............................................3.2
界面的设计和图片的随机生成
.......................................
3.2.1
界面的设计
.
........................... ......................
3.2.3
单机控件的事件触发
..........................................
3.2.4
其它控件与功能
.
................... ..........................
3.3
图片是否可消除的判断
........................... ..................
3.3.1
两张图片是否相同
. ...........................................
3.3 .2
图片路径的判断
.
...................... .......................
3.4
网络通信与对战
.
......................................... ..........
3.4.1
概要
.
.......... .............................................
3 .4.2
读取对家发送的数据
....................... ...................
3.4.3
网络通信控件事件触发
........................................
4
结果分析
.................................... ...........................
4.1
数据分析
................................................ .........
4.2
运行结果分析
.............. .......................................
4.2.1
游戏同时开始问题
............................. ...............
4.2.2
游戏结束时的判断
.... ........................................
5
总 结
........................................ ...........................
谢辞
............ .................................................. ......
参考文献
............................... .................................
1
选题背景
1.1
课题来源
网络游戏起源早期电子游戏中的
RPG
游戏(角色扮演游戏)。
RPG
游
戏是电子游戏中历史最为悠久的一种,
也是数量最为庞大的一种,
因为
RPG
游戏相对于其他类型的游戏,技术要求最低,电脑配置要求也最低,因此
开发起来相对容易很多 。在电子游戏发展史中,也留下了许许多多的经典
作品,像家用电视游戏机上的最终幻想系列,
PC
机上魔法门系列,还有中
文电脑
RPG
游戏的经典仙剑奇侠传。正是因为
RPG
游戏的竞争十分激烈,
许多厂商开始力图在
RPG
游中引入一 些新鲜的因素。
1997
年,
暴雪公司发
布了
DIABLO
(暗黑破坏神),这其实是一款全新的游戏类型,严格意义上
来说这并不是一款传统的
RPG< br>游戏,它更像是即时战略游戏与传统
RPG
的
结合,但它又确实包含了许多传< br>RPG
的因素在里面,最为关键的就是完整
包括了角色的升级系统,所以业界 给这种游戏定义为
ARPG
(动作角色扮演
游戏)。
DIABLO
对 游戏界的贡献还不只于此,这款游戏还首创了战网游戏
系统,所有正版游戏用户都可以得到一个
CDKEY
,用这个
CDKEY
可以上到
暴雪为用户免费开发的服务器上进行 多人游戏,这虽然有别于现在的网络
游戏,但无疑为后来的网络游戏开发商提供了一个很好的思路。
随着电脑软硬件技术和互联网的飞速发展,电脑游戏也突飞猛进,成
功游戏不断涌现。 比较成熟的项目主要有:反恐精英(
CS
)、星际争霸、
魔兽争霸
2
、
FIFA2003
、帝国时代、
FIFA2004
等等。这时也出现了越来 越
多的网络小游戏,
休闲类项目包括网络围棋、
中国象棋、四国军棋、
桥牌、
麻将、拱猪、斗地主、拖拉机、连连看等。
1.2
目的
< br>网络小游戏制作的目的是满足了人们休闲的需要,在紧张工作之余休
闲类的小游戏能够给人带来最 大程度的放松,
也可以增进人们之间的交流,
沟通,通过游戏还可以认识更多的朋友,也可以到 达跨省、跨市,甚至跨
国间人们互相娱乐的目的。
另外也通过本程序将三年来所学的专业知识和其他方面的知识融入
到实际应用中。
1.3
意义
通过此次课题的设计,掌握如何制作一个游戏软件,以及制 作游戏软
件的整个流程,制作游戏软件的步骤,为以后的就业工作打下基础。
1.4
主要问题
开始制作游戏时,主要要解决的问题有以下几个方面: 如何设置整个
游戏的界面;如何控制连连看游戏中随机图片的生成且每种图片必须为偶
数个;游 戏开始后,判断鼠标两次点击的图片能否消去,即图片是否相同
且图片之间路径的判断;如何 连接网络上的两台计算机实现网络对战,互
发消息,如何判断游戏是否结束以及输赢问题等。
1.5
技术要求
网络中任意计算机当运行该游戏软件是,能自己决定是 当客户机还是
服务器,如果要当服务器,则等待客户机的连接请求;如果要当客户机,
则要主动 去连接服务器。游戏中能正确判断鼠标两次点下的图片是否可以
消去、能正确判断游戏是否已经结束和哪 一方玩家胜出。还可顺利发消息
给对方和接收对方发来的消息。
1.6
发展概况
网络游戏正处于加速发展周期中,
中国网络游 戏市场迅速扩大,
近三
年的年均增长率超过
100%
。
网络游戏的告 诉发展,
逐渐引起了我国政府的
高度重视,信息产业部、文化部、新闻出版总属等相关部门都在 积极推动
各项市场监管和鼓励网络游戏产业发展的政策措施的出台,
2003
年网络游
戏首次被正式纳入国家
863
计划,标志着我国网络游戏产业已经的到政府
的 充分重视。除外,在网络游戏产业发展的同时,有力带动了相关行业的
发展,如软件、计算机、通信、电 信运营、互联网等,根据统计,网络游
戏能够带动
10
倍于自身产值的相关行业的发展 。预计未来三年,中国游
戏时常规模仍将保持
60%
以上的告诉增长,至
20 06
年市场规模将接近
100
亿元,而多样的资本运作模式将成为网络游戏产业发展的 重要推动力。同
时,手机游戏、家用游戏机、游戏传媒、电子竞技等游戏周边行业也将快
速发展 起来。
1.7
指导思想
按照软件开发的 总过程进行设计,
经历定义和计划、
需求分析、
软件
设计、软件编码、软件测 试等过程。
2
方案论证
2.1
设计原理
本设计采用客户机—服务器模式,网络上两台计算机自主 决定是否当
服务器或是客户机,若一方为客户机,则另一方为服务器,当连接上是则
分别点击准 备以待游戏的开始,游戏开始时间以后当对战双方都准备后程
序自动判定游戏开始。
游戏开始后 ,
双方都有自己的游戏区域,
互不干扰,
当一方消完全部的图片则向对方发送游戏结束 信息,并在双方显示相关提
示信息,游戏过程中,双方都会显示对家和自己还剩下未消去的图片数。
游戏规则是模仿网络上普通的连连看游戏,主要是鼠标两次点击的图
片能否消去的问题 。当前,前提是点击两张相同的图片,若点击的是同一
张图片或者两张不同的图片,则不予处理。在两张 想同图片所能连通的所
有路径中,如果存在一条转弯点不多于两个的路径,就可以消去;如果没
有,则不予处理。
游戏过程,任意一家(假设为
A
方)消去图片后必须同 时向对家发送
已消去两张图片的信息。这样对方(假设为
B
方)在获取信息后即显示< br>A
方剩余的图片数,当
A
方剩余图片数为
0
,而
B< br>方剩余图片数大于
0
,则
提示
A
方胜利。
B
方失败的信息。
考虑到游戏娱乐性以及网络游戏的交互特性。加入聊天功能,这样交
战双方可以在游戏之后或者过程中发表自己的看法与经验(这也是参考了
当前网络游戏的潮流来设计的 )。
2.2
方案选择
在概要设计阶段,只要有两中方案可供选择:
一、双方都有自己的游戏 区域,互不干扰,谁先消完全部的图片方块
则就为胜出的一方,同时不管另一方是否已经消完全部的图片 方
块,游戏仍然结束。
二、双方的游戏区域相同,即共用一个游戏区域,当一方消 去两块图
片,
则其总共消去的方块数加
2
,
并且对方的游戏区域中也 少掉那
两块图片。当所有的图片方块都消去后,则游戏结束,统计消去
的图片块数多的一方为胜 者。
在第二种方案中,双方共用一个游戏区域,任何一放的消去方块的动
作都要在 另一方中实时的反应出来,这容易产生一些问题,就比如甲方点
下图片下标值为
1
的图 片(姑且用甲),乙方点下另一张图片下标值也为
1
的图片,当乙方想再次点下另一张下标值为
1
的图片时,甲方已经先于
乙方点下那张图片,则按规则就已经消去了,反应在乙方这 边的好象是乙
方做了一次空操作,如此反复的话,可能会引起玩家的厌烦心在网络上流
行的连连 看游戏或者其他的游戏都是以第一种方案为设计思想,对第二种
方案设计的游戏的规则可能会不太习惯,
玩起来就不能达到娱乐的目的了。
所以我们放弃第二种方案的设计思想,参考网络上流行的连连 看的游戏规
则,设计出第一种方案。
2.3
数据流图
由于游戏包含网络功能,所以将程序分为服务端程序和客户端程序。
两种程序既有自身模块之间数据 传送,也有与对方程序之间的数据传送,
所以就有了下面的这个数据流图:
3
系统设计
针对上面的需求分析,
我们把整个软 件分成三个模块:
1
、
整体界面的
设计和图片的随机生成;
2
、图片路径判断函数;
3
、网络通信与对战。
以下就是系统结构图:(略)
3.1
基本思路
3.1.1
解决游戏区域问题
这个问题最简单,但是 却是最花时间的。正所谓:万事开头难。刚开
始想了好多控件来实现。比如
Label
,
Panel
等等,后来在参考文献中发
现一个扫雷游戏可以通过
image
控件来画图。因此在几天之后才解决这个
最早的最简单的也是最头疼的问题。
3.1.2
获取图片位置的思路
首先,最基本的就是关于程序图片的位 置怎么获取,以及如何控制。
这里采用最常用的方法——数组。考虑到图片是多行多列的格式。所以采< br>用二维数组(数组名为
flag[]
)的方式来控制比较直观,并且为了程序容
易解读,统一在不同过程中用名为
i
和
j
的变量来分别表示行列。程序开始时给数组中的各个元素赋初值为
0
,即表示没有图片。
然后数组控 制整个游戏区域,游戏区域最外围为空白区域,即相关元
素的值为
0
。这样就可以保证 游戏刚开始后,第二层显示的图片之间的相
连路径处理时就没有阻碍了。
现在介绍
flag[]
数组具体控制图片的过程,
首先,
由于每张图片显示
的 宽度×高度为
39
×
47
,所以整个控件设置为
468
×< br>376
(包括外围空白
的两行两列)。而每张图片可以用
flag[i,j]< br>来表示,它在
image
内部的
位置为
{x=i*39
到(i+1)*39,y=j*47
到
(j+1)*47}
这样
image
控件内的一点
M(x,y)
所对应的图片就可以转化为数组
flag[i,j ]
的值来判断。这个思路
的具体算法可以后面的
3.2.2
的第二个步骤中得 以体现。
3.1.3
网络通信协议的思路
这里有一点非常需要解决,那就是对战双方发送的游戏状态信息、聊
天信息、用户准备信息全部是同一 个方法来发送出去的,这进接收方将无
法判断收到的信息是哪个类型的,这时通过定义发送信 息的协议来完成。
即在每次发送不同信息前加入一个四字符长的字符串来说明是哪种类型,
接收 方通过提取接收到信息前四个字符来判断是哪种类型,然后进行进行
相关的处理。详细处理过程见
3.4.2
的内容。
3.1.4
其它功能的思路
其它功能的思路基本上没有什么难度也没花多少时间去解决,因此将
在后面的 具体各个部分的设计过程当中分别进行介绍。
3.2
界面的设计和图片的随机生成
由于这个程序的界面并不是很复杂 ,
所以用到的控件也不多,
主要核
心内容还是后台的代码设计。图片的随机生成主要是 用到一个
random()
函数将随机数赋值给
flag[]
数组中的每个元 素,
然后根据数组元素值,
来
显示图片。(这个在
3.1.2
的思路 中有详细的介绍)
3.2.1
界面的设计
将整体界面分为 三个大的部分,左上部分为游戏图片显示区域,即主
区域,用
IMAGE
控件
;
右上角为命令按钮、聊天信息框,双方游戏状态显
示(用到了按钮、
MEMO
、
EDIT
、
Label
等控件)。下面部分则是状态栏,
显示相 关提示信息(如图
3-1
)。
图
3-1
程序主体界面
3.2.2
图片的随机生成
实现这个功能要分很多个步骤:
1.
程序运行时即载入 游戏需要的六张图片。通过一个循环,将命名
为
[1-6].bmp
的位图载入到数组 的各个元素。这个数组的下标也
是相应的从标志为
1-6.
这样后面通过将
f lag
标志的值置为
1-6
判断,该载入哪张图片。具体载入图片的代码如下:
for i:=1 to 6 do
begin
fk[i]:=;
生成一个数组分别存放六张图片
fk[i].loadfromfile('pic'+inttostr(i)+'.bmp');
end;
2.
当确认游戏开始时,通过画图过程完成图片生成,画图的过程代
码如下
procedure p();
var i,j,k:integer;
begin
初始化设置画出一片空白区域
for i:=1 to 6 do
将给二组数组相关元素赋
1-6
的值,以方便
画出相应图
for j:=1 to 10 do
begin
randomize();
repeat
k:=random(6)+1;
将生成随机数加
1
(为了防止
0
生成)
flag[i,j]:=k;
控制每个元素显示图片的名称,
六张图片文件名为
1-6
,均是
.bmp
格式
same[k]:=same[k]+1;
until same[k]<11;
(j*39,i*47,fk[flag[i,j]]);
{--*
说明开始
*--
在相关的的位置上画出设置好的图片 。具体画哪张图,通过第三个参
数完成,这里用
fk
数组来确定,而且下标则由相关位 置(由
flag
数组的
行列位置来标志)的值来判定。
--*
说明结束
*--}
。
end;
end;
其中主要用到了
Pascal
语言中的
Random
函数
3.2.3
单机控件的事件触发
总共有四个按钮和两个文本框。四个按 钮分别是:准备(进入游戏准
备状态,当双方同时准备后就自动开始游戏)、退出(退出游戏程序)、< br>帮助(显示用户帮助信息)、发送(发送聊天信息)。两个文本框中一个
是
MEMO控件生成,
用来显示双方聊天记录
;
另一个是用来输入聊天信息的。
四个按钮的事件以准备和发送按钮事件较复杂,其它两个非常简单。
下面就列出两个复杂的代码 :
准备按钮过程代码:
procedure lick(Sender: TObject);
begin
gamevalue:=60;
用来存储剩余图片数,开始默认为
60
d:=false;
准备后,将按钮置为不可使用。
ready:=ready+1;
准备后,
ready
变量加
1
player:=inputbox('
输入玩家名称
','
输入玩家名称
' ,'');
如图
3-2
if IsServer then
tions[0].SendText('prep')
else xt('prep');
{--*
注释开始
*--
由于同 一程序妆作服务器端和客户端,所以要判断不同的发送信息方
式。另由于各种情况传送信
< br>息全部为字符串,而网络通信过程却要判断不同的信息类型,因此发
送时定义一个协议就是在所< br>
有发送的字符串之前加入一个四个字符长的字符串。当接收方收到时
再根据这四个字 符定义的协
议来处理不同的事件。至于如何处理,将在后面
3.3
网络通 信与对战
详细介绍。注:后面如果有向对方
发送信息时都采用这种方法来判断并发磅信息。
--*
注释结束
*--}
图
3-2
输入玩家名称
图
3-3
连接到服务器端
if ready>1 then
ready
变量是
BYTE
型用来判断双方是否已经同时准备,默认为
0
,
任意一家准备都加< br>1
。
begin
n:='60';
游戏开始设置对家剩余图片数为
60
(默
认)
n:='60';
游戏开始设置自己剩余图片数为
60
(默认)
d:=true;
激活
IMAGE
控件
drawmap();
调用画图过程
end
else Te xt:='
正在准备对家开始
';
如果只有一家
准备,显示提示信息。
end;
开始按钮的过程事件的设计过程分为三个阶段:
1.
游戏开始设计时,
这时功能最简单,
只需要激活
image
控件与调用
画图过程即可
2.
加入网络游戏后,
为了让对家双方明确清楚谁赢了,
加入要求用户
开始游戏之 前输入玩家名字的功能。
3.
网络游戏要求双方全都准备好了才 开始游戏,
所以加入
ready
变量
来判断双方是否已经全部准备,
并向对家发送已经准备的消息。
(从
这个功能开始,因为需要向对方发送信息,
且由于 服务器端与客户
端发送消息的方法不同,
所以遇到发送消息功能时全部通过一个新
加入 的类型为布尔型的变量
isserver
判断)
发送按钮过程代码:
procedure ick(Sender: TObject);
var strchat:string;
begin
strchat:=;
将输入框的内容存入字符串变量当中
(strchat);
聊天记录框显示当前发送信息
if
IsServer
then
判断当前电脑是服务器端时发送聊天信息的方式
tions[0].SendText('chat'+strchat)
Else
当为客户端时发送聊天信息的方式。
xt('chat'+strchat);
:='';
发送完信息,清空聊天输入框
end;
3.2.4
其它控件与功能
Labe l
控件,用来显示双方对战过程剩余图片数。状态栏控件,用来
显示游戏过程相关的提示信息。 包括单机和网络两方面的提示信息
用户帮助功能,
当用户点击帮助按钮后,
打开说明书文件,
代码如下:
ShellExecute(Handle, 'open', '
说明书
.(Sender: TObject; Button:
TMouseButton;
Shift: TShiftState; X, Y: Integer);
var i,j:integer;
strtemp:string;
begin
i:=(y div 47);
j:=(x div 39);
if temp=0 then
begin
temp:=flag[i,j];
tempi:=i;
tempj:=j;
end
else
begin
if (temp=flag[i,j]) and (path(i,j,tempi,tempj)) then
这里就调用了
path函数来判断,两张相同的图片,是否符合路径上的要
求。
begin
if (i=tempi)and (j=tempj) thenif2
temp:=0
elseelse2
begin
temp:=0;
flag[i,j]:=0;
flag[tempi,tempj]:=0;
gamevalue:=gamevalue-2;
strtemp:=inttostr(gamevalue);
n:=inttostr(gamevalue);
gle(j*39,i*47,(j+1)*39,(i+1)*47);
gle(tempj*39,tempi*47,(tempj+1)*39,(tempi+1
)* 47);
if IsServer then if3
begin
if gamevalue>0 then
tions[0].SendText('picn'+strtemp)
else
tions[0].SendText('over')
end
else else3
begin
if gamevalue>0 then
我的心是海洋-好地方
我的心是海洋-好地方
我的心是海洋-好地方
我的心是海洋-好地方
我的心是海洋-好地方
我的心是海洋-好地方
我的心是海洋-好地方
我的心是海洋-好地方
本文更新与2021-01-26 11:21,由作者提供,不代表本网站立场,转载请注明出处:https://bjmy2z.cn/zuowen/188471.html
-
上一篇:联谊活动小游戏大集合
下一篇:“让我们都有一颗感恩的心”主题班会设计