VB应用程序设计实验报告

实验报告

课程名称     Visual Basic程序设计教程    

实验项目名称      VB应用程序设计      

班级与班级代码                    

实验室名称(或课室)      实验楼401    

                           

任课教师                        

    号:                 

                         

实验日期:    2010 12 20      

 


广东商学院教务处  制 

一、实验目的和要求

1、             熟练掌握并应用VB窗体和常用控件的属性、方法和事件。

2、      掌握自定义数据类型的定义和使用,能熟练运用常用内部函数和用户交互函数(Inputbox与Msgbox函数)。

3、      掌握顺序结构程序、选择结构程序和循环结构程序设计,进一步理解运用VB应用程序的编程机制。

4、      掌握控件数组在程序设计中的应用方法和技巧。

5、      掌握菜单设计方法,定时器、图形框和图像框的常用属性、事件、方法及其使用。

二、          实验环境

1、             Windows  XP 操作系统

2、       Visual Basic 6.0 中文版

三、          实验内容和原理

实验内容:

编辑一个小游戏——井字过三关,要求玩家在规定时间内完成该游戏。游戏规则:需要两位玩家,一个打圈“○”,一个打叉“×”,轮流在3乘3的格上打自己的符号,最先以横、竖、斜连成一线则为胜。如果双方都下得正确无误,将得平局。

实验分析与原理:

⑴ 用timer设计一个倒计时,可控制玩家在规定时间完成。

⑵ 用9个数组图像控件排成3乘3格子,利用鼠标click事件触发各相应图像框显示圈或叉的图像。

⑶ 利用穷举法分别从横、竖、斜判断每个方格是否为同一图像,从而定出胜利一方。

四、          实验设计流程

界面设计:

考虑到“井字过三关”为儿童益智类游戏,应尽量将界面设计得亲切、可爱,吸引玩家。游戏界面如下图:

首先设置窗口的picture属性载入一张可爱背景,同时加上两个载入Q版头像的图形框;为了界面美观,使用菜单编辑器装载开始、退出游戏等功能按键;然后用9个载入白底的图象框作为游戏方格;加入几个标签分别显示玩家名称、剩余时间和提示信息等。

程序设计:

⑴   点击菜单中的“开始”进入游戏,让玩家输入各自名称并显示,之后开启并清空全部图像框(变空白),信息框显示提示信息,然后开始计时。代码如下:

Private Sub 开始_Click()

      player1 = InputBox("请输入玩家1名称", "玩家1", "player1")

      player2 = InputBox("请输入玩家2名称", "玩家2", "player2")

      For i = 0 To 8

        Image(i).Enabled = True

        Image(i).Picture = LoadPicture("bai.jpg")

      Next i

      name1.Caption = player1

      name2.Caption = player2

      msg.Caption = "提示:" + player1 + "先出手"

      Timer1.Enabled = True

End Sub

⑵      游戏中点击“重来”,同样开启并清空全部图像框,然后重新计时。代码如下:

Private Sub 重来_Click()

      For i = 0 To 8

        Image(i).Picture = LoadPicture("bai.jpg")

        Image(i).Enabled = True

      Next i

      Timer1.Enabled = True

      msg.Caption = "提示:" + player1 + "先出手"

End Sub

⑶      点击菜单“退出”则立刻退出游戏。代码如下:

Private Sub 退出_Click()

      End

End Sub

⑷      利用数组控件,即每个图像框控件Image(i)有自己的编号(i从0到8),按3乘3方格从左到右顺序排列安放。游戏中点击各个图像框,将交替出现圈和叉图形,然后进行判断。利用穷举法,从横、竖、交叉方向列出可能出现的各种连成一线的情况,即分出胜负,在提示标签里提示并弹出信息框。另外在判断过程中加入变量以确定是否分出胜负,如果下完全部格子还未分出胜负,则双方以平局结束并提示。代码如下:

