C#毕业设计说明书--网络五子棋游戏的设计

别妄想泡我
547次浏览
2021年01月27日 22:27
最佳经验
本文由作者推荐

在开学典礼上的讲话-税收自查报告

2021年1月27日发(作者:5秒童话)
网络五子棋游戏的开发及设计


摘要


随着人 类社会进入
21
世纪,网络技术的快速发展,使得人类生活中的方方面面都
围绕着这些 丰富多彩的网络应用。这些网络应用在不同的领域都有不同的光彩,它们
也逐渐成为人类生活中不可缺少 的一部分。网络游戏就是在顺应这一网络应用潮流下
所诞生的新兴技术产业,更是在网络市场上也掀起了 一股开发网络游戏软件的技术热
潮。网络游戏的种类繁多,比如休闲型的、对战型的、角色扮演型的和功 能型的网络
游戏。网络五子棋游戏就是一种简单的休闲型的网络游戏,这类网络游戏给予百忙中
的人们一个休闲的娱乐方式,能够在工作之余,既能享受到游戏生活的乐趣,又能提
高脑部思维能力,以 便更好地提高工作效率。

通过研究分析网络市场上比较常见的五子棋游戏软件,
如五 子连珠、
QQ
五子棋等
等的五子棋游戏软件,这一类的软件都是典型的休闲型络游戏, 同时也是非常富有趣
味性的益智型游戏。任意一款网络五子棋游戏的结构都是基于
C/S
模式的,这类的软
件主要都包含客户端和服务器端两部分的功能设计,各部分分别实现不一样的功能。
本系统重点设计了五个模块,包括用户注册模块、用户登录模块、游戏大厅模块、对
弈窗体模块 、服务器窗体模块。系统支持用户注册、登录、保存用户信息、简单的两
人对弈、游戏胜负的判断等功能 操作。


关键字:
网络游戏、五子棋、
C/S
模式、功能 模块设计
Abstract

THE DEVELOPMENT AND DESIGN OF GOBANG GAME ON
NETWORK


Abstract

With the human society
was
entering into
the 21st century, the
rapid development of
network
technology,which
makes
all
aspects
of
human
life
be
surrounded
with
colorful
network

applications.
These
network
application
have
different
glory
in
different
fields,
they
are
also
gradually
become
an
indispensable
part
of

game
is
the
emerging
technology industry that was borned under the trend of network application, but also booms
an technology upsurge of developing network game software in the network
are many types of online games,
such as
casual,
pvp scenarios, role and functional
online
game.
Gobang
game
on
network
is
a
simple
and
casual
online
games,
this
kind
of
online
games gives a leisure entertainment which is not only enjoy the fun of life, but also improve
the brain power for busy people after work ,in order to improve work efficiency better.

Through
researching
and
analyzing
the
more
common
gobang
game
software
on
the
network
market,
such
as
Nith- Game,
QQ-Renju-Game
software
and
so
on,
This
kind
of
software is a typically casual games and also a puzzle game which is very interesting. any
gobang
game
on
network
whose
structure
is
based
on
C/S
mode,
this
kind
of
software
mainly contains two parts function design of the client and server, and each part respectively
realizes different system has focused on designing five modules,including the
user
registration
module,
user
login
module
module,
the
game
hall
module,
game
form
module,
server
form
module
five

supports
the
functionality
of
the
user
register, login, saving the user information, simple chess game for two people, judging the
the outcome of game.


Key words:
Online Games

Gobang, C/S Mode ,Function Module Design


目录


1


网络五子棋游戏的系统简介

.
........................................
1

1.1
网络五子棋系统开发背景
.......................................... 1
1.2
网络五子棋系统概述
.............................................. 3
1.2.1
系统设计目标

..................... .......................... 3
1.2.2
系统功能结构图

............................................. 3
1.2.3
系统运行流程图

............................................. 4
1.3
网络五子棋系统开发环境
.......................................... 5

2


网络五子棋游戏数据库设计与开发

.
..................................
6
2.1
数据库的概念设计
................................................ 6
2.2
数据库的创建
........................... ......................... 6
2.3
数据库的编程
.................................................. .. 7

3


网络五子棋游戏的通信设计

.
........................................
9
3.1
网络编程模型
..................... ............................... 9
3.1.1 IP
地址

.
............................ ........................ 9
3.1.2
端口
................................................ ....... 9
3.1.3 UDP
协议

.
....... ............................................ 9
3.1.4 Socket
套接字

.
............. ................................. 9
3.2
通信模块设计
................................... ................ 10

4


网络五子棋游戏的功能模块设计

.
...................................
14
4.1 GobangClass
类库

......... ....................................... 14
4.2
用户注册模块设计
............................................... 15
4.2.1
功能设计

....................... ........................... 15
4.2.2
程序界面

................................. ................. 15
4.2.3
实现过程

.. ................................................ 15

I

4.3
用户登录模块设计
............................................... 17
4.3.1
功能设计

....................... ........................... 17
4.3.2
程序界面

................................. ................. 17
4.3.3
实现过程

.. ................................................ 18
4.4
游戏大厅模块设计
............................................... 19
4.4.1
功能设计

....................... ........................... 19
4.4.2
程序界面

................................. ................. 19
4.4.3
实现过程

.. ................................................ 20
4.5
对弈窗体模块设计

................... ............................. 22
4.5.1
功能设计

................................. ................. 22
4.5.2
程序界面

.. ................................................ 22
4.5.3
实现过程

.................... .............................. 22
4.6
服务器窗体模块设计
............................................. 26
4.6.1
功能设计

....................... ........................... 26
4.6.2
程序界面

................................. ................. 26
4.6.3
实现过程

.. ................................................ 27

5


网络五子棋游戏的算法设计

.
.......................................
29

6


