新建工程:
添加一个模块,移除窗体。
关键的难点在于:
1、找到所用到的所有变量。
2、把 goto 命令 改为 DO ... Loop 循环。
3、把 INPUT 改为 InputBox ,把 Print 改为 MsgBox
其它都原样照抄。
这个程序没有优化好。可读性很差。
如果是 Qbasic 代码的话,已支持 sub 子过程及Function子函数了,也建议变量定义,不建议使用 GOTO 命令。
但想不出是什么代码。 GWBASIC 要求全程行号;BASICA ,不支持中文汉字平台。TURBO BASIC 也是要求全程行号。
重写了 对输入判断部分。需要严格限制。否则很容易导致超过 整数范围。
[ 本帖最后由 风吹过b 于 2012-10-19 11:28 编辑 ]
添加一个模块,移除窗体。
关键的难点在于:
1、找到所用到的所有变量。
2、把 goto 命令 改为 DO ... Loop 循环。
3、把 INPUT 改为 InputBox ,把 Print 改为 MsgBox
其它都原样照抄。
这个程序没有优化好。可读性很差。
如果是 Qbasic 代码的话,已支持 sub 子过程及Function子函数了,也建议变量定义,不建议使用 GOTO 命令。
但想不出是什么代码。 GWBASIC 要求全程行号;BASICA ,不支持中文汉字平台。TURBO BASIC 也是要求全程行号。
程序代码:
Option Explicit Public Sub Main() '2 Cls 'Color 6 'LOCATE 3, 10 'Print " 欢迎您,让我们来玩猜数字游戏吧!现在我有一个四位数,您可以猜8次。" 'Print " 记住,这个四位数每个数位上的数字是不相同的。" 'Print " 还有,您每猜测一次,我都会给出一个提示的,好好利用提示," 'Print " 您肯定会胜利的,把脑筋动起来吧!" 'Print " 提示方法:A和B,A表示您猜的数字中有一个数位上的数字与答案的" 'Print " 数位相同,数字也相同。B表示您猜的数字中有一个数字与答案中的一个" 'Print " 数字相同,但数位不对。" 'Print " 例子:比如答案是1234,你猜5243,我给出的提示就是1A2B,1A表示有一个数字对了(指百位上的2)," 'Print " 2B表示有两个数字对了(指3和4),但数位不对,您明白了吗?" 'Color 7 'Print " 那让我们开始吧!" Dim s As String Dim s1 As String Dim s3 As String Dim s2 As String Dim a As Integer, b As Integer, c As Integer, d As Integer, k As Integer Dim e As Integer Dim z As Integer Dim a1 As Integer, b1 As Integer, c1 As Integer, d1 As Integer Dim n As Integer, m As Integer, q As Integer, w As Integer, o As Integer, r As Integer, t As Integer Dim y As Integer Dim m1 As Integer, n1 As Integer s = "欢迎您,让我们来玩猜数字游戏吧!现在我有一个四位数,您可以猜8次。" s = s & vbCrLf & "记住,这个四位数每个数位上的数字是不相同的。" s = s & vbCrLf & "还有,您每猜测一次,我都会给出一个提示的,好好利用提示," s = s & vbCrLf & "您肯定会胜利的,把脑筋动起来吧!" s = s & vbCrLf & "提示方法:A和B,A表示您猜的数字中有一个数位上的数字与答案的" s = s & vbCrLf & "数位相同,数字也相同。B表示您猜的数字中有一个数字与答案中的一个" s = s & vbCrLf & "数字相同,但数位不对。" s = s & vbCrLf & "例子:比如答案是1234,你猜5243,我给出的提示就是1A2B,1A表示有一个数字对了(指百位上的2)," s = s & vbCrLf & "2B表示有两个数字对了(指3和4),但数位不对,您明白了吗?" MsgBox s, , "提示" '10 Randomize Timer Randomize Timer 'a = 0 'b = 0 'c = 0 'd = 0 'k = 0 'a = Int(Rnd * 10) 'b = Int(Rnd * 10) 'c = Int(Rnd * 10) 'd = Int(Rnd * 10) Do a = 0 b = 0 c = 0 d = 0 k = 0 Do a = Int(Rnd * 10) b = Int(Rnd * 10) c = Int(Rnd * 10) d = Int(Rnd * 10) 'If a <> b And a <> c And a <> d And b <> c And b <> d And c <> d Then e = 1000 * a + 100 * b + 10 * c + d Else GoTo 10 Loop Until a <> b And a <> c And a <> d And b <> c And b <> d And c <> d e = 1000 * a + 100 * b + 10 * c + d s1 = "现在我有这个四位数了。" Do '20 Print " 这是您第"; k; "次猜数,您猜猜是多少?" 'Color 11 'Print " 现在我有这个四位数了。" '5 k = k + 1 'If k = 9 Then GoTo 100 'Color 11 k = k + 1 s3 = s1 & vbCrLf & "这是您第" & k & "次猜数,您猜猜是多少?" Do 'INPUT z 'a1 = 0 'b1 = 0 'c1 = 0 'd1 = 0 'a1 = Int(z / 1000) 'b1 = Int((z - a1 * 1000) / 100) 'c1 = Int((z - a1 * 1000 - b1 * 100) / 10) 'd1 = z - a1 * 1000 - b1 * 100 - c1 * 10 'If z < 1000 Or z > 9999 Then Print " 您输入错误了,记住,您要猜的是一个4个数字都不相同的四位数。请重新输入吧!": GoTo 20 s2 = InputBox(s3, "输入") s2 = Trim(s2) '去掉空格 If Len(s2) = 0 Then End '按取消后,返回为空值 End If '此节重写,以适应 随便输入 If IsNumeric(s2) Then If Len(s2) = 4 Then z = Val(s2) a1 = Int(z / 1000) b1 = Int((z - a1 * 1000) / 100) c1 = Int((z - a1 * 1000 - b1 * 100) / 10) d1 = z - a1 * 1000 - b1 * 100 - c1 * 10 If a1 <> b1 And a1 <> c1 And a1 <> d1 and b1 <> c1 and b1 <> d1 and c1 <> d1 Then Exit Do End If End If End If MsgBox "您输入错误了,记住,您要猜的是一个4个数字都不相同的四位数。请重新输入吧!", vbCritical, "输入错误" Loop 'If z = e Then Print " 您太聪明能干了,您猜对了,这个数字就是"; e; "。": GoTo 150 If z = e Then MsgBox "您太聪明能干了,您猜对了,这个数字就是" & e & "。", vbInformation, "胜利" Exit Do Else End If 'n = 0 'm = 0 'q = 0 'w = 0 'o = 0 'r = 0 't = 0 'y = 0 'If a1 = a Then m = 1 Else If a1 = b Then n = 1 Else If a1 = c Then n = 1 Else If a1 = d Then n = 1 'If b1 = a Then q = 1 Else If b1 = b Then w = 1 Else If b1 = c Then q = 1 Else If b1 = d Then q = 1 'If c1 = a Then o = 1 Else If c1 = b Then o = 1 Else If c1 = c Then r = 1 Else If c1 = d Then o = 1 'If d1 = a Then t = 1 Else If d1 = b Then t = 1 Else If d1 = c Then t = 1 Else If d1 = d Then y = 1 'm1 = 0 'n1 = 0 'm1 = m + w + r + y 'n1 = n + q + o + t n = 0 m = 0 q = 0 w = 0 o = 0 r = 0 t = 0 y = 0 If a1 = a Then m = 1 Else If a1 = b Then n = 1 Else If a1 = c Then n = 1 Else If a1 = d Then n = 1 If b1 = a Then q = 1 Else If b1 = b Then w = 1 Else If b1 = c Then q = 1 Else If b1 = d Then q = 1 If c1 = a Then o = 1 Else If c1 = b Then o = 1 Else If c1 = c Then r = 1 Else If c1 = d Then o = 1 If d1 = a Then t = 1 Else If d1 = b Then t = 1 Else If d1 = c Then t = 1 Else If d1 = d Then y = 1 m1 = 0 n1 = 0 m1 = m + w + r + y n1 = n + q + o + t 'Print " 这是您第"; k; "次猜数,可惜了,不对,这次的提示是"; m1; "A"; n1; "B" 'GoTo 5 s1 = s1 & vbCrLf & "您第" & k & "次猜:" & z & ",可惜错了,提示:" & m1 & "A" & n1 & "B" 's1 = s1 & "可惜了,提示" & m1 & "A" & n1 & "B" Loop While k < 8 '100 Print " 不好意思,在8次机会里您都没有猜对这个数字,真遗憾!这个数字是"; e; "。" '150 INPUT " 重玩一次请输入(Y/y),不想玩了请输入(N/n)"; h$ If k >= 8 Then s1 = s1 & vbCrLf & "不好意思,在8次机会里您都没有猜对这个数字,真遗憾!这个数字是" & e & "。" Else s1 = "恭喜您猜对啦!" End If s1 = s1 & vbCrLf & vbCrLf & "重玩一次?" 'If h$ = "Y" Or h$ = "y" Then GoTo 2 Else If h$ = "N" Or h$ = "n" Then GoTo 200 Else Print "您输入错误,请重新输入!": GoTo 150 If MsgBox(s1, vbYesNo, "重玩?") = vbNo Then Exit Do End If Loop '200 End End Sub
重写了 对输入判断部分。需要严格限制。否则很容易导致超过 整数范围。
[ 本帖最后由 风吹过b 于 2012-10-19 11:28 编辑 ]
授人于鱼,不如授人于渔
早已停用QQ了