Private Sub Image_Click(index As Integer)

      '交替使用圈圈和叉叉

      Times_number = Times_number + 1

      If Times_number Mod 2 <> 0 Then

        Image (index).Picture = qq

        msg.Caption = "提示:轮到" + player2 + "出手"

      Else

        Image (index).Picture = cc

        msg.Caption = "提示:轮到" + player1 + "出手"

      End If

      '判断胜负:

      '从格子横方向进行判断:

      For i = 0 To 6 Step 3

        If Image (i).Picture = qq And Image (i + 1).Picture = qq And Image (i + 2).Picture = qq Then

          winer = 1

        End If

        If Image (i).Picture = cc And Image (i + 1).Picture = cc And Image (i + 2).Picture = cc Then

          winer = 2

        End If

      Next i

      '从格子竖方向进行判断:

      For i = 0 To 2

        If Image (i).Picture = qq And Image (i + 3).Picture = qq And Image (i + 6).Picture = qq Then

          winer = 1

        End If

        If Image(i).Picture = cc And Image(i + 3).Picture = cc And Image(i + 6).Picture = cc Then

          winer = 2

        End If

      Next i

      '从格子两边交叉方向进行判断:

      If Image(0).Picture = qq And Image(4).Picture = qq And Image(8).Picture = qq Then

        winer = 1

      End If

      If Image(0).Picture = cc And Image(4).Picture = cc And Image(8).Picture = cc Then

        winer = 2

      End If

      If Image(2).Picture = qq And Image(4).Picture = qq And Image(6).Picture = qq Then

        winer = 1

      End If

      If Image(2).Picture = cc And Image(4).Picture = cc And Image(6).Picture = cc Then

        winer = 2

      End If

      '结束后不能继续

      If winer = 1 Or winer = 2 Then

        For i = 0 To 8

          Image(i).Enabled = False

        Next i

        Timer1.Enabled = False

        开始.Enabled = True

      End If

      '提示标签显示胜负以及弹出信息框

      If winer = 1 Then

        msg.Caption = player1 + "胜出"

        b = MsgBox(player1 + "胜利", , "结束")

      End If

      If winer = 2 Then

        msg.Caption = player2 + "胜出"

        b = MsgBox(player2 + "胜利", , "结束")

      End If

      '下完全部格子没分出胜负:

      If Times_number = 9 And winer = 0 Then

        msg.Caption = "双方平局"

        开始.Enabled = True

        a = MsgBox("双方平局", , "结束")

      End If

      End Sub

⑸      为游戏设置倒计时,当超过时间未能完成游戏,则弹出信息框提示玩家并结束游戏。代码如下:

Private Sub Timer1_Timer()

      If m <> 0 Then

        If s = 0 Then

          m = m - 1

          s = 59

        Else

          s = s - 1

        End If

      Else

        If s <> 0 Then

          s = s - 1

        Else

          Label1.Caption = "时间结束!"

          msg.Caption = "未完成"

          c = MsgBox("已超时,请重新开始...", , 结束)

          Timer1.Enabled = False

          For i = 0 To 8

             Image(i).Enabled = False

          Next i

        End If

      End If

      If m <> 0 Or s <> 0 Then

        Label1.Caption = "剩余时间: " + Str(m) + " 分" + Str(s) + "秒"

      End If

End Sub

五、          调试过程

反复运行游戏进行调试,发现各种程序漏洞:还没点击开始就可以在方格进行游戏;可以在同一方格重复点击使其改变……

经过多次调试,程序已经相对完善。

六、           测试选取的情况及运行结果

1、             玩家1取胜,将分为三种练成一线的情形(横、竖、斜)。如图:

2、             玩家2取胜,情形如上(横、竖、斜)。如图:

3、             双方平局,即下完全部格子,横、竖、斜都未能练成一线。如图:

七、          实验报告总结与心得体会

这个学期我们学习了Visual Basic程序设计这门课程,它是可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类应用程序。

课程知识的实用性很强,因此实验就显得非常重要。从开始上这门课到现在,已经做了不少的实验。所以在做这次VB应用程序设计的实验前,我以为也是很简单,不就是两下子编好程序然后将实验报告写完就大功告成。直到决定了编写“井字过三关”这一小游戏后,才知道其实不是这么简单的。

从游戏界面的设计到实现每个功能的程序代码的编写,无一不是经过反复的验证测试而成功完成的。特别是每一段程序代码的编写,靠的都是细心以及多次的调试修改。为了这个程序及实验报告,实在花费了我不少的时间和精力,不过我相信学到的知识与付出是成正比。

通过这次VB应用程序设计实验,不仅加深了我对VB的认识,达到了一些如掌握VB程序设计及编辑等各项实验目的和要求,而且我觉得更重要的是实验过程中培养了我在实践中独立思考、研究问题、分析问题和解决问题的能力,提高自己动手的能力,培养理论联系实际的作风,增强创新意识。


姓名                        实验报告成绩           

题目:  “井字过三关”VB应用程序设计    

评语

                         指导教师(签名)        

                                        20##年12月30日

 

第二篇:VB程序设计课程实验报告1

相关推荐