2007-06-05
我要做一个和电脑做石头剪子布的游戏的小程
已经编写完毕。由于我的全部代码较为复杂且文件总和十分庞大,又考虑到版权问题,故不上传源代码(换作是你也许同样吧),不过,作为回答,可以提示你几点编程技巧。这个游戏的规则简单但"石头,剪刀,布"是一个首尾互接的环状元素列,对它们任两个元素之间的大小比较就比较复杂。 不过算法是有许多种的,楼上那位尽管算法可能不错,但他的游戏每玩一次就要输入中文,那就不算是真正的游戏了。游戏的理念是算法简单,操作方便,所以我选择使用按钮和键盘并用的输入方式。比较"石头,剪刀,布"的大小可以这样实现:记:石头=1,剪刀=0,布=-2对包含0的两个数,直接比较;否则通过取绝对值比较。 以下函数实现文...全部
已经编写完毕。由于我的全部代码较为复杂且文件总和十分庞大,又考虑到版权问题,故不上传源代码(换作是你也许同样吧),不过,作为回答,可以提示你几点编程技巧。这个游戏的规则简单但"石头,剪刀,布"是一个首尾互接的环状元素列,对它们任两个元素之间的大小比较就比较复杂。
不过算法是有许多种的,楼上那位尽管算法可能不错,但他的游戏每玩一次就要输入中文,那就不算是真正的游戏了。游戏的理念是算法简单,操作方便,所以我选择使用按钮和键盘并用的输入方式。比较"石头,剪刀,布"的大小可以这样实现:记:石头=1,剪刀=0,布=-2对包含0的两个数,直接比较;否则通过取绝对值比较。
以下函数实现文字和数字的转换,可以用于判断后的结果翻译:Public Function StScCl(Gesture As Integer) As StringSelect Case GestureCase 1StScCl = "石头"Case 0StScCl = "剪刀"Case -2StScCl = "布"End SelectEnd Function用法:Object。
Caption=StScCl(数字)算法代码:假设获得手势数字代码a,bIf a = b Then '平手代码ElseIf a * b = 0 Then If a > b Then 'a 获胜 Else 'b 获胜 End IfElse If Abs(a) > Abs(b) Then 'a 获胜 Else 'b 获胜 End IfEnd If这是比较快捷的算法,尽管我没有采用。
另外,分类讨论法也可以考虑使用,楼上那位的即是。对于获胜率或其他百分率,为了使显示简洁,以免被别人当作数学计算器,还要使用四舍五入法则来显示数字。函数如下:Public Function Percent(Num As Single) As StringDim a As Singlea = Num * 100If Int(a) = a Then Percent = Replace(Str(Int(a)) + "%", " ", "")ElseIf Int(a) + 0。
5 a Then Percent = Replace(Str(Int(a)) + "%", " ", "")End IfEnd Function用法:Object。Caption=Percent(小数,如 0。
92)该函数将把小数转化为百分数(%)同时,我还要说,对键盘事件的运用也很关键。你可以使用附件中的"键盘代码测试程序"来了解键盘的定义(KeyCode 和 KeyAscii)。使控件响应键盘的关键是维持控件的焦点(即Object。
hWnd句柄)。不过,不使用 Windows API 函数也是能够实现的,即:Private Sub Object_MouseMove(。。。)Object。SetFocusEnd 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",最后比较电脑和玩家的胜负。代码示例:Randomizepc = Int(Rnd * 3 + 1)Select Case pcCase 1 pc = 1Case 2 pc = 0Case 3 pc = -2End Select'下面是比较,见上文提示附:1。
最终试用版游戏"石头,剪刀,布"(要扣5分,请原谅:)) 2。KeyCode。exe应用程序。收起