编写五子棋游戏中,向棋盘走子这一步被卡住了,高手帮忙

cn_archer 2006-02-12 01:36:46
Private Sub picBoard_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
'落子操作
sx = Fix(X / 21) + 1: sy = Fix(Y / 20) + 1 '求落子位置
If Board(sx, sy) <> 0 Then Exit Sub
Call sndPlaySound("PutStone.wav", 0) '播放声音
Board(sx, sy) = Server '储存棋子数据
DrawBoard '重画棋盘
result = GameResult(Server) '判断游戏是否结束
If result = Server Then '取得胜利
MsgBox "恭喜!您取得了本局胜利!", vbOKOnly, "对局结束"
Win(Server) = Win(Server + 1)
If Server = 1 Then Lost(2) = Lost(2) + 1 Else Lost(1) = Lost(1) + 1
frmMain.lblBlackScore.Caption = Str(Win(1)) + "胜" + Str(Lost(1)) + "败"
frmMain.lblWhiteSocre.Caption = Str(Win(2)) + "胜" + Str(Lost(2)) + "败"
Me.cmdAgain.Enabled = True
End If
Send "1" + Chr(sx) + Chr(sy) '通过网络向对方发送落子信息
picBoard.Enabled = False '在对方走棋时间内,已方不能再落子
End Sub

上面是向棋盘落子的函数,但是一直提示 Subscript Out of range... 不知道是什么原因

我把我的源代码传到 http://www.9101.cn/f0511s1/go.rar
请高手们帮我看看,万分感谢!
...全文
361 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cn_archer 2006-03-23
  • 打赏
  • 举报
回复
原因还是没找出来,不过时间这么久了,还是先结一下帖吧。
xyjdn 2006-02-16
  • 打赏
  • 举报
回复
网上有现成的代码
jadeluo 2006-02-12
  • 打赏
  • 举报
回复
X和Y的计量单位是什么?Pixel还是Twip?

如果是Twip的话,下面的语句中X只除以21,而Y只除以了20是肯定会有问题的。
sx = Fix(X / 21) + 1: sy = Fix(Y / 20) + 1
province_ 2006-02-12
  • 打赏
  • 举报
回复
sx=X\21+1
sy=Y\21+1
cn_archer 2006-02-12
  • 打赏
  • 举报
回复
我知道是越界,但是一直没找出问题在哪
cn_archer 2006-02-12
  • 打赏
  • 举报
回复
我的QQ是56049418
MSN cn_archer@hotmail.com

昨天弄到凌晨五点还没搞定。。现在头都蒙了。。
加我吧,有些问题我即时向你反馈一下,这里一时也说不清楚

万分感谢了
西雀 2006-02-12
  • 打赏
  • 举报
回复
下标越界
检查一下sx,sy是否超出Board这个数组的上下界
jadeluo 2006-02-12
  • 打赏
  • 举报
回复
看来你没看明白我说的是什么意思。

你改成:

sx = Fix(X / (21 * Screen.TwipsPerPixelX)) + 1: sy = Fix(Y / (20 * Screen.TwipsPerPixelY)) + 1
cn_archer 2006-02-12
  • 打赏
  • 举报
回复
似乎是 Board(sx,sy)这里出错,但我实在找不出原因在哪了。
cn_archer 2006-02-12
  • 打赏
  • 举报
回复
问题是,我把X和Y都除以21或20也不行。。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