我要做一个和电脑做石头剪子布的游
已经编写完毕。
由于我的全部代码较为复杂且文件总和十分庞大,又考虑到版权问题,故不上传源代码(换作是你也许同样吧),不过,作为回答,可以提示你几点编程技巧。
这个游戏的规则简单但"石头,剪刀,布"是一个首尾互接的环状元素列,对它们任两个元素之间的大小比较就比较复杂。 不过算法是有许多种的,楼上那位尽管算法可能不错,但他的游戏每玩一次就要输入中文,那就不算是真正的游戏了。游戏的理念是算法简单,操作方便,所以我选择使用按钮和键盘并用的输入方式。
比较"石头,剪刀,布"的大小可以这样实现:
记:石头=1,剪刀=0,布=-2
对包含0的两个数,直接比较;否则通过取绝对值比较。
以下函数实现文...全部
已经编写完毕。
由于我的全部代码较为复杂且文件总和十分庞大,又考虑到版权问题,故不上传源代码(换作是你也许同样吧),不过,作为回答,可以提示你几点编程技巧。
这个游戏的规则简单但"石头,剪刀,布"是一个首尾互接的环状元素列,对它们任两个元素之间的大小比较就比较复杂。
不过算法是有许多种的,楼上那位尽管算法可能不错,但他的游戏每玩一次就要输入中文,那就不算是真正的游戏了。游戏的理念是算法简单,操作方便,所以我选择使用按钮和键盘并用的输入方式。
比较"石头,剪刀,布"的大小可以这样实现:
记:石头=1,剪刀=0,布=-2
对包含0的两个数,直接比较;否则通过取绝对值比较。
以下函数实现文字和数字的转换,可以用于判断后的结果翻译:
Public Function StScCl(Gesture As Integer) As String
Select Case Gesture
Case 1
StScCl = "石头"
Case 0
StScCl = "剪刀"
Case -2
StScCl = "布"
End Select
End Function
用法:Object。
Caption=StScCl(数字)
算法代码:
假设获得手势数字代码a,b
If a = b Then
'平手代码
ElseIf a * b = 0 Then
If a > b Then
'a 获胜
Else
'b 获胜
End If
Else
If Abs(a) > Abs(b) Then
'a 获胜
Else
'b 获胜
End If
End If
这是比较快捷的算法,尽管我没有采用。
另外,分类讨论法也可以考虑使用,楼上那位的即是。
对于获胜率或其他百分率,为了使显示简洁,以免被别人当作数学计算器,还要使用四舍五入法则来显示数字。
函数如下:
Public Function Percent(Num As Single) As String
Dim a As Single
a = Num * 100
If Int(a) = a Then
Percent = Replace(Str(Int(a)) + "%", " ", "")
ElseIf Int(a) + 0。
5 a Then
Percent = Replace(Str(Int(a)) + "%", " ", "")
End If
End Function
用法:Object。Caption=Percent(小数,如 0。
92)
该函数将把小数转化为百分数(%)
同时,我还要说,对键盘事件的运用也很关键。
你可以使用附件中的"键盘代码测试程序"来了解键盘的定义(KeyCode 和 KeyAscii)。使控件响应键盘的关键是维持控件的焦点(即Object。
hWnd句柄)。不过,不使用 Windows API 函数也是能够实现的,即:
Private Sub Object_MouseMove(。。。)
Object。SetFocus
End Sub
其中,过程名中的Object必须是过程中的Object。
注意:Object必须是有焦点的控件,如 Form,Picture,Command 等,不能是 Label,Image,Line,Shape 等。使用Object的KeyPress事件用KeyAscii(对字母键有大小写之分,并且不包含系统键);使用Object的KeyDown或KeyUp事件用KeyCode,它只是大多数键的直接定义(包括大多数系统键如 Shift,Ctrl 等)
最后,对程序界面的设计方法也是需要积累的。
我承认我做得还不够好,但我仍在努力。
再说几句,美术处理也很有用。对图形既可以使用先处理再引用的方法,也可以直接用代码处理。不过我对一些软件的图形处理速度感到惊叹,也许是充分利用了 CPU 吧!
末了,祝你进步!
啊,差点忘了!本游戏编写的重要一环是电脑出手的编写。
首先,你必须了解随机树种子的初始化命令:
Randomize
其次,你必须了解在整数区间[m,n]上随机取整的代码:
x=Int(Rnd*(n-m+1)+m),m,n为整数,由随机数范围[0,1)可以证明其正确性。
例如本例:m=1,n=3,则x=Int(Rnd*3+1),令"石头=1,剪刀=2,布=3",再转化到"石头=1,剪刀=0,布=-2",最后比较电脑和玩家的胜负。
代码示例:
Randomize
pc = Int(Rnd * 3 + 1)
Select Case pc
Case 1
pc = 1
Case 2
pc = 0
Case 3
pc = -2
End Select
'下面是比较,见上文提示
附:
1。
最终试用版游戏"石头,剪刀,布"(要扣5分,请原谅:))
2。KeyCode。exe应用程序
。收起