作者yauhh (姚呵呵)
看板Visual_Basic
标题Re: [VB6 ] 井字游戏的胜负判定
时间Sat May 17 12:02:14 2008
讲到基本写法,由於游戏是事件触发,因此可以考虑哪种事件只做哪些事情.
Button1_Click只考虑一条横列,一条纵行,一条斜线,
Private Sub Button1_Click(ByVal ...
x = x + 1
Button1.Enabled = False
If x Mod 2 = 1 Then
Button1.Text = "o"
Else
Button1.Text = "x"
End If
If (Button1.Text = Button2.Text
AndAlso _
Button1.Text = Button3.Text) _
OrElse (Button1.Text = Button4.Text
AndAlso _
Button1.Text = Button7.Text) _
OrElse (Button1.Text = Button5.Text
AndAlso _
Button1.Text = Button9.Text _
Then
Label10.Text = String.Format("胜方 {0} !", Button1.Text)
End If
End If
同理,Button2,Button4,Button6,Button8都只考虑一横列与一纵行,
Button5要考虑一横列,一纵行,左斜线,右斜线,
Button1,Button3,Button7,Botton9则是另一组同类型的程式写法.
一般的回合制战略游戏应该也是这样写,对每个移动的兵力只考虑其攻击范围的
可能情况.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.160.109.218
※ 编辑: yauhh 来自: 218.160.109.218 (05/17 12:02)
1F:推 xtimer:哇...这个浅显易懂多了 原来...硬凹真的简单多了~"~ 05/17 14:12
2F:→ xtimer:谢谢大大~也感谢之前几位大大 又上了一课了~^^ 05/17 14:13
3F:→ MOONRAKER:andthen和orelse是什麽关键字啊? 05/17 15:55
4F:→ yauhh:AndThen是And的short-cut evaluation,OrElse是Or的延伸, 05/17 16:33
5F:→ yauhh:早期VB并没有捷径求值,而C基本就有捷径求值 05/17 16:34
6F:→ yauhh:VB.Net则加入了这二项feature,很有弹性 05/17 16:35
7F:→ MOONRAKER:@@ 难怪在VB 6.0里面没发现 05/17 16:46
8F:推 horngsh:AndAlso 05/18 08:30
9F:→ yauhh:是AndAlso,老错记为AndThen 05/18 09:59
小知识:
Short-cut Circuit Evaluation是指逻辑式中通常在前一部份已能决定
答案时,就不执行逻辑式後面部份,避免浪费计算动作.
A And B 情况,若A为False,此式答案很明显是False,因此B不必评估.
A Or B 情况,若A为True,此式答案就是True,因此B不必评估.
C/C++ 的And: && 与Or: || 都有Short-cut Circuit Evaluation效果,
但VB6及以前版本的 And 与 Or 很明显没有 SCE 效果.
而VB.Net是将这效果搬上台面,区分为基本的And Or与有捷径求值的AndAlso
与OrElse. 从字面提示很清楚它带有依情况评估的功能.
知道这个效果的人,有时会利用此效果写出比较不一样的程式.
要注意的是,摆在右边的子算式可能不执行. 如果一行判断式永远必须执行到,
不要把此判断式摆在AndAlso右边,或OrElse右边.
※ 编辑: yauhh 来自: 59.112.224.135 (05/18 10:19)
10F:→ MOONRAKER:奇怪xtimer不是在写VB6的程式吗?而这是VB.NET的op'ator 05/18 13:20
11F:推 MrOrz:楼上也被标题分类骗了XDrz。 05/18 16:05
12F:→ yauhh:这篇从一开始就是VB.Net讨论串,只是开头标错而已, 05/18 16:09
13F:→ yauhh:你绝不可能在VB6谈一个函式 handles button1.click 05/18 16:12
14F:→ xtimer:我是在写VB2005的程式..可是只要有个相关的起头 05/20 17:57
15F:→ xtimer:我看的懂 且有用的...我大约都能摸索到我自己想要的答案= = 05/20 17:58
16F:→ xtimer:其中可以能要多方面的发问&翻课本 就怕连头都不知道怎麽= 05/20 17:58
17F:→ xtimer:所以谢谢各位大大~ 05/20 17:59