西安建筑科技大学理学院电子信息科学与技术专业LABVIEW 仿真实验课程
学生实验报告书
院 系 理学院
专业班级电子信息科学与技术1201
实验名称 labview仿真实验
姓 名 魏廷剑
学 号 121040124
20##年 12月23日
学生实验报告书
学生姓名:
学生学号:
实验项目名称:基于labview的2048小游戏
实验计划学时:3学时
实验项目类型:综合、设计
实验时间:20##年12月10日
一〖实验目的〗
1)熟悉Labview各组件,深入学习研究课程所学知识;
2)通过自己编制Labview综合程序,提高编程能力;
3)综合所学Labview知识,了解Labview开发程序的一般过程;
4)在Labview环境下,利用事件结构,条件结构,循环等函数功能,完成了基本程序;
5)将对图片的控制转换为对数组的控制,简化操作;
6)利用子Vi技术将复杂的程序模块分为若干个实现单一功能的的子程序。
二〖实验仪器〗
安装有LABVIEW的计算机
三〖实验内容〗
设计并完成小游戏2048.
四〖方案步骤〗
1. 分析思路,所需实现的功能
1) 分数计算。在移动方向将相邻的2个数相加;
2) 移动控制。分为上下左右四种移动方式,通过键盘上的W、A、S、D或者↑↓←→控制;
3) 移动前后数组数值的改变。通过重新创建数组,将移动后的数值填入、并用0将数组补成4X4的数组,来实现移动前后数值的改变;
4) 利用概率随机数来实现2和4的生成;
5) 成功与失败的判断等。
2. 设计程序
1) 在前面板上放置图片下拉框,并导入图片;
2) 放置分数统计框;
3) 放置重新开始及退出程序按钮。
图1-1程序前面板
3. 设计程序框图
通过VI层次结构图展示程序结构
图1-2VI层次结构图
4. 从程序框图分析,如下
1) 程序初始化 。将数组置0,并随机生成两个数(2或4)。
图1-3程序初始化
2) 用户操作部分程序图,如下
图1-4用户操作程序图
3) 移动控制程序图,以上移为例
图1-5移动控制
4) 程序判断,以失败判断为例
图1-6失败判断
五〖实验总结〗(体会及建议)
六〖实验评定〗
实验内容(70分):
方案步骤(20分):
实验总结(5分):
其它(5分):
综合得分:
指导教师签名:
第二篇:VB小游戏实验报告
VB 动 画 设 计 与 制 作1
南京信息职业技术学院-----VB 动画设计与制作姓名:张晓红 学号:41041X14 学号:41041X14游戏题目:弹球游戏 1.设计思想:设计一个弹球游戏,使其在向上或左右方向碰壁反弹,下部 有一可左右水平移动的挡板,当小球接触挡板时,小球反弹,否 则小球出界,即游戏失败,小球每接触次挡板,加十分,当得分 是 20 的倍数时,挡板缩短,小球移动加快,致使难度增加。2.窗体设计的属性名称是窗体的标识名,代码中称它为 Name 值为:Form1 BackColor:pink。 BorderStyle:Button Caption:弹球游戏。 ControlBox: 设置窗体标题栏上是否具有控制菜单栏及按钮。
南京信息职业技术学院-----VB 动画设计与制作Enabled:true Height:200 Width:150 Visible: True。 WindowsState:原形。 Icon:设置窗体标题栏上的图标。 Picture:给窗体配上漂亮的位图。 特别要注意的是:窗体的 Name 和 Caption 属性,虽然缺省值 相同,都是 Form1,但实际意义却不一样。Caption 指的窗体标题栏 上的文字,Name 指这个窗体的对象名,千万不能混淆。3.动画的代码Dim time%, key%, score%, a#, y# Private Sub Command2_Click() Line1.X1 = 1320 Line1.X2 = 3000 Timer1.Interval = 100 Label1.Caption = 0 Timer2.Enabled = False
南京信息职业技术学院-----VB 动画设计与制作Timer1.Enabled =False Label4.Caption = "" score = -10 time = 0 Shape1.Left = (Line1.X1 + Line1.X2) / 2 Shape1.Top = Line1.Y1 - Shape1.Height End Sub Private Sub Form_Load() Line1.X1 = 1320 Line1.X2 = 3000 Timer1.Interval = 100 Label1.Caption = "" Timer2.Enabled = False Label4.Caption = "" score = -10 time = 0 Shape1.Left = (Line1.X1 + Line1.X2) / 2 Shape1.Top = Line1.Y1 - Shape1.Height End Sub Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer) key = KeyCode '游戏初始化 '球位置初始化
南京信息职业技术学院-----VB 动画设计与制作Select Case KeyCode Case 37 If Line1.X1 <= 0 Then Line1.X1 = 0 Else Line1.X1 = Line1.X1 - 90 Line1.X2 = Line1.X2 - 90 End If Case 39 '如果按下右箭头,使板子向右移动 '如果按下左箭头,使板子向左移动If Line1.X2 >= 4575 Then Line1.X2 = 4575 Else Line1.X1 = Line1.X1 + 90 Line1.X2 = Line1.X2 + 90 End If End Select End Sub Private Sub Command1_Click() Dim m%, n% Picture1.SetFocus Timer1.Enabled = True Timer2.Enabled = True
南京信息职业技术学院-----VB 动画设计与制作Randomize m = Int(Rnd * 1) + 0 If m = 0 Then Randomize a = Int(Rnd * (46 * 3.1416 / 180)) + 30 * 3.1416 / 180 y = 100 * Abs(Tan(a)) Else: Randomize a = Int(Rnd * (46 * 3.1416 / 180)) + 105 * 3.1416 / 180 '平移移 动动量和我竖直移动的夹角y = 100 * Abs(Tan(a)) 竖直移动量 End If End Sub‘确定单位时间内水平移动量,求出Private Sub Command3_Click() If Command3.Caption = "暂停" Then Timer1.Enabled = False Timer2.Enabled = False Label5.Visible = True Command1.Enabled = False Command2.Enabled = False Command3.Caption = "继续"
南京信息职业技术学院-----VB 动画设计与制作Else Picture1.SetFocusTimer1.Enabled = True Timer2.Enabled = True Label5.Visible = False Command1.Enabled = True Command2.Enabled = True Command3.Caption = "暂停" End If End Sub Private Sub Picture1_KeyUp(KeyCode As Integer, Shift As Integer) key = KeyAscii End Sub Private Static Sub Timer1_Timer() Dim n%, m%, i% If Shape1.Left < 0 Then n=0 End If If Shape1.Left > 4200 Then '使球碰壁反弹的条
南京信息职业技术学院-----VB 动画设计与制作件 n=1 End If Select Case (n) Case 0 Shape1.Left = Shape1.Left + 100 Case 1 Shape1.Left = Shape1.Left - 100 End Select If Shape1.Top + Shape1.Height >= Line1.Y1 And Shape1.Left <= (Line1.X2 - 175) And Shape1.Left >= (Line1.X1 - 200) Then m=0 score = score + 10 Label1.Caption = Str(score) + "分" If score Mod 20 = 0 And Timer1.Interval >= 10 Then '当得 分是 20 的倍数时,挡板的长度减少 Line1.X1 = Line1.X1 + 20 Line1.X2 = Line1.X2 - 20 Timer1.Interval = Timer1.Interval – 3 时,间隔时间减少 End If End If '当得分是 20 的倍数 '球遇到挡板反弹的条件
南京信息职业技术学院-----VB 动画设计与制作If Shape1.Top < 0 Then m=1 End If Select Case (m) Case 0 Shape1.Top = Shape1.Top - yCase 1 Shape1.Top = Shape1.Top + y End Select If Shape1.Top > Line1.Y1 Then Timer1.Enabled = False i = MsgBox("你输了!", vbInformation, "结果") If i = 1 Then Line1.X1 = 1320 Line1.X2 = 3000 Timer1.Interval = 100 Label1.Caption = 0 Timer2.Enabled = False Label4.Caption = "" score = -10 time = 0
南京信息职业技术学院-----VB 动画设计与制作Shape1.Left = (Line1.X2 + Line1.X1) / 2 Shape1.Top = Line1.Y1 - Shape1.Height 后重新初始化 End If End If If Timer1.Interval <= 10 Then Shape1.Left = (Line1.X1 + Line1.X2) / 2 Label1.Caption = "0" Label4.Caption = "" MsgBox "祝贺你,游戏完成!!" ! Timer1.Enabled = False Timer2.Enabled = False Timer1.Enabled = flase Timer1.Interval = 100 score = -10 time = 0 Shape1.Left = (Line1.X1 + Line1.X2) / 2 Shape1.Top = Line1.Y1 - Shape1.Height 过后重新初始化 End If End Sub Private Sub Timer2_Timer() '游戏通 '游戏完成的条件 '游戏失败
南京信息职业技术学院-----VB 动画设计与制作time = time + 1 Label4.Caption = Str(time) + "秒" End Sub
0 南京信息职业技术学院-----VB 动画设计与制作4.动画的效果(游戏运行初始化)(游戏运行)0
南京信息职业技术学院-----VB 动画设计与制作(游戏暂停)(游戏失败)
5.动画的说明:⑴ 每次开始游戏时,小球发射角度随机(使小球每次向不同方 向发射) ; 所以定义一个角度变量 a 和高度变量 y,每次运行时随机出一个 范围在[30°,75°]或[105°,150°]的角 a,确定小球相对于“容器” left 属 ( 性) ,利用三角函数(y=tan(a)*shape1.left),计算出 y 值。由此随机 出每次运行时小球的发射角度。 ⑵ 小球接触挡板致使加分的条件; 小球相对于“容器”高度位置(shape1.top)加上小球直径 (shape1.height)>=挡板的位置(line1.Y1) ,小球相对于“容器”左 右位置(shape1.left)<=挡板右端点的位置(line1.X2)且>=挡板左 端点的位置(line1.X1) ,满足以上条件,判定小球接触挡板被反弹。 ⑶ 游戏运行时小球和挡板的初始化; 当游戏结束,失败,通过后,重新设置挡板左端点和右端点位置 (line1.X1 和 line1.X2) 小球位置重设为 Shape1.Left = (Line1.X1 + , Line1.X2) / 2 ;Shape1.Top = Line1.Y1 - Shape1.Height。Time1的时间间隔设为 100,得分和时间(score;time)返回初值。 ⑷ 如何使挡板进行左右移动。 采用 keydown 事件,进行选择判断,向左(右)移动时,板左 右端点同时减去(加上)90 进行移动,从而实现板的左右移动。
南京信息职业技术学院-----VB 动画设计与制作
南京信息职业技术学院-----VB 动画设计与制作
南京信息职业技术学院-----VB动画设计与制作