实验报告
课程名称 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日
C++程序设计实验报告学号:姓名:班级:指导老师:实验一、字符和格式的输出实验一,实验目的1、重点把握各种内部数据类型、数值和逻辑…
C语言程序设计实验报告1实验目的(1)掌握函数的定义方法、调用方法、参数说明以及返回值;(2)掌握实参与形参的对应关系,以及参数之…
学生实验报告册(理工类)课程名称:JAVA程序设计实验专业班级:M11计算机科学与技术II学生学号:学生姓名:所属院部:XX学院指…
西南交通大学程序设计综合实验实验地点实验学期学生班级学生学号学生姓名任课教师龚勋信息科学与技术学院20xx年4月实验一ATM机用户…
C语言程序设计实验报告学号不告诉你哦班级信管一班姓名你猜猜哈哈一实验题目一编程实验猜数问题输入两个整数并求这两个整数的和输入所猜的…
上海立信会计学院本科实验报告班级学号姓名指导教师系部专业实验时间实验5数组一实验目的1掌握数组的声明数组元素的引用2掌握固定长度数…
湖北文理学院VB程序设计课程实验报告学院物电学院专业自动化班级1211学号20xx118064姓名王亮任课教师王福林1实验一VB控…
综合性实验实验名称用vb编写简单计算器专业班级土木工程0901班学生姓名学号指导教师1需求分析该计算器程序是在VisualBasi…
中北大学课程设计报告学院系专业学生姓名设计题目薛军军软件学院软件工程学号1121011721弹力球游戏起迄日期20xx年5月30日…
vb程序设计实验心得vb程序设计实验心得一数据库VB课程设计心得体会数据库课程设计大赛的尘嚣渐渐远去怀着对这次大赛的些许不舍怀着对…
中南财经政法大学实验报告实验课名称VB程序设计学生姓名张琳专业班级信息0904班学号09021275开课时间20xx20xx学年第…