116基于VB的网络五子棋系统
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
目录
一、引言 2
二、设计基本原理 3
三、整体设计及模块功能描述 3
1、功能介绍 3
2、模块介绍 3
3、流程图 4
4、界面设计 4
5、主要程序段 5
四、总结 12
五、参考资料 12
网络五子棋
一、引言
五子棋是我国古代的、传统的黑白棋种之一,大约在南北朝时期随围棋一起先后传入朝鲜、日本等地。五子棋在日本叫“连珠棋”。通过一系列的规则变化使连珠五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。
20世纪90年代,五子棋在我国民间迅速普及,爱好者群体不断扩大,水平不断提高,地区间的交流活动逐步增多,一些五子棋组织应运而生,许多地区举办了五子棋比赛活动。五子棋作为一个智力运动项目,它的最大价值就是为社会大多数民众休闲娱乐服务,在构建和谐社会中发挥应有的作用。随着网络时代的到来,网络五子棋游戏也随之兴起,它凭借健康、方便、互动性强、益智等诸多优点,成为一些现代人的休闲娱乐方式。
二、设计基本原理
本文主要对五子棋网络游戏技术进行研究,以VB为平台设计并实现了一个基于C/S模式的五子棋网络游戏。包括服务器端和客户端,游戏双方一方先运行服务器端,另一方运行客户端,连接到服务器端,双方通过网络对战,能够自动判断胜负,还支持双方聊天的功能。该游戏的界面能显示目前的对弈状态,同时能显示对弈双方之间的聊天信息;,通过它建立起服务器与客户端之间的连接,服务器端负责接受客户端的连接和处理客户端的数据,客户端负责连接到服务器并处理游戏时的交互。
[资料来源:http://think58.com]
三、整体设计及模块功能描述
1、功能介绍
该系统是一个支援网路连线的五子棋游戏,可以让你透过网路跟你的亲朋好友来场五子棋大赛,不过该游戏并没有设计单人的模式,只能利用连线来玩。
游戏规则
规则没有依照国际的规定,所以只要任一方先连成五颗就获胜。
当主机的人为先手,下黑子。
当主机
(1)选择"我要当主机",在"你的主机IP"选项内的即是你的IP
(2)将IP告诉欲加入连线者
(3)按"确定"等待对方加入
(4)当出现"连线中"字样,即连线完成。
加入连线
(1)选择"我要加入一个连线棋局"。
(2)将对方的IP输入到"连线主机IP"选项内
(3)按"确定"连到对方主机
(4)当出现"连线中"字样,即连线完成。
聊天片语编辑
该系统可以让你一边下棋,一边聊天,不过用在打字的时间可能比下棋还多,所以 这个功能可以让你简少打字的时间,直接将一些常用的话记录下来,连线时就可以直接叫出来了,使用的方法是直接修改net5.txt即可。 [资料来源:http://www.THINK58.com]
移除程式
若想移除程式的时候请使用"控制台"里的"新增/移除程式"将程式移除
2、模块介绍
Public map(1 To 15, 1 To 15) 设定棋盘
Public Win(1 To 2), Lost(1 To 2) 储存胜败次数以便分出胜负
Public Server 存放目前为主机或加入连线主机=1 加入连线=2
Sub DrawScreen() 画出棋子
Sub Send(mydata As String) 送出聊天资料
Sub GetMyData(Size) 接受聊天资料
Function GameOver(a) 判断是否连成五颗
Sub ResetGame() 开新棋局
Sub CloseCom() 将能送出资料的控制项置不能
Sub OpenCom() 将能送出资料的控制项置能
3、流程图
4、界面设计
5、主要程序段
模块代码
Declare Sub BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long)
[资料来源:http://THINK58.com]
Declare Function sndPlaySound Lib "Winmm.dll" Alias "sndPlaySoundA" (ByVal SoundName As String, ByVal Flags As Long) As Long
Global Const srccopy = &HCC0020
Global Const srcand = &H8800C6
Global Const srcor = &HEE0086 [来源:http://think58.com]
Public map(1 To 15, 1 To 15) '棋盘
Public Win(1 To 2), Lost(1 To 2) '储存胜败次数
Public Server '存放目前为主机或加入连线主机=1 加入连线=2
Sub Main()
Load Form1
Load Form2
Form1.Show
Form2.Show
End Sub
Sub DrawScreen() '画出棋子
X = 3: Y = 2
For i = 1 To 15
For j = 1 To 15
If map(i, j) = 1 Then BitBlt Form1.Pic1.hDC, X, Y, 21, 20, Form1.Pic2.hDC, 0, 0, srccopy
If map(i, j) = 2 Then BitBlt Form1.Pic1.hDC, X, Y, 21, 20, Form1.Pic2.hDC, 21, 0, srccopy
If map(i, j) = 3 Then BitBlt Form1.Pic1.hDC, X, Y, 21, 20, Form1.Pic2.hDC, 42, 0, srccopy
If map(i, j) = 4 Then BitBlt Form1.Pic1.hDC, X, Y, 21, 20, Form1.Pic2.hDC, 63, 0, srccopy
Y = Y + 20
Next j
Y = 2
X = X + 21
Next i
Form1.Pic1.Refresh
End Sub [来源:http://www.think58.com]
Sub Send(mydata As String) '送出资料
Form1.Winsock1.SendData mydata
End Sub [资料来源:http://www.THINK58.com]
Sub GetMyData(Size) '接受资料
Dim mydata As String
Form1.Winsock1.GetData mydata, vbString
Select Case Mid(mydata, 1, 1)
Case "1" '棋子的资料
If Server = 1 Then s = 2 Else s = 1
Call sndPlaySound("put.wav", 0)
sx = Asc(Mid(mydata, 2, 1))
sy = Asc(Mid(mydata, 3, 1))
map(sx, sy) = s + 2
DrawScreen
map(sx, sy) = s
a = GameOver(s)
Form1.Pic1.Enabled = True
If a = s Then
Form1.Image1(1).Visible = True
Form1.Pic1.Enabled = False
Lost(Server) = Lost(Server) + 1
Win(s) = Win(s) + 1
[来源:http://think58.com]
Form1.Label1(2).Caption = "战绩:" + Str(Win(1)) + "胜" + Str(Lost(1)) + "败"
Form1.Label1(4).Caption = "战绩:" + Str(Win(2)) + "胜" +
[资料来源:THINK58.com]