网络五子棋游戏的系统测试

.
.......................................
31

7


结论

........ .................................................. .
32
致谢

.......................... ........................................
33
参考文献

................................. .............................
34
附录
................................................ ..................
35

II


前言

人类社会已经进入了信息化产业迅猛发展的新世纪当中,软件和信息服务产业作
为信息产业的核心,已经成为时代全球信息产业中最重要的,同时也是最核心的一部
分。无论是 进行宇宙探索的航天飞船,还是日常生活中的飞机、汽车、家电或手机,
这些器械之所以能够正常地运行 ,全都是靠它的内在软件系统。因此,从安全性和实
用性的方面来看,软件系统的开发其实是一个相当困 难的过程,不但会遇到各种需要
解决的技术难题,更面临着无处不在的风险压力。所以,一个优秀的软件 技术开发人
员不仅仅需要过硬的技术基础和丰富的经验,还需要一颗坚定的心来抵抗一切来自软
件开发的压力。

现阶段的软件开发与网络技术相结合,研发出了一种适合在互联网或企业内部 网
中,使用网页浏览器操作的应用软件,这种软件也就是网络应用。现实生活中的网络
应用多种 多样,包括了网络办公、网络游戏、网络电视、电子商务、网络资源搜索、
电子邮件、千姿百态的网站、 杂志订阅、远程控制以及其他各种与网络相关的应用软
件。这些网络应用软件逐渐占领了国内外的网络市 场,拥有较为广阔的经济发展前景
的同时,
使得大量的软件技术开发人员或是
IT精英都投入到网络应用开发的领域中来,
引领着网络技术应用方面不断地进步和发展。
< br>由于现代都市生活的发展节奏越来越快,人们在工作、学习和生活等方面所承受
的压力也在不断地 增大,逐渐超出人们所能承受的范围,遏制着人们前进的步伐。因
此,越来越多的人们都选择在工作之余 进行类似网络游戏这样的娱乐方式,来缓解压
力,以达到劳逸结合的同时提高工作效率,增强积极向上的 乐观生活态度的目的。

现阶段网络上的网络游戏的种类游戏很多,比如休闲网络游戏、网络对 战类游戏、
角色扮演类大型网上游戏和功能性网游等等。五子棋游戏就是一款典型的休闲网络游
戏,同时也是一款富有趣味性的益智型游戏。用户可以通过游戏网站和平台下载各种
各样的网络五子棋游 戏,如五子连珠勋章版、五子彩球、五彩连珠、五色球、七彩连
珠、彩珠连连看、彩色五子棋以及搞怪碰 碰球、
QQ
五子棋、五子棋大师、黑石等等。
而提供这类的游戏下载网站和平台大体上 有
4399
小游戏、多玩、
5173
、游民星空、浩
方、
Q Q
、起凡等等。不相识的用户通过像五子棋游戏一样的网络游戏进行对弈和信息
交流,切磋棋艺 ,提高技艺和交流能力。

III



1


网络五子棋游戏的系统简介

1.1
网络五子棋系统开发背景

1.
研究现状

随着计算机技 术的发展,特别是因特网的推广与应用,网络技术已深入到人们的
工作和生活的各个方面,众多的计算机 通过网络连接在一起,网络组件应用程序必不
可少,现有的应用软件必须结合网络功能才能在市场上拥有 竞争力。同时,快节奏的
生活给人们的压力日益增大,更多的人愿意在工作之余进行各种娱乐。而网络游 戏作
为这种娱乐方式的一朵奇葩,迅速占领了市场发展的重要部分,各种各样的网络游戏
软件层 出不穷,不断丰富着人们的生活,逐渐成为人们生活娱乐的重要方式之一。

本次设计要求开发一款基于
Visual C#
平台的网络五子棋游戏软件,这是一款 类似
于棋牌的休闲网络游戏应用软件。网络五子棋游戏的技术研发,就是将网络技术与五
子棋游 戏规则相结合,以便实现在同一网络中两人或多人在线对弈五子棋的功能。五
子棋游戏又称连珠游戏,
是一种两人对弈的纯策略型的棋类竞技运动的益智游戏。
五子
棋游戏因其简单易 学、技巧简单、学问深奥的特点而被广大人民群众所喜闻乐见。五
子棋游戏的就是黑子先行,五子相连即 可得分,棋子的方向可以是横向、竖向、斜向。
这种游戏规则不仅明显地体现了现代休闲生活的短、平、 快的特征,又体现出了高深
的古典哲学阴阳易理的学问,是中西文化的交流点和古今哲理的结晶,拥有东 方的神
秘性和西的方直观性特点。这种益智型的网络游戏技巧简单易学但又具有深奥的逻辑
性, 非常富有趣味性和消遣性,能增强思维能力和提高智力,有助于修身养性,让人
们在休闲放松之时锻炼脑 力。

网络五子棋游戏不仅能够满足了人们对休闲娱乐游戏生活的需求,从不同的角度
上看,网络五子棋游戏软件也具有一定深远的意义。例如,从经济发展角度上来看,
网络五子棋游戏软件 在网络市场发展中很受欢迎,用户通过在网上免费下载或购买这
一系列的软件游戏,从而带动了网络市场 的经济发展,使得网络市场经济将在国民经
济市场总值中占有一定的比例,提高市场经济发展能力。再比 如说,从文化传播角度
上看,五子棋游戏软件在设计开发时依旧遵循五子棋的文化特色。软件在市场上越 受
欢迎,也就会有更多的人喜爱这些五子棋游戏软件,不断地弘扬和传播五子棋的精神
和棋文化 ,同时带动我国其它文化底蕴深厚的棋文化的交流与传播,比如说象棋、围
棋等等。软件设计基于
C/S
模式,有服务器端和客户端两部分。服务器端程序设计用
来保存用户的个人信息,包含 注册信息和对弈信息,设置游戏大厅,与客户端的对弈
连接,判断对弈胜负。而客户端程序设计则要求实 现用户登录服务器,确定房间坐席,
进行对弈的功能。


