| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2525 人关注过本帖
标题:[求助]VB五子棋的编程
取消只看楼主 加入收藏
tan1003
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-1-13
收藏
 问题点数:0 回复次数:8 
[求助]VB五子棋的编程

老师要求 3天后几交 现在实在不知道怎么做 实在没办法 在这请教大家了 万分感谢

题目是这样的:
一、题目内容:
编制一个五子棋的游戏
二、题目说明:
连珠(五子棋)是有两个人在一盘棋上进行对抗的竞技运动。在对局开始时,先由执黑棋一方将一枚棋子落在天元点上,然后由执白棋的一方在黑棋周围的交叉点上落子,如此轮流落子,直到某一方首先在棋盘的直线、横线或斜线上形成连续的五子则该方就算获胜。
界面参见下图(可按自己的风格设计)。
三、题目要求:(2人)
1、 界面友好、美观。
2、 提示必要的信息。如成功、失败后显示的信息。
3、 设计人人对战和人机对战两种方式
4、 显示走棋步数和已用时间
3、 允许悔棋(只限一步)。

题目要求只设计人人对战的就行了。 界面设计;系统完成功能及框图(运行的显示等),核心算法及说明要求写出。

大致写一下就行了 不要求大精细

我的邮箱tan.1003@163.com

搜索更多相关主题的帖子: 五子棋 黑棋 落子 
2007-01-14 20:51
tan1003
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-1-13
收藏
得分:0 
版主帮帮忙
2007-01-14 20:52
tan1003
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-1-13
收藏
得分:0 
做不出来 就没证了 跪求大家了
2007-01-14 20:58
tan1003
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-1-13
收藏
得分:0 

海蓝先谢了

2007-01-14 21:05
tan1003
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-1-13
收藏
得分:0 

海蓝
能麻烦你发下吗

2007-01-14 21:14
tan1003
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-1-13
收藏
得分:0 
恩 还有界面设计;系统完成功能及框图,简单说明下核心算法,上面都要说明下思路的
2007-01-14 21:22
tan1003
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-1-13
收藏
得分:0 
你的代码我怎么没找到晕
2007-01-14 21:42
tan1003
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-1-13
收藏
得分:0 

海蓝 你帮我看下这个 比较简单的 代码怎样 我感觉和你的方法是一样的:
Option Explicit
Dim blackturn As Boolean '轮到黑方下子
Dim whiteturn As Boolean '轮到白方下子
Dim table(0 To 15, 0 To 15) As Integer '用此二维数组表示棋盘
Dim inti As Integer '数组元素……
Dim intj As Integer
Dim boolstatus As Boolean '表示棋局状态:进行/结束
Private Sub Form_Load()
'画棋盘
Form_Paint
blackturn = True '黑方先下
boolstatus = True '开始
Label1.Caption = "黑方先下"
End Sub
Private Sub command2_Click() '关闭窗口
Unload Me
Set wzq = Nothing
End Sub
Private Sub command1_Click() '重新开始
'窗口清除
Me.Cls
'数组清零
For inti = 0 To 15
For intj = 0 To 15
table(inti, intj) = 0
Next
Next
'重画棋盘
Form_Load
End Sub
'下子
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim intx As Integer '落子横向位置
Dim inty As Integer '落子竖向位置
'确定棋局是否在进行中,否,跳出
If boolstatus = False Then
Label1.Caption = "结束"
Exit Sub
End If
'确定落子的确切位置
'如果鼠标点击位置不在棋盘中,则跳出
If x < 10 Or x > 310 Or y < 10 Or y > 310 Then
Exit Sub
End If
'如果鼠标点击位置在棋盘中,则转化为相应棋盘落子点的坐标
If (x - 10) Mod 20 < 10 Then
intx = x - (x - 10) Mod 20
Else
intx = x + 20 - (x - 10) Mod 20
End If
If (y - 10) Mod 20 < 10 Then
inty = y - (y - 10) Mod 20
Else
inty = y + 20 - (y - 10) Mod 20
End If
'把坐标转换成数组中的相应元素
inti = (intx - 10) / 20
intj = (inty - 10) / 20
'如果该数组元素不为零,即表示棋盘中相应点已有棋子,则跳出
If table(inti, intj) <> 0 Then
Exit Sub
End If
'画子(圆)
If blackturn = True Then
'黑色
Me.FillColor = RGB(0, 0, 0)
table(inti, intj) = 1 '黑子赋1
Label1.Caption = "白方"
Else
'白色
Me.FillColor = RGB(255, 255, 255)
table(inti, intj) = 2 '白子赋2
Label1.Caption = "黑方"
End If
Me.FillStyle = 0 '不可缺
Me.Circle (intx, inty), 8
'判断是否有五子连线
Call judgeman
'轮流
blackturn = Not blackturn '取反
End Sub
Private Sub judgeman() '判断是否有五子连线
Dim strwho As String '下子方名称
If table(inti, intj) = 1 Then '表示黑方下的子
strwho = "黑方"
Else
strwho = "白方"
End If
'分别判断横竖,对角线是否有五子,此段代码比较复杂,可能那以理解,但其执行效率极高
'非常适合与棋盘格子很多的情况
If samelinenums(1, 0) >= 5 Or samelinenums(0, 1) >= 5 Or samelinenums(1, 1) >= 5 Or samelinenums(-1, 1) >= 5 Then
MsgBox strwho & "胜!"
boolstatus = False '棋局结束
End If
End Sub
Function samelinenums(changei As Integer, changej As Integer) '判断同一直线上的棋子数
Dim i As Integer
Dim j As Integer
Dim num As Integer '同一线上相同颜色棋子数
'计算落子一边同颜色的棋子数
i = inti: j = intj
Do
If table(i, j) <> table(inti, intj) Then
num = max(Abs(inti - i), Abs(intj - j))
Exit Do
End If
i = i + changei: j = j + changej
Loop Until i < 0 Or i > 15 Or j < 0 Or j > 15
'计算落子另一边同颜色的棋子数
i = inti: j = intj
Do
If table(i, j) <> table(inti, intj) Then
num = num - 1 + max(Abs(inti - i), Abs(intj - j))
Exit Do
End If
i = i - changei: j = j - changej
Loop Until i < 0 Or i > 15 Or j < 0 Or j > 15
'MsgBox num
samelinenums = num
End Function
'求较大值
Function max(inta As Integer, intb As Integer)
max = inta
If max < intb Then max = intb
End Function
Private Sub Form_Paint() '以(10,10)为左上角坐标画一个16*16,每格边长为20象素的棋盘
Cls '清除
Dim i As Integer
ScaleMode = 3 '设定窗体画布的单位为象素
For i = 10 To 330 Step 20
Me.Line (10, i)-(330, i)
Me.Line (i, 10)-(i, 330)
Next
End Sub

2007-01-15 13:33
tan1003
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-1-13
收藏
得分:0 
就是我哪个题目要求 黑方先在天元点上下 第一个 然后白方再下 怎么改呢
2007-01-15 13:39
快速回复:[求助]VB五子棋的编程
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031767 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved