VB编写猜数字小游戏傻瓜教程
本人原创,只在百度文库发布,希望对想学习VB的朋友有所帮助,提高学习VB的兴趣。本文以VB6为例介绍编写一个最简单的猜数字小游戏过程,VB6在百度上很容易搜索到,本文所需要控件极少,安装一个大小只有6MB的VB6精简版就可以体验了。不敢说“抛砖引玉”,只怕抛个小砖换来个板儿砖。总之,本文重点不是从零开始学VB,主要是介绍编写这个小游戏的过程。
首先,启动VB,然后点击文件菜单,点击新建一个工程,即可出现如下界面。按照下图红箭头的指向,鼠标在左侧工具条上拖一个文本标签、一个文本输入框、一个按钮到工程界面里边来,然后调整大小和位置大概跟下图比例差不多就行了。
  接着,点击label标签,在右边属性窗口里调整字体大小为三号字,因为默认的字体太小了,不爽。什么?三号字还小?那你自己看着办吧,但我可要告诉你哦,等下显示的内容超出显示区域可别怪我。
  改好了吗?本次编程就这三个控件,菜吧?现在双击工程界面的空白区域,不要点在控件上了哦。双击空白区域后,就弹出了代码编写窗口。按照下图把代码一个一个给我打上去。
都好几分钟了,打上去了吗?哦,忘了告诉你,复制下面的代码也是一样的。
代码:
Dim cai As Integer  '定义一个变量用来存储欲猜的数字
Private Sub Form_Load()
Randomize '重设随机因子
Label1.Caption = "请填入你猜测的数字"  '让label1显示为空
Text1.Text = ""  '让text1文本显示为空
Command1.Caption = "确定"  '让command1显示为"确定"
cai = Int(Rnd * 899) + 100 '随机选择一个三位数作为欲猜的数字
End Sub
以上代码都做了注释,就不需要过多说明了。这里主要说明两个:一是Randomize是用来重设随机因子的,如果删除这句,那么每次运行猜的数字都是一样的,没有新鲜感了。二是int(Rnd * 899)+100的意思是让电脑随机产生一个100以上,1000以下的数字,实际上就是100-999的范围。如果你改成89和10,那么就是10-99以内的两位数,同理改成8999 1000就是1000-9999的四位数。。。。。。。等本文介绍完以后,你可以依葫芦画瓢慢慢搞。
接下来,按照上图所示,双击Command1按钮,在程序代码区给我打上图中红区域的代码。
几分钟又过去了,打完了吗?还是那句话,复制下面的代码也是一样的。但要注意,如果你真的打代码,必须打在Private Sub Command1与End sub过程里面,不能打在外面的空白区域,否则会出错哦。
If Text1 = "" Then MsgBox "你还没有输入任何内容", vbQuestion, "提示": Exit Sub
If Not IsNumeric(Text1.Text) Then MsgBox "你输入的不是数字", vbQuestion, "提示": Exit Sub
If Val(Text1.Text) <> cai Then
    MsgBox "你猜的不正确,请重新猜", vbQuestion, "提示"
    Text1.Text = ""
Else
    MsgBox "恭喜你,猜对啦!", vbQuestion, "提示"
    End
End If
以上需要说明的是:前两个IF判断语句是为了判断是否输入了数字,输入的是否是非英文
等其他非数字。然后下面用了Val函数,这个函数是用来将Text1填写的字符串转换为数字型,这样才能与数字型cai变量作比较,不同类型的变量不能进行直接比较。虽然你在Text1文本框里面输入的是数字,但它也是字符型的数字,并不是真正的数字(可以这样理解,我们用引号来代表字符串,那么:字符串“123”与数字123虽然显示出来都是123,但其实类型是不一样的,字符串“123”跟“ABC”是一样的类型,它不能参与运算,因为他只是录入的字符而已。),经过判断,作两手准备,一个是猜不对的情况,我们提示错误,清空刚才填写的数字,然后继续猜;另一个是猜对的情况,我们提示猜对了,然后通过END来结束程序的运行。
好啦,大功告成了。现在点击运行按钮(VB软件快捷按钮栏有个向右三角型的播放按钮)或者直接按键盘上F5键即可查看效果。。。。。。
过了八个小时,你发现终于猜对了是吧?程序停不下来,你一直猜中了,恭喜你呀!忘了告诉你,程序运行中,可以按VB软件上的方框按钮来终止程序运行,不好意思啊,害你玩的这么嗨!好了,这样就完成了一个非常简单的猜数字游戏的设计,但你明显发现了,这样去猜数字,猜中的机率有点小了,因为猜错了只会单纯的提示猜错了,并不会提示猜测
的效果。如果是两位数的话,大不了猜几十次就猜出来了,但是三位数、四位数甚至更多的话,那猜起来就可费劲了,所以我们再次把代码优化一下,让程序给猜数字的人作一些提示。我们可以对程序进行一下小改动,让他更加有趣点。优化的内容就包含在Command1按钮的子程序过程里,这次就不害你啦,以下即是优化后的内容,直接复制并替换掉command1的整个过程:
If Text1 = "" Then MsgBox "你还没有输入任何内容", vbQuestion, "提示": Exit Sub
If Not IsNumeric(Text1.Text) Then MsgBox "你输入的不是数字", vbQuestion, "提示": Exit Sub
If Val(Text1.Text) <> cai Then
    If cai > Val(Text1.Text) Then
      MsgBox "小了", vbQuestion, "提示"
    Else
      MsgBox "大了", vbQuestion, "提示"
简单好玩的编程代码复制
    End If
 
    Text1.Text = ""
Else
    MsgBox "恭喜你,猜对啦!", vbQuestion, "提示"
    End
End If
从以上代码中不难看出,我们改动的语句就是粽的那部分,无非是将两个数字进行大小的比较,得出“大了”还是“小了”的提示,这个相信不难理解的。
现在点击运行按钮或者直接按键盘上F5键即可查看效果。
你会发现程序变的聪明些了,他会提示你猜的数字相对于欲猜的数是大了还是小了,直到你猜对为止。什么,这个被你秒杀了?看来从刚才八小时到1秒,你进步如坐神舟火箭啊,这个难度太小了对吧?那你还是用最先代码吧,跟它继续拼了!呵呵。如果觉得想再稍微增加点难度,我们还可以对程序进行小小的改动,增加是否有一部分数字已经被猜中的提醒。优化的内容就包含在Command1上,以下是优化后的内容,可以直接复制并替换掉command1的整个过程内容:
If Text1 = "" Then MsgBox "你还没有输入任何内容", vbQuestion, "提示": Exit Sub
If Not IsNumeric(Text1.Text) Then MsgBox "你输入的不是数字", vbQuestion, "提示": Exit
Sub
If Val(Text1.Text) <> cai Then
    Dim cai_num As Integer  '定义一个变量用于存储是否猜中了多少
    For i = 1 To Len(Text1.Text)
      If InStr(1, Str(cai), Mid(Text1.Text, i, 1)) > 0 Then '如果猜中其中一个数字
        cai_num = cai_num + 1 '就累加1次猜中的数量
      End If
    Next
       
    If cai_num <> 0 Then '判断是否猜中部分数字,并显示结果
        MsgBox "你本次猜对了" & cai_num & "个数字,继续加油!", vbQuestion, "提示"
    Else
        MsgBox "你猜的完全不正确,请重新猜!"
    End If
   
    Text1.Text = ""
Else
    MsgBox "恭喜你,猜对啦!", vbQuestion, "提示"
    End
End If
以上代码相对于上一次改动的代码来说,稍微复杂了一点,我们慢慢来分析一下重点吧。本次判断多了for、len、instr以及mid是之前没有的,这当中for直到next是一个条件循环区
域,目的是把你输入的数字通过mid函数逐一取出来,通过instr函数来探测是否在欲猜的数中有被猜中的数字,)的意思是取得text1里面输入的数字长度,以此来作为for循环运行的次数。什么?头有点晕?想睡一觉?别呀,我这么跟你简单说下吧:
For循环的通常用法是:
for 变量=开始数 to 结束数
  这里是每次循环时需要运行的内容
next 
next在这里的意思是如果for还没有循环完就继续回到for重复运行,直到完成for的条件后才执行next之后的内容,注意哦:如果你搞个永远都运行不完的条件,那么next将无限运行,直到你强退!什么?开始数到结束数总要运行完的呀,怎么会永远运行?举个简单例子:你比如,首先b=2:for i=b to 100,意思就是从2到100,但是你在每次循环时需要运行的内容里面写上b=2,那么再次循环时,b又等于2了,for就死在永远2上了。
mid函数的通常用法是:
mid(字符串,起始位置,取几个字符)
比如:,2,1),代表从的第二位开始取1个字符。当然,如果字符串只有3个,你来个,2,5)是不行的,5已经超出需要取出的字符了,正所谓巧妇都难做无米之炊呀,你叫人家mid怎么给你取出来呀!
Instr函数的通常用法是:
  Instr(起始位置,需要查的字符串,查什么字符)
  比如:instr(,”abc”),代表从字符串第1个字符开始,查里面有没有abc字符存在,通过if或一个变量=的形式可以取出instr查的值,如果值>0代表到了,值<1代表没有到。其实这个到的值就是这个abc字符在某个字符串中最先出现的字符排序位置。
现在点击运行或按F5键运行上面的代码,你就可以看到类似上图的画面了。现在开猜吧,比如你可以首先猜123,如果他提示有2个数字猜中,那么你就猜125,如果他提示只有1个数字正确,那么你就猜135,如果135提示2个数字正确,那么可以确定要猜的数字里面有13,这时还差一个数了,加上13以后多尝试最后一位数,直到提示三个数都符合要求,那么就只剩下三个数的排列问题了。但是,如果你遇到欲猜的数字有相同的情况,比如要猜的数字是255,那么会增加猜测的难度哦,比如这时你输入456,他会提示你猜对了1个,这种情况下你通常不会一下想到5有两个,需要再多猜几次才能知道,不过出现重复的数字机率还是相对较小的。