1

2.
研究现状

现阶段网络上有很多个游戏网站和平台都推出了具有趣味性 和消遣性的五子棋游
戏软件成品。在这些游戏网站和平台上,程序员发布研发出来的软件有不同的运行环
境,有单机型的
(
无网络连接,人机对决
)
、网页对战型
(
在线平台对决
)
和手机版。

单机型的五子棋游戏软件界面简洁,操 作简单。这类的游戏大都可以在游戏网站
上下载到电脑中即可。这种类型的益智五子棋小游戏有五子连珠 、五子球、疯狂五子
连珠、五子连珠勋章版、五子彩球、五彩连珠、五色球、七彩连珠、彩珠连连看、彩
色五子棋以及搞怪碰碰球等等。游戏运行不需要联网,界面中只有棋格和预览框,棋
盘上的棋子 则是用不同颜色的球代替,每选择一个颜色的球放在棋格中,棋格中就会
自动给出其它颜色的球,用户还 可以在预览框中查看到下一步可选择的球色,在棋格
被填满之前将达到五个以上的同色球消除就可以得分 。

对战型的五子棋游戏界面美观大方,配置华丽,人物众多,操作也简单。这类型
的 五子棋游戏都是需要在线对弈,而且大部分都必须在该游戏软件的游戏保障平台上
才可以对决。
很多人比较熟悉的游戏平台
QQ
上就包含这类的五子棋软件:
QQ
五子棋和五子连珠。
QQ
五子棋是由腾讯公司推出的,
在原有玩法规则和比赛模式上推陈 出新,
游戏性能更强大的
QQ
游戏平台中研究开发出的一款两人在线对弈游戏。游戏中 设置
多个区域和房间、以及桌子,每张桌子只容两人对决。根据五子棋的规则进行黑白棋
子游戏 ,然后获得积分和相应的段数等级。五子连珠是指腾讯
QQ
平台开发的《
QQ

想世界》中的一款在线游戏,有各种各样的人物造型。在游戏中有黑罐子、白罐子和
炸弹怪三 种怪物,用户根据五子棋的玩法消灭这些怪物。消灭黑罐子就会出现白罐子,
反之,消灭白罐子就会出现 黑罐子;消灭炸弹怪,就可以把它周围的所有罐子都消灭
掉。同样,在游戏结束后获得相应的分数、等级 和装备。除了必须在游戏平台上使用
的五子棋游戏以外,还有一款五子棋游戏辅助软件黑石
Bl ackStone
,这是一款被公认
为连珠对弈软件中综合棋力最强的最常用的软件。在
2000
年传入中国后,黑石对中国
各学术界研究五子棋理论起到了前所未有的推进作用。< br>
手机版的五子棋游戏界面也非常简洁。在很多情况下,布局和配置上也含有很多
的趣味 性,这类的游戏有五子连珠
MoovingBalls
、五子棋大师、极品五子棋、
J M
休闲
五子棋、欢乐五子棋和彩色五子棋等等。就拿五子连珠
MoovingBall s
来说,它的趣味
性在于将传统的黑白五子棋更改为各种各样的以人物的脸部表情为原型的球, 和五子
棋的规则一样,每走一步就任意出现三个球,在界面被填满之前,只要把至少
5
个一
行或一列的球消掉就可以得分。

这些五子棋游戏软件的设计研发也都在不断地进 行着,秉持着界面美观、大方、
友好,操作简单、方便的基本特点,设计研发出独具特色的游戏软件系统 。软件各模
块设计之间层次更加分明,联系更加紧密。用户使用这些五子棋游戏软件时,软件保
存用户的各种信息,提供可靠的信息保密制度和安全保障。


2

1.2
网络五子棋系统概述

1.2.1
系统设计目标

设计要求开发一个基于
Visual C#
平台的在线五子棋游戏软件,软件的开发要 求各
模块层次要求进行详细分析和规划,设计必须条理清晰,实现各种不同的功能,全面
而系统 地编程设计五子棋游戏软件,以便软件可以按照要求正常运转,进行五子棋游
戏。具体设计要求包括:< br>
(1)
操作简单方便、界面简洁美观;


(2)
注册模块除了注册个人信息以外,还可以包含用户头像;


(3)
设置游戏大厅,进入游戏大厅后选择房间进入,显示当前房间的人员信息;


(4)
进入和退出座位时,显示座位状态;


(5)
在对弈双方的棋盘上实时显示棋子,对弈结束后,高亮显示最后下的棋子;


(6)
按照五子棋规则判断胜负,并按胜负给玩家进行分数的调整;


(7)
在服务器端对人员的分数进行排序;


(8)
五子棋软件要求服务器端和客户端都能正常工作运转,
用户可以在该软件上顺
畅地进行游戏,最 后提交整个工程的源代码。

1.2.2
系统功能结构图

本系统 设计基于
C/S
模式分为客户端和服务器端两大部分。客户端则包含用户注
册模块和用 户登录模块、对弈窗体模块,而服务器端包含游戏大厅模块和服务器窗体
模块。

网络五子棋游戏软件系统的功能结构如图
1-1
所示:


网络五子棋游
戏软件系统


客户端



服务器端



用户注册模块



用户登录模块



对弈窗体模块



游戏大厅模块



服务器窗体模





1-1

网络五子棋游戏的系统功能结构


3

1.2.3
系统运行流程图

