个性化猜牌游戏 猜数游戏.doc_第1页
个性化猜牌游戏 猜数游戏.doc_第2页
个性化猜牌游戏 猜数游戏.doc_第3页
个性化猜牌游戏 猜数游戏.doc_第4页
个性化猜牌游戏 猜数游戏.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告课程:可视化程序设计班级:姓名: 学号:成绩:指导教师:实验日期:实验密级:预习程度:实验时间:仪器组次:E13必修/选修:选修实验序号:3实验名称:实验三 可视化基础编程实验目的与要求:1、熟练掌握VB.NET的窗体和基本控件编程,掌握小型游戏的设计与实现2、培养运用VB.NET编程解决司题的能力,提高计算机编程能力;3、引导和培养具有认真严谨的实验态度和勇于实践的学习精神。实验仪器:名称型号数量微机1一、实验内容(一) 猜数游戏1、实验题目 由计算机随机产生一个1,100间的整数,给用户猜测,每次给出猜大了还是猜小了的提示。最多猜5次,5次均猜错即为输,5次猜数中有一次猜对即赢(可灵活修改、条件可自行根据需要设定)。要求:n 单击【开始】按钮可开始游戏,完成猜数后可重新开始猜数游戏。n 不允许窗口最大化、不允许调整窗口大小,窗口中显示游戏说明。n 用户输入后,在窗口中有相应信息的显示输出(ListBox)。 为便于理解题意,程序执行结果请参考下图。2、编程设计思想n 采用了面向对象的程序设计思想,通过VB的抽象模型Windows Forms来编写窗口类和其他的类;n 采用了消息映射的程序设计思想,通过VB的消息映射的机制,可以对按钮窗口的行为进行定义,从而满足我们对其的需要;n 具体的编程思想如下1 定义变量num,每局竞猜前生成一个随机数.2 定义变量count记录当前局用户已猜的次数.3 设置按钮定位,自动判断状况定位”重新开始”按钮或”确定”按钮为默认按钮,让用户尽量省去使用鼠标,可直接通过按键盘实现整个游戏过程.4 通过DoEvent函数和循环语句,实现窗口的放大和缩小,且将动画过程显现给用户观看.避免唐突.5 对图片实现隐藏,在用户赢或输的那个状态才显示图片,其余时刻只显示输入框.6 使用try_catch来防止格式输入错误.7 每轮猜测都有猜大或猜小的提示.当输赢图片遮挡住状态框时,将显示当前猜测次数的文本框的文档改成输赢状态鼓励语句.来告知用户结果。8 每轮猜测后自动清空输入框,让用户不用手动清除数据就可实现下一轮猜测,使程序的使用更为便利。3、事件机制应用本实验采用如下的事件机制,如表所示事件名称事件描述Button1_Click第一次触发时为“开始”,即DoEvent,让程序界面变大,之后每次触发为游戏重新开始。Button2_Click退出程序按钮Button3_Click“确定”,用户向系统反馈用户猜测的数据4、程序源代码设计 (一)游戏开始界面设置及开启新一轮游戏 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click AcceptButton = Button3 If (Button1.Text 重新开始) Then Button1.Text = 重新开始 For i = 0 To 100 Me.Width = 461 + 2 * i Me.Height = 441 + i Application.DoEvents() 更新窗口,使窗口能被用户响应 Next PictureBox1.Width = 300 PictureBox1.Height = 400 PictureBox2.Width = 300 PictureBox2.Height = 400 TextBox2.Visible = True Button3.Visible = True AcceptButton = Button3 Button3.Focus() TextBox2.Clear() TextBox3.Visible = True TextBox3.Width = 300 TextBox3.Height = 400 TextBox2.Focus() Else TextBox3.Visible = True TextBox2.Clear() Button3.Focus() TextBox2.Focus() TextBox2.Enabled = True Button3.Enabled = True End If PictureBox2.Visible = False PictureBox1.Visible = False TextBox2.Focus() TextBox3.Text = TextBox3.Text & 新游戏开始啦 & vbCrLf count = 1 num = Int(Rnd() * 100) + 1 Label1.Visible = True Label1.Text = 请进行第 & count & 次尝试End Sub(二)关闭程序 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click EndEnd Sub(三)游戏状态 Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click TextBox2.Focus() Dim guess% Try guess = TextBox2.Text Catch ex As Exception MsgBox(格式输入错误,请重新输入, MsgBoxStyle.Exclamation, 警告) Return End Try TextBox3.Text = TextBox3.Text & 第 & count & 次机会: & guess & vbCrLf If (guess num) Then TextBox3.Text = TextBox3.Text & 这个数略大呢猜个小点的试试吧 & vbCrLf ElseIf (guess 5) Then tm = 0 For i As Integer = 0 To 2 img(i) = pic(i).Image.Clone Next Timer1.Enabled = False pic(0).Image = PictureBox4.Image pic(1).Image = PictureBox4.Image pic(2).Image = PictureBox4.Image chou = True Return End If Dim im As Image n = Int(Rnd() * 96) Mod 3 While (m = n) m = Int(Rnd() * 96) Mod 3 End While im = pic(n).Image.Clone pic(n).Image = pic(m).Image pic(m).Image = im If (nums = n) Then nums = m ElseIf nums = m Then nums = n End If End Sub Private Sub PictureBox5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox5.Click If (chou = True) Then PictureBox5.Image = img(0) Timer2.Enabled = True End If End Sub Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick Static num As Boolean = False If (num) Then Timer2.Enabled = False If (nums = 0) Then Success() Else Fail() End If PictureBox5.Image = PictureBox4.Image Else num = Not num End If End Sub Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick Static num As Boolean = False If (num) Then Timer3.Enabled = False If (nums = 1) Then Success() Else Fail() End If PictureBox6.Image = PictureBox4.Image num = False Else num = Not num End If End Sub Private Sub PictureBox7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.Click If (chou = True) Then PictureBox7.Image = img(2) Timer4.Enabled = True End If End Sub Private Sub PictureBox6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox6.Click If (chou = True) Then PictureBox6.Image = img(1) Timer3.Enabled = True End If End Sub Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick Static num As Boolean = False If (num) Then Timer4.Enabled = False If (nums = 2) Then Success() Else Fail() End If PictureBox7.Image = PictureBox4.Image num = False Else num = Not num End If End Sub Private Sub Success() MsgBox(不错嘛猜对了!) chou = False Button1.Enabled = True mark = mark + NumericUpDown1.Value NumericUpDown1.Maximum = mark Label1.Text = 你的所有财产: & mark & Chr(10) & Chr(13) & 现有资金: & mark - NumericUpDown1.Value End Sub Private Sub Fail() MsgBox(小样你猜错了哟!) chou = False Button1.Enabled = True pic(nums).Image = img(nums) mark = mark - NumericUpDown1.Value NumericUpDown1.Maximum = mark If (mark = 0) Then MsgBox(oh,oh,穷光蛋,你没钱了呢!) Button1.Text = 豪赌一下 chou = False mark = 1000 End If Label1.Text = 你的所有财产: & mark & Chr(10) & Chr(13) & 现有资金: & mark - NumericUpDown1.Value End Sub Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged Label1.Text = 你的所有财产: & mark & Chr(10) & Chr(13) & 现有资金: & mark - NumericUpDown1.Value End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) nums = 0 PictureBox5.Image = PictureBox4.Image PictureBox6.Image = PictureBox4.Image PictureBox7.Image = PictureBox4.Image chou = False mark = 1000 Label1.Text = 你的所有财产: & mark & Chr(10) & Chr(13) & 现有资金: & mark - NumericUpDown1.Value End Sub Private Sub OvalShape1_Click(sender As Object, e As EventArgs) Handles OvalShape1.Click If (count 5) Then count = count + 1 MsgBox(恭喜贷款获得200元现金礼券!你还有 & (5 - count) & 次贷款机会, MsgBoxStyle.Critical, 银行鸭的贷款系统) mark = mark + 200 Label1.Text = 你的所有财产

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论