当五子棋软件的服务 器端运行时
(
开始服务
)
,客户端的用户首先进入用户注册模
块,判 断用户是否注册过,如果已注册,则直接登录用户;否则用户要先在注册模块
填写个人的注册信息,包括
IP
地址、端口号、用户名、密码、头像和性别等信息。将
这些注册消息发送给服务器 端,服务器端处理接收到的消息命令,并返回注册是否成
功消息。如果注册成功则进入用户登录模块;否 则重新注册用户信息。

用户进入登录模块时,输入用户名和密码,将登录信息发送给服务器端 ,判断是
否存该用户,如果存在,则返回登录成功消息,证明该用户存在并且用户成功登录游
戏 大厅模块;否则就返回登录模块窗体,重新登录用户。

用户登录游戏大厅模块后,选择想要进 入的区号、房间、桌子以及座位后,发送
消息给服务器端,由服务器端判断是否可以进入对弈窗体模块。

用户进入对弈窗体模块后,窗体显示进入座位的用户信息,等待另一个用户的进
入, 就可以双方在棋盘上对弈,最后将得分跟新到数据库中。

五子棋游戏软件的客户端和服务器端的系统运行流程图如图
1-2
所示:



1-2

网络五子棋游戏的系统运行流程图


4

1.3
网络五子棋系统开发环境

1.
软件开发语言

C#
语言是由
C

C++
衍生出来的,拥有强大的操作能力、优雅的语法风格、创新
的语言特性和便捷的面向组件编程的能力,使 之成为
.NET
编程开发的首选语言,为编
程提供了一系列的工具和服务,以便程序员 可以最大程度地研究开发计算与通讯等计
算机领域。本次系统设计就使用
C#
语言作为 系统的开发编程语言,凭借该语言的各个
语法特点,软件设计的编程开发将会更加地简洁,条理层次也将 更加地清晰。

2.
软件开发平台

Microsoft Visual Studio 2010
是目前最流行的
Windows
平台应用程序 开发环境。

本重新设计和组织了集成开发环境

IDE
)的界面。 支持开发面向
Windows 7
的应用程
序设计,更是支持包含
Microsoft SQL Server


IBM DB2

Oracle
数据库在 内的数据
库编程的开发。本次系统设计使用
Visual Studio 2010
作为软件的开发平台。新版本的
功能强大,
包括有
C# 4.0
中的动态类型和动态编程;
多显示器支持;
使用
Visual Studio
2010
的特性支持
TDD
;支持
Office

Quick Search
特性;
C++ 0x
新特性;
IDE
增强;
使用
Visual C++ 2010< br>创建
Ribbon
界面;新增基于
.NET
平台的语言

F#


3.
数据库开发平台

Microsoft SQL Server 2008
是目前版本较为新颖的数据库开发平台 ,使用该平台可
以存储、组织、管理数据库中表的任何数据,也可对这些数据库中的表进行查询、搜索、同步、报告和分析之类的操作,具有可靠性、高效性、智能性的特点。用户可以
在该数据库开发 平台中创建一个任意数据库,并在库中创建一个或多个二维数据表格
(
关系表格
),用来储存需要储存的数据信息。同时还可以对这些表格进行分类、合并、
连接或选取等运算操作, 以便实现对表格中数据的管理。


5



2


网络五子棋游戏数据库设计与开发

设计 开发网络游戏软件时,需要设计相应的数据表来存放游戏中的基本信息。系
统使用
SQL
Server
2008
作为数据库的开发平台,创建五子棋游戏软件的数据库

db_LANGobang_Data

,在数据库中创建表“
_Gob ang

,用来存放游戏中注册
的所有用户的信息,包括用户名、密码、分数、等级以 及状态等等。在需要的情况下,
可以对这些信息进行查询、修改、读取等操作。

2.1
数据库的概念设计

根据系统的设计目标得知在该系统中,服务器端 需要向数据库表中存储的用户信
息。用户注册时,需要注册用户的
IP
地址、端口号、 用户名、密码、头像和性别等信
息,当把注册信息存储到数据表中时,表自动分配一个用户的编号
ID


用户在进入游戏大厅时,会存储用户的状态、分数。选择座位后存储区号、 房间
号、桌号、座位号和用户座位名称等信息。由此可得数据表“
_Gobang
”的 各个
属性值,实体
E-R
图如图
2-1
所示:

编 号
ID
端口号
用户名
IP
地址
座位名称
座位号密码
数据表
_Gobang
桌号
头像
房间号
性别
分数
状态
区号


2-1

数据表
_Gobang
的实体
E-R


2.2
数据库的创建

(1)
运行
SQL Server 2008的数据库开发软件,选择服务器类型、服务器名称、身
份验证类型,输入软件在安装时设置的登录名 和密码,即可打开数据库开发平台。

(2)
选择节点“数据库”
,右击“ 新建”
,弹出的新建新的数据库的窗体,输入数据
库名“
db_LANGobang_ Data
”后,单击“确定”按钮。

(3)

E-R
图 得到数据表“
_Gobang
”的逻辑结构设计,如表
2-1
所示。在
新的数据库
db_LANGobang_Data
的节点下,选项“表”右击新建,

弹出表格的设计

6

窗体,在窗体中填写包括字段、数据类型、允许为空值和字段描述等信息。


2-1

数据表
_Gobang
的逻辑结构设计

列名

ID(
主键
)
IP
Port
UserName
PassWord
Fraction
State
Borough
RoomMark
DeskMark
SeatMark
UserCaption
Caput
Sex
数据类型

int
varchar(20)
varchar(20)
varchar(20)
varchar(20)
int
int
int
varchar(20)
varchar(20)
varchar(20
varchar(20)
int
int
允许空

不允许

允许

允许

允许

允许

允许

允许

允许

允许

允许

允许

允许

允许

允许

字段描述

编号

IP
地址

端口号

用户名

密码

分数

用户当前状态

区号

房间号

桌号

座位号

用户座位名称

头像

性别

(4)
设 置完相应的字段和数据类型和描述,
字段
ID
设为主键和自动编号。
单击


存”按钮,在弹出窗口中输入表名“
_Gobang
”< br>,单击确定后数据库表创建成功。

2.3
数据库的编程


是为了
.NET
框架而建的,是对
ADO(ActiveX
Data
Objects)
对象模型的
扩充。

的两大核心 控件是
.NET Framework
数据提供程序和
DataSet


1. NET Framework
数据提供程序

.NET Framework
数据提供程序用于连接数据库、执行命令和检索结果,共
4
种,
分别是
SQL Framework
数据提供程序、
OLE Framework
数据提供
程序、

Framework
数据提供程序和

Framework
数据提供 程
序。
.NET
数据提供程序模型的核心对象有四种,如表
2-2
所 示:


2-2

.NET
数据提供程序的核心对象

对象

Connection
Command
DataReader
DataAdapter

功能

与特定数据源建立连接

对数据源执行命令

从数据源中读取只向前的且只读的数据流,是一个简易数据集

用数据源填充
DataSet
并解析更新

7

2. DataSet
数据集对象

DataSet
数据集对象作为 支持

的断开式、分布式的数据方案的一个核心
对象。
DataSet
对象是数据的内存驻留表示形式,
DataSet
对象用于多种不同的数据源,
XML
数据源、管理应用程序的本地数据源等。根据不同的数据源,
DataSet
对象都
会保持关系编程模型和数据源之间的一致性。
DataSet
由相关表、约束和表间关系组成。

DataSet
对象中添加行要经过三个步:
第 一步是为数据集中的某个数据表添加一个
新行;第二步是给新行的各列赋值;第三步是把新行添加到数据 表的行集合中。

3.
数据库连接

本次毕业设计系统中,系统要连接数据源是
SQL Server
数据源,所以在程序 使用
了以

sql

开头的
SqlConnection< br>对象和
SqlCommand
对象来处理软件和数据源的连接
和操作。
其中,
SqlConnection
对象用来连接数据库,
SqlCommand对象执行
SQL
操作。

系统设计中将服务器对数据库的所有操作分装在
ClassOptionData
类中,通过调用
类中的各个方法来对数据库进行查询 、添加、修改等操作。具体编程设计步骤如下:

(1)
建立包含数据库连接的字符串;

(2)
生成连接数据库的
SqlConnection
对象;

(3)
建立包含
SELECT
语句的字符串,从表中获取记录的列;

(4)
生成
SqlCommand
对象
,
保存这个
SELECT
语句;

(5)

SqlConnection< br>对象的
Open()
方法打开数据库连接;

(6)
执行
SQL
语句;

(7)
释放
SqlCommand
对象资源;

(8)
关闭连接数据库;

(9)
释放
SqlConnection
对象资源。


8



3


网络五子棋游戏的通信设计

3.1
网络编程模型


系统设计要求设计的网络五子棋游戏软件 是基于
Socket
套接字和
UDP
协议实现
的。设计使用无连接的
UDP
网络编程依据服务器端
Server
和客户端
Client< br>的
IP
地址
和端口来进行进行连接通信。

3.1.1 IP
地址

IP
地址
(Internet Protocol Ad dress)
,也就是互联网协议地址,是由
IP
协议提供的一
种统一的地址 格式,为每个连接在互联网上的主机或路由器分配一个在全世界范围内
唯一的逻辑地址标识符。一个IP
地址主要有两部分组成:一部分是用于标识该地址所
从属的网络号,另一部分是用于指 明该网络上某个特定主机的主机号。

3.1.2
端口

端口(Port)

TCP/IP
协议中用来与
IP
地址相匹配的端 口,
范围从
0

65535

IP

址 与网络服务的关系是一对多的关系,如果主机仅是靠
IP
地址的话,是不能实现不同
的 网络服务的。所以这才有了端口的存在。在
Internet
中,
TCP/IP
使用“
IP
地址
+
端口
号”来唯一标识设备和服务,以此来实现不 同的网络服务。

3.1.3 UDP
协议

UDP
协议
(User
Datagram
Protocol,用户数据报协议
)
,是
OSI
参考模型中一种提
供面向事务的 简单不可靠信息传送服务的无连接的传输层协议。
UDP
协议用来支持那

C /S
模式的网络应用在计算机之间传输数据。数据发送一方(客户端或服务器端)
使用
UDP
协议将网络数据的流量压缩成
UDP
数据报,再通过源端口发送出去,而数据接收一方则通过目标端口接收数据。一个
UDP
数据报就是一个数据传输单位,以二进制的形式的字节来表示,数据报的字节分别包含了报头信息和具体的传输数据。

3.1.4 Socket
套接字

套接字
Socket
是 当前最流行的网络编程的接口之一,它有流套接字和数据报套接
字这两种类型
,
主要是 用来和在同一域中的套接字进行通信中并交换数据的。系统设计
使用了无连接的套接字。无连接的套接字 是不需要在网络设备之间发送连接信息的。
因此不能确定谁是服务器,谁是客户机。如果一个设备最初是 处在等待远程设备的信
息,则必须用
Bind()
方法将套接字就绑定到一个本地的地 址和端口。完成绑定后,设
备之间就可以利用套接字进行通信接收数据。


9

3.2
通信模块设计

本次系统中使用了
UDPSocket
控件,
它将
UDP
协议封装在该控件中,
用于对 主机
的端口号进行监听,以获取远程计算机发送来的消息。在编程设计中使用
UDPSocke t
控件的
Send()
方法将发送数据消息,然后在接收数据的一方创建控件的异步托 管事件
DataArrival
来处理判断的各种消息命令。

系统中将需要 使用的消息对象、消息命令和发送类型,都封装在
ClassMsg
类中,
用来序列化 这些消息命令。该类中的消息命令、发送类型分别如表
3-1

3-2
所示:


3-1 ClassMsg
类中的消息命令

消息命令

无命令

注册

注册结束

注册存在

登录

登录结束

发送消息

发送消息

用户列表

更新状态

进入大厅

退出大厅

开始游戏

关闭游戏

退出区域

获取消息

返回消息

语聊

更改分数

对弈连接

连接完毕

退出连接

单聊

获取分数

退出


枚举值

None
Registering
Registered
RegisterAt
Logining
Logined
SendToOne
SendToAll
UserList
UpdateState
ComeToHall
ExitToHall
BeginToGame
EndToGame
ExitToArea
BegingRival
EndRival
ComeToSay
UPDataFract
BeginJoin
EndJoin
ExitJoin
OddLittle
GetGameF
Close
10
功能说明

没有消息命令

用户注册个人信息

用户注册信息结束

注册的用户信息已存在

用户登录

用户登录结束

发送消息给单个用户

发送消息给所有用户

获取用户的列表信息

更新用户状态

进入游戏大厅窗体,更新用户状态

退出游戏大厅窗体,更新用户状态

开始对弈游戏,更新用户状态

结束对弈游戏,更新用户状态

退出大厅区域,发送消息给所有用户

获取用户信息,发送给对方

获取对方消息,返回给用户

添加语聊信息

在数据库中更改分数

连接对弈的双方

对弈双方连接完毕

退出对决游戏

对弈的双方单聊

获取对方玩家的分数

退出窗体



3-2 ClassMsg
类中的发送类型

发送类型

无类型

发送命令

发送消息

枚举值

SendNone
SendCommand

SendMsg

功能说明

无类型

发送的是命令

发送的是消息

1.

服务器端消息

服务器端在收到发送来的信息后,
先 判断该消息发送类型的是命令
SendCommand

还是消息
SendM sg
。如果是发送消息类型,则执行发送消息下的发送消息给单个用户
的命令。如果是发送命令 ,则依据消息命令的不同执行不同的操作,如图
3-1
所示,具
体如下
(1) ~(12)
的操作。

(1)
服务器端接收到“注册”的消息命令时,即命 令类型值为
Registering
,程序在
调用
RegisterUser ()
方法用来注册用户的信息之前,
要先调用
IfRegisterAt()
方法判断是否
已经存在该用户,如果不存在则调用
InsertUser()
方法来插 入新用户。

(2)
服务器端接收到“登录”的消息命令时,即命令类型值为
Logining
,程序调用
UserLogin ()
方法用来登录用户之前,先 调用
UpdateLoginUser()
查找数据库中是否有该
用户,当有该用户的 时候才可以登录成功。

(3)
服务器端接收到“发送消息”的消息命令时,即命令 类型值为
SendToOne
,程
序调用
SendUserMsgr()方法发送信息给单个用户。

(4)
服务器端接收到“进入大厅”的消息命令时 ,即命令类型值为
ComeToHall

程序调用
UpdateUser ()
方法更新用户在线状态,
恢复消息的
MsgCommand
命令后,调用
UpdateUserList()
方法将信息返回所有进入大厅的用户。

(5)
服务器端接收到“退出大厅”的消息命令时,即命令类型值为
ExitToH all
,程
序调用
UpdateUser ()
方法用来更新所有在线用户的状态。

(6)
服务器端接收到“开始游 戏”的消息命令时,即命令类型值为
BeginToGame

程序调用
Up dateUser ()
方法用来更新所有在线用户的状态,并将结果更新到窗体列表。

(7)
服务器端接收到“退出游戏”的消息命令时,即命令类型值为
EndToGa me
,程
序调用
UpdateUser ()
方法用来更新所有在线用户的状态。

(8)
服务器端接收到“退出区 域”的消息命令时,即命令类型值为
ExitToArea
,程
序调用
Mes sColley ()
方法用来将消息发送给所有的在线用户。

(9)
服 务器端接收到
“获取对手信息”
的消息命令时,
即命令类型值为
Beging Rival

程序调用
UserGame ()
方法用来获取对方用户的信息。

(10)
服务器端接收到“语聊”的 消息命令时,即命令类型值为
ComeToSay
,程序
调用
UserTex t ()
方法发送聊天信息给对方,然后调用
MessColley()
方法将消息发 送给所
有的在线用户。


11

(11)
服 务器端接收到“在数据库中修改得分”的消息命令时,即命令类型值为
UPDataFract
,程序调用
UpdatePlayChess ()
方法用来更新用户的得分情况,最后调用< br>UpdateUser()
方法将数据更新到窗体列表。

(12)
服务器端接收到
“获取对方得分”
的消息命令时,
即命令类型值为
GetGa meF

程序调用
UserGame ()
方法用来获取对方用户的得分信息情况。

服务器端
注册
Reg istering
注册用户信息
发送类型?
消息
登录
Loginin g
用户登录
进入游戏大厅,
更新用户在线状态
退出游戏大厅,
更新用 户在线状态
开始游戏,
更新用户在线状态
退出游戏,
更新用户在线状态
退出大厅区域,
更新用户在线状态
进入游戏大厅
















ComeToHall
退出游戏大厅
ExitToHall开始游戏
BeginToGame
客户端
命令类型?
关闭游戏
E ndToGame
退出区域
ExitToArea
语聊
ComeToSay< br>添加语聊信息
获取分数
GetGameF
获取对方玩家的分数
获取消息
BegingRival
命令类型?
获取用户信息,发送给对方
更改分数UPDataFract
在数据库中更改分数
发送消息
SendToOne
发送消息给单个用户

3-1
服务器端处理消息命令的流程图

2.

客户端消息

客户端各模块中创建
UDPSocke t
控件的异步托管事件
DataArrival

处理由服务器端
返 回的消息,根据消息命令执行不同的操作,如图
3-2
所示。具体如下
(1)~(7)
的操作。

(1)
客户端接收到“注册成功”的消息命令时,即命令类型值 为
Registered
,程序

12


Wi ndows
下生成
INI
文件,记录用户的
IP
地址、端口号、用户 名和头像,并关闭窗体。

(2)
客户端接收到“注册用户已存在”的消息命令时, 即命令类型值为
RegisterAt

程序清空窗体中注册的用户信息,要求用户重 新注册。

(3)
客户端接收到“登录成功”的消息命令时,即命令类型值为
Logined
,程序获
取用户的
IP
、端口、性别、分数等信息,关闭登 录窗体。

(4)
客户端接收到“对弈连接”的消息命令时,即命令类型值为
BeginJoin
,窗体
显示当前用户的头像、性别、分数等信息在窗体中。

(5)
客户端接收到“获取对方分数”的消息命令时,即命令类型值为
GetGam eF

程序获取用户的
IP
、端口、性别、分数等信息,关闭登录窗体。
(6)
客户端接收到“单聊”的消息命令时,即命令类型值为
OddLitt le
,程序中两个
用户可以在对弈窗体中的聊天室进行聊天。

(7) 客户端接收到“退出连接”的消息命令时,即命令类型值为
ExitJoin
,程序先判断是哪一个用户退出连接的,然后窗体将移除该用户的用户名、头像和棋盒等信息,
在用户列表中 也将移除该用户的信息。

客户端
接收返回的消息
注册
消息
Registered
注册信息结束,注册信
息成功,生成
INI
文件
注册的用户已存在,注册
失败,重新注册
登录成功,记录用户
的信息,并关闭窗体< br>RegisterAt
命令类型?
登录
Logined
BeginJo in
对弈连接,窗体显
示用户的信息
对弈窗体
GetGameF
获取 对方玩家的分数
OddLittle
退出游戏,
更新用户在线状态
断开连接, 窗体移
除用户的信息
EndJoin


3-2
客户端处理消息命令的流程图


13



4


网络五子棋游戏的功能模块设计

4.1 GobangClass
类库

在开发网络五子棋游戏软件时,可以将多个封装发送接 收消息功能的类储存在一
个类库
GobangClass
中,以便服务器端和客户端编 程时很好地调用这些功能类。类库
GobangClass
中的各个功能类及其功能描述如表< br>4-1
所示:


4-1 GobangClass
类中的功能类

类名

UDPSocket
控件

功能描述

程序窗口设计中添加 了一个
UDPSocket
控件,将
UDP
协议封装在这个
控件中, 用于对主机的端口号进行监听,以获取远程计算机发送来的消息。

Publec_Class


在设计中创建
Publec_Cla ss
类,
用来记录服务器端和客户端的基本信息,














MyHostIP()

Get_windows()



MyHostIP()
是用来获取服务器端所有的
IP
地址,方法
Get_windows()
是用来
获取
windows
路径
(目录
)


ClassForm


在设计中 创建
ClassForm
类主要实现的功能是用来通过指定的索引号,

In nerList
表中查找你到相应的窗体,并进行添加和移除等操作。

ClassMsg


在程序设计中创建
ClassMsg
类,主要是打算使用
[Serializable]
对该类中
用枚举型的元素值来指定 参数、消息命令、消息类型等所有的对象进行序列
化操作。序列化的引擎会跟踪所有已经序列化过的引用 对象,确保这些对象
不会被多次序列化。

ClassOptionData


在设计中创建
ClassOp tionData
类,把服务器对数据库的所有操作都进
行了封装,通过对该类中各个方法的调 用来对数据库中的数据进行查询、添
加、修改等操作。

ClassSerializers



GobangClass
类库设计中创建
ClassSerializers
类,
因为
Soc ket
只能以
二进制流的形式进行传输,所以当客户端发送或接收到的消息时,必须将对
象序列化或反序列化成二进制流。

ClassUserInfo

在设计中创建
ClassSUserInfo
类,用于记录当前的用户
ID
、用户
IP

址、用户名、分数、状态、区号、房间号、桌号、座位号、用户座位号 名称、
头像和性别等,并对该类进行序列化。

ClassUser


在设计中创建
ClassUser
类主要是用来将服务器端所有注册的用户信息
存储到
base
类的
Inner List
列表中,使得当前用户在登录或退出时,可以将
列表中的信息群发给所有的在线用户, 以改变用户显示状态。


14

4.2
用户注册模块设计

用户注册模块是在客户端的用户第一次进行网络五子棋游戏的程序 时,对当前用
户进行注册,并将注册信息发送给服务器端记录到数据库中。

4.2.1
功能设计

(1)
如果用户是第一次进行游戏,运行 客户端程序窗体,弹出界面窗体,
单击窗体
中的“注册新用户”文字,系统将弹出注册窗体界面 。

(2)
在弹出的窗体中输入
IP
地址、端口号、用户名、密码 、头像和性别等信息。
其中,头像和性别可以通过下拉列表的格式选择。

(3) < br>输入完注册信息,单击“确定”按钮,实现新用户的信息注册,注册成功后将
会关闭注册窗体,弹 出登录窗口,用户即可登录。

4.2.2
程序界面

如果用户是 第一次进行游戏,运行客户端程序窗体,单击程序运行窗体中的“注
册新用户”
的字样,
系统将弹出用户注册信息的窗体界面。
用户注册模块窗体
F_SerSetup
的界 面如图
4-1
所示,在界面中输入需要注册的用户信息,如
IP
地址、端口号 、用户
名、密码、头像和性别后,单击“注册”按钮注册用户信息。



4-1

用户注册窗体
F_SerSetup
界面


4.2.3
实现过程

用户运行客户端的注册界面
F_SerSetup
,以便 实现新用户注册信息的功能,大体
流程图如图
4-2
所示:


15

客户端
服务器端
发注册消息
用户注册模块
调用
RegisterUser()
方法
注册用户
输入
IP
地址、端口号、
用户名、密码、头像、
性别等信息
返回注册失败信息
调用IfRegisterAt()
方法
判断用户是否已注册过

已注册?< br>N
注册成功?
返回注册成功信息
N
调用
InsertUser ()
方法来插入
新用户

用户登录模块


4-2

用户注册模块流程图

(1)
新建
Windows窗体
F_SerSetup

Form
界面的
Text
属性设置为“用户注册”

窗体设计的主要控件如表
4-1
所示,依次添加这 些控件,设置相关的属性值。


4-1

用户注册模块
F_SerSetup
的主要控件

控件类型

TextBox
控件
ID
text_IP
text_IP5
text_Name
text_PassWord
text_PassWord2
ComboBox
comboBox_CPhoto
主要属性设置

BorderStyle



FixedSingle
BorderStyle



FixedSingle
BorderStyle



FixedSingle
PasswordChar

*
PasswordChar


*
DropDownStyle

DropDownList
DrawMode




OwnerDrawVariable
comboBox_ Sex
DropDownStyle

OwnerDown
DrawMode




Normal
Button
button_OK
button_Close
UDPSocket1
udpSocket1
Text


注册

Text


取消

LocalHost

127.0.0.1
LocalPort

11001
ImageList1

用途

注册用户
IP
地址

注册用户端口号

注册用户用户名

注册用户密码

再次输入密码

注册用户头像

注册用户性别

用户注册

取消注册

初始化服务器的
IP
地址

设置服务器端口号

imageList1
16
存储的各种头像图片


(2)
程序中使用了
ComboBox
控件和
GDI+
技 术来绘制一个头像的下拉列表。定义
控件的
ID

comboBox_CPh oto

设置
DropDownStyle

DrawMode的属性,
需创建该
控件的
DrawItem
事件,
在控件的可视 方位更改时触动事件,

ImageList1
组件中所存
储的头像图片绘制 到下拉控件中。

(3)
定义“注册”按钮的
ID

bu tton_OK
,创建它的
Click
事件,输入注册信息后
单击该按钮,判 断注册的密码是否一致,如果不一致就消息窗体;一致的话就将用户
注册的信息通过自定义控件
udpSocket1

send()
方法,将注册信息以二进制流的形式
发 送给服务器端,由服务器端判断是否注册成功。

(4)


册< br>信








后< br>,





udpsocket







DataArrival
事件异步 托管,监听获取服务器端返回来的消息。当返回的是注册成功的
消息时,关闭注册窗体;当返回的是用户 已注册的消息命令,则弹出消息对话框。

4.3
用户登录模块设计
用户登录模块主要是将用户输入用户名和密码用来实现登录游戏大厅的功能的窗
体,发送消息到服务 器端,判断存在该用户时,将返回一个登录成功的消息,通过该
消息关闭登录窗口。

4.3.1
功能设计

(1)
输入用户名和密码,单击窗体中的

登录

按钮,实现用户的登录功能。

(2)
登录成功后将会关闭登录窗体,弹出游戏大厅窗体。


4.3.2
程序界面

用户注册成功自己的用户信息后,客户端程序弹出登录模块窗体,在窗体中 输入
已注册好的用户名和密码,
单击
“登录”
按钮,
登录游戏大厅模 块。
登录模块窗体
F_Logon
的界面如图
4-3
所示:



4-3

用户登录窗体
F_Logon
界面


17

4.3.3
实现过程

用户成功注册信息后,弹出登录界面窗体
F_ Logon
,实现用户登录功能。登录 模
块大体上功能实现的流程图,如图
4-4
所示:

客户端
发登录消息
调用
UpdateLoginUser
()
方法登录用户
服务器端
用户登录模块
在数据库表中查找该用
户名和密码
输入用户名和密码< br>未找到用户?
N
验证成功?
返回验证成功信息

更改该用户未 上线状态

游戏大厅模块


4-4
用户登录模块流程图

(1)
新建
Windows
窗体< br>F_Logon

Form
界面的
Text
属性设置为“用户 登录”
。根
据模块功能设计得到窗体设计的主要控件,设置相关的属性值,如表
4-2
所示:


4-2
用户登录模块
F_Logon
的主要控件

控件类型

Button
控件
ID
button_GbOK
button_GbClose
UDPSocket1
udpSocket1
主要属性设置

Text


登录

Text


退出

LocalHost

127.0.0.1
LocalPort

11001
用途

用户登录

取消注册

初始化服务器的
IP
地址

设置服务器端口号

( 2)
设置“登录”按钮的
ID

button_GbOK
,单击该按 钮触发一个
Click
事件。界面
加载到
IP
和端口时,
用 户输入用户名和密码后,
将输入的信息通过控件
udpSocket1

se nd()
方法以二进制流的形式发送给服务器端,
由服务器端根据登录的用户名和密码在
数据库进行查找,判断是否存在该用户。

(3)



















udpsocket







DataArrival
事件异步托管 ,监听获取服务器端返回来的消息。当返回的是登录成功的
消息时,存储服务器返回的
IP地址、
ID
值、用户得分和性别,关闭登录窗体。


18

在开学典礼上的讲话-税收自查报告


在开学典礼上的讲话-税收自查报告


在开学典礼上的讲话-税收自查报告


在开学典礼上的讲话-税收自查报告


在开学典礼上的讲话-税收自查报告


在开学典礼上的讲话-税收自查报告


在开学典礼上的讲话-税收自查报告


在开学典礼上的讲话-税收自查报告