小时候经典游戏用VB编的编写实例教程大全全!
(完整版)vb小游戏代码
数字排序小游戏Option ExplicitDim Label2X As Integer '记录标签控件数组中要移动的标签控件左上角X的位置Dim Label2Y As Integer '记录标签控件数组中要移动的标签控件左上角Y的位置'让标签数组中的每个标签控件上显示的数字是随机的,无重复的Private Sub Init()RandomizeDim a(7) As IntegerDim i As Integer, k As IntegerLabel1.Caption = ""For i = 0 To 7a(i) = iNextFor i = 0 To 7k = Int(Rnd * 8)Do While a(k) = -1 'a(k)=-1表示该数组元素对应的数字已经被使用过了k = Int(Rnd * 8) '重新生成k的值,直到a(k)的值不等于-1LoopLabel2(i).Caption = Trim(Str(a(k)))a(k) = -1 'a(k)的值已经使用了,不能再用,重新赋值为-1与其他的元素值相区别Next iEnd SubPrivate Sub Command1_Click()Dim x As Integer, y As IntegerDim z As IntegerInitPicture1.Enabled = True'让空白标签Label1出现的位置随机Randomize'记录下空白标签Label1的位置x = Label1.Lefty = Label1.Topz = Int(Rnd * 8)'将空白标签Label1和标签控件数组任一控件交换位置Label1.Move Label2(z).Left, Label2(z).TopLabel2(z).Move x, yCommand1.Enabled = FalseEnd SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Form_Load()Dim i As IntegerPicture1.Enabled = False'在标签中显示游戏说明信息Label3.Caption = "如左图所示,将数字按0-7顺" & vbCrLf & vbCrLf & "序依次排列,即取得胜利。
VB游戏创意编程
任务:你准备用“两个物体的相遇”编写一
个什么样的游戏呢?请写出游戏规则。
接香蕉
。。。。。。
?
相遇
?
?
?
谢 谢!
常用的游戏创意方法
1、变一变
共同点:通过代码改变控件的Visible属性 不同点:控制对象不同,一个是image控件,一个是label控件
2、反一反
共同点:x=x±1
3、扩一扩
一个僵尸扩充为3个不同对象
4、一词双意
点亮星星(点击闪烁的星星得分) 垃圾分类(点击不同垃圾桶代表将垃圾分类)
观察游戏,思考游戏中用到了哪些VB知识?
规则: 用鼠标移动猴子接下落的香蕉,
接到就重新来过。
复习: 1、标出图中控(Left+width,top)
(Left,top+height) (Left+width,top+height)
2、利用坐标判断两个物体是否相遇,并在程序中验证
(Left,top)
(Left+width,top)
(Left,top+height) (Left+width,top+height)
banana在monkey的左边: 判断依据: banana的右边界在monkey左边界的左边
banana.left+banana.width<monkey.left VB表达式:
用VB编写的弹球游戏
用VB编写的弹球游戏整理编写:西贝一哲QQ:710886275 一、功能描述:用VB设计编写一个弹球游戏,使球在向上或左右方向碰壁反弹,下部有一可左右水平移动的挡板,当小球接触挡板时,小球反弹,否则小球出界,即游戏失败,小球每接触次挡板,加10分,当得分是10的倍数时,挡板缩短,小球移动加快,致使难度增加,得分90时游戏结束。
二、使用的控件只列出控件数目、Name及功能,具体的属性设置请对照代码自行确定和修改。
Picture:游戏窗口,里面画小球和挡板,Name为PicGameWindowShape:画小球,Name为BallLine:画挡板,Name为PlateLable:三个标签,分别显示“得分”、“用时”和“点击‘继续’恢复游戏”(Name为LabPause)Textbox:两个,分别用于显示得分(ScoresGet)和用时(TimeUse)Timer:两个,Timer1控制球的移动,Timer2用于计时Command:三个,开始(BeginGame)、暂停(PauseGame)和结束(OverGame)三、程序窗口和代码Dim Time%, key%, Score%, a#, y#, PicWinWit%, PlaLonger% Private Sub Form_Load()'游戏初始化PicWinWit = PicGameWindow.WidthPlaLonger = Plate.X2 - Plate.X1Plate.X1 = PicWinWit / 2 - PlaLonger / 2Plate.X2 = PicWinWit / 2 + PlaLonger / 2Timer1.Interval = FalseTimer2.Enabled = FalseScore = -10Time = 0Shape1.Left = (Plate.X1 + Plate.X2) / 2 - Shape1.Height / 2 Shape1.Top = Plate.Y1 - Shape1.HeightEnd SubPrivate Sub BeginGame_Click()Dim m%, n%PicGameWindow.SetFocusTimer1.Interval = 100Timer1.Enabled = TrueTimer2.Interval = 1000Timer2.Enabled = TrueRandomizem = Int(Rnd * 1) + 0If m = 0 ThenRandomizea = Int(Rnd * (46 * 3.1416 / 180)) + 30 * 3.1416 / 180y = 100 * Abs(Tan(a))Else: Randomize'平移移动量和竖直移动量的夹角a = Int(Rnd * (46 * 3.1416 / 180)) + 105 * 3.1416 / 180'确定单位时间内水平移动量,求出竖直移动量y = 100 * Abs(Tan(a))End IfEnd SubPrivate Sub PauseGame_Click()If PauseGame.Caption = "暂停" ThenTimer1.Enabled = FalseTimer2.Enabled = FalseLabPause.Visible = TrueBeginGame.Enabled = FalseOverGame.Enabled = FalsePauseGame.Caption = "继续"ElsePicGameWindow.SetFocusTimer1.Enabled = TrueTimer2.Enabled = TrueLabPause.Visible = FalseBeginGame.Enabled = TrueOverGame.Enabled = TruePauseGame.Caption = "暂停"End IfEnd SubPrivate Sub OverGame_Click()'挡板位置初始化Plate.X1 = PicGameWindow.Width / 2 - PlaLonger / 2Plate.X2 = PicGameWindow.Width / 2 + PlaLonger / 2Timer1.Interval = FalseScoresGet.Text = ""Timer2.Enabled = FalseTimer1.Enabled = FalseTimeUse.Text = ""Score = -10Time = 0'球位置初始化Shape1.Left = (Plate.X1 + Plate.X2) / 2 - Shape1.Height / 2Shape1.Top = Plate.Y1 - Shape1.HeightEnd SubPrivate Sub PicGameWindow_KeyDown(KeyCode As Integer, Shift As Integer) key = KeyCodeSelect Case KeyCode'如果按下左箭头,则板子向左移动(37是左键的编码)Case 37If Plate.X1 <= 0 ThenPlate.X1 = 0ElsePlate.X1 = Plate.X1 - 100Plate.X2 = Plate.X2 - 100End If'如果按下右箭头,则板子向右移动Case 39If Plate.X2 >= PicGameWindow.Width ThenPlate.X2 = PicGameWindow.WidthElsePlate.X1 = Plate.X1 + 100Plate.X2 = Plate.X2 + 100End IfEnd SelectEnd SubPrivate Sub PicGameWindow_KeyUp(KeyCode As Integer, Shift As Integer) key = KeyAsciiEnd SubPrivate Static Sub Timer1_Timer()Dim n%, m%, i%'使球碰壁反弹的条件If Shape1.Left <= 0 Thenn = 0End IfIf Shape1.Left >= PicGameWindow.Width - Shape1.Height - 100 Thenn = 1End IfSelect Case (n)Case 0'小球每次移动长度为60+60=120Shape1.Left = Shape1.Left + 50Case 1Shape1.Left = Shape1.Left - 50End Select'球遇到挡板反弹的条件If Shape1.Top + Shape1.Height >= Plate.Y1 And Shape1.Left <= (Plate.X2 - Shape1.Width / 2) And Shape1.Left >= (Plate.X1 - Shape1.Width / 2) Thenm = 0Score = Score + 10ScoresGet.Text = Str(Score) + "分"'当得分是10的倍数时,挡板的长度减少,小球移动时间间隔也缩短If Score Mod 10 = 0 And Timer1.Interval > 50 ThenPlate.X1 = Plate.X1 + 50Plate.X2 = Plate.X2 - 50Timer1.Interval = Timer1.Interval - 4End IfEnd IfIf Shape1.Top <= 0 Thenm = 1End IfSelect Case (m)Case 0Shape1.Top = Shape1.Top - yCase 1Shape1.Top = Shape1.Top + yEnd SelectIf Shape1.Top > Plate.Y1 Then' Timer1.Enabled = Falsei = MsgBox("你输了!", vbInformation, "结果")'游戏失败后重新初始化If i = 1 ThenPlate.X1 = PicGameWindow.Width / 2 - PlaLonger / 2Plate.X2 = PicGameWindow.Width / 2 + PlaLonger / 2Timer1.Interval = 0ScoresGet.Text = ""Timer2.Enabled = FalseTimeUse.Text = ""Score = -10Time = 0Shape1.Left = (Plate.X2 + Plate.X1) / 2 - Shape1.Width/2Shape1.Top = Plate.Y1 - Shape1.HeightEnd IfEnd If'游戏完成的条件If Score > 80 ThenMsgBox "祝贺你,游戏完成!"ScoresGet.Text = ""TimeUse.Text = ""'游戏通过后重新初始化Timer1.Enabled = FalseTimer2.Enabled = FalseTimer1.Enabled = flaseTimer1.Interval = 100Score = -10Time = 0Plate.X1 = PicGameWindow.Width / 2 - PlaLonger / 2Plate.X2 = PicGameWindow.Width / 2 + PlaLonger / 2Shape1.Left = PicGameWindow.Width / 2 - Shape1.Height / 2 Shape1.Top = Plate.Y1 - Shape1.HeightEnd IfEnd SubPrivate Sub Timer2_Timer()Time = Time + 1TimeUse.Text = Str(Time) + "秒"End Sub。
VB编写猜数字小游戏教程
VB编写猜数字小游戏傻瓜教程本人原创,只在百度文库发布,希望对想学习VB的朋友有所帮助,提高学习VB的兴趣。
本文以VB6为例介绍编写一个最简单的猜数字小游戏过程,VB6在百度上很容易搜索到,本文所需要控件极少,安装一个大小只有6MB的VB6精简版就可以体验了。
不敢说“抛砖引玉”,只怕抛个小砖换来个板儿砖。
总之,本文重点不是从零开始学VB,主要是介绍编写这个小游戏的过程。
首先,启动VB,然后点击文件菜单,点击新建一个工程,即可出现如下界面。
按照下图红色箭头的指向,鼠标在左侧工具条上拖一个文本标签、一个文本输入框、一个按钮到工程界面里边来,然后调整大小和位置大概跟下图比例差不多就行了。
接着,点击label标签,在右边属性窗口里调整字体大小为三号字,因为默认的字体太小了,不爽。
什么?三号字还小?那你自己看着办吧,但我可要告诉你哦,等下显示的内容超出显示区域可别怪我。
改好了吗?本次编程就这三个控件,菜吧?现在双击工程界面的空白区域,不要点在控件上了哦。
双击空白区域后,就弹出了代码编写窗口。
按照下图把代码一个一个给我打上去。
都好几分钟了,打上去了吗?哦,忘了告诉你,复制下面的代码也是一样的。
代码:Dim cai As Integer '定义一个变量用来存储欲猜的数字Private Sub Form_Load()Randomize '重设随机因子Label1.Caption = "请填入你猜测的数字" '让label1显示为空Text1.T ext = "" '让text1文本显示为空Command1.Caption = "确定" '让command1显示为"确定"cai = Int(Rnd * 899) + 100 '随机选择一个三位数作为欲猜的数字End Sub以上代码都做了注释,就不需要过多说明了。
VB小游戏设计-V1
VB小游戏设计-V1VB小游戏设计VB(Visual Basic)是一种广泛使用的编程语言,既可以编写应用程序,也可以编写小游戏。
在本文中,我们将介绍如何使用VB制作小游戏。
步骤 1:选择游戏类型在开始之前,您需要选择您想要制作的游戏类型。
VB可以制作多种类型的小游戏,如拼图游戏、图形平台游戏、扫雷游戏等等。
根据自己的兴趣和能力,选择一个适合自己的游戏类型。
步骤 2:设计游戏场景游戏场景是游戏的基础,在VB中,可以使用Form来设计游戏场景。
在设计游戏场景时,您需要考虑场景的大小、背景图、游戏元素的位置等等。
根据游戏类型的不同,设计方式也会有所不同。
步骤 3:添加游戏元素游戏元素是游戏的主体,它们包括游戏角色、游戏道具、游戏关卡等等。
在VB中,可以使用PictureBox或其他控件来表示游戏元素。
您需要根据游戏类型和游戏场景来添加游戏元素,并设置它们的属性和事件。
步骤 4:编写游戏逻辑游戏逻辑是游戏的核心,它定义了游戏规则和游戏流程。
在VB中,可以使用代码编写游戏逻辑。
您需要根据游戏类型和游戏元素来编写游戏逻辑,并处理游戏事件、计算得分等等。
步骤 5:测试和调试在完成游戏逻辑后,您需要对游戏进行测试和调试。
测试可以发现游戏中的bug和漏洞,而调试可以解决这些问题。
在测试和调试过程中,您需要不断地修改代码,并进行多次测试,直到游戏完美地运行。
总结VB小游戏设计需要经过多个步骤,包括选择游戏类型、设计游戏场景、添加游戏元素、编写游戏逻辑和测试和调试等等。
只有经过耐心的努力和不懈的追求,才可以制作出一款优秀的VB小游戏。
VB实战进阶之拼图游戏
VB实战进阶之拼图游戏许多VB初学者都有这样的感觉,VB基本概念的学习很容易入门,但实际编程时却常常感到无从着手。
因此,从实例学编程,对提高初学者的水平,是十分有益的。
本文以一个拼图益智小游戏的原形为实例,介绍VB编程的一些技巧。
游戏介绍:这是一个简单的益智拼图游戏。
如图一所示,窗体上有顺序排列有九张图片,图片1-8显示数字1-8,第九张为空白图片。
点击“开局”按钮后,程序随机排列九张图片(如图二),游戏者单击与空白图片相邻的图片可以交换该图片与空白图片的位置。
游戏者需要开动脑筋,移动并重新排列九张图片的位置,直至恢复出开局前所示的排列顺序为赢。
(图一)(图二)准备工作:用Photoshop或其它图像处理软件制作九个图像文件P1.jpg,P2.jpg……P9.jpg,除一张为空白外,图片上依次显示1-8个数字。
程序编写:1、新建一Project,在Form1上放置CommandButton类型的控件Command1,将Caption属性设置为“开局”。
2、在窗体中放置一PictureBox控件,Name为Picture1。
在该控件有焦点时,从Edit菜单中选择Copy。
然后,再从Edit菜单中,选择Paste。
这时,VB 会显示一个对话框,确认是否要创建一个控件数组,显示Yes以确认该动作。
此时控件被赋予的索引值为1。
此前画的第一个PictureBox控件的索引值为0。
重复此过程放置其余七个控件数组成员。
将PictureBox1(0)—PictureBox1(8)的Picture属性依次设为P1.jpg、P2.jpg……P9.jpg。
技巧提示:用控件数组增加控件比单纯将多个同类型的控件加到窗体上占用更少的资源。
如果想让几个控件共享代码,控件数组也很有用。
每个新的数组元素的索引值都对应于该元素加入控件数组时的顺序。
当控件以这种方式加入时,大多数直观的属性(如高度、宽度和颜色)都被从控件数组的第一个控件中复制到新控件中。
VB扫雷小游戏编程代码
VB扫雷小游戏一.编程目的二.编程思路1.新建command_up和label_down控件2.用load加载控件3.根据雷区的X、Y、以及难度进行随机布雷。
4.统计每一个label周围雷的数量并作为label的caption。
5.在单击command的时候显示label6.在右击command的时候进行标记7.在label上左右键同时按下的时候检查已标记雷的数量与label显示的数量是否一致。
三.界面设计四.代码设计Dim Start_Time, End_TimeDim Area_X%, Area_Y%, Area%, Area_List()Dim Current_Mine%Dim Difficulty#Dim Continue_Flag%, Success_Flag%, LeftAndRight_Flag%Dim Near_ListDim Mine_CountPrivate Sub Command_End_Click()EndEnd SubPrivate Sub Delete_Item(List(), Index As Integer)Dim i%For i = LBound(List) + Index - 1 To UBound(List) - 1List(i) = List(i + 1)Next i'防止100%的困难度If UBound(List) > LBound(List) Then ReDim Preserve List(LBound(List) To UBound(List) - 1) End SubPrivate Sub Command_retry_Click()'卸载For i = 1 To AreaUnload Label_Down(i)Unload Command_Up(i)Next iCommand_Start.Caption = "开始游戏"Call Command_Start_ClickEnd SubPrivate Sub Command_Up_Click(Index As Integer)Success_Flag = 1If Continue_Flag = 1 ThenIf Timer1.Enabled = False Then Call Command_Start_ClickIf Label_Down(Index).Caption = "X" ThenSuccess_Flag = 0Continue_Flag = 0For i = 1 To AreaIf Command_Up(i).Visible = True And Command_Up(i).Caption = "X" And Label_Down(i).BackColor = vbRed Then'标记雷正确Command_Up(i).Picture = LoadPicture(App.Path + "\pictures\mine_correct.gif", , , Command_Up(i).Width, Command_Up(i).Height)Command_Up(i).Visible = TrueLabel_Down(i).Visible = TrueElseIf Command_Up(i).Visible = True And Command_Up(i).Caption = "X" And Label_Down(i).BackColor = vbGreen Then'标记雷错误Command_Up(i).Picture = LoadPicture(App.Path + "\pictures\mine_wrong.gif", , , Command_Up(i).Width, Command_Up(i).Height)Command_Up(i).Visible = TrueLabel_Down(i).Visible = TrueElseCommand_Up(i).Visible = FalseLabel_Down(i).Visible = TrueEnd IfNext iTimer1.Enabled = Falsetemp = MsgBox("Game Over !", vbOKOnly, "游戏结束")ElseIf Val(Label_Down(Index).Caption) > 0 ThenCommand_Up(Index).Visible = FalseLabel_Down(Index).Visible = TrueElse'如果等于0的话应该将周边的清零Command_Up(Index).Visible = FalseLabel_Down(Index).Visible = Truej = IndexFor i = 1 To 8'判断控件是否存在If j + Near_List(i) > 0 And j + Near_List(i) <= Area Then'判断是否相邻If Abs(Label_Down(j + Near_List(i)).Left -Label_Down(j).Left) <= Label_Down(j).Width And Abs(Label_Down(j + Near_List(i)).Top -Label_Down(j).Top) <= Label_Down(j).Height Then'判断是否有雷If Label_Down(j + Near_List(i)).BackColor = vbGreen And Command_Up(j + Near_List(i)).Visible = True ThenCall Command_Up_Click(j + Near_List(i)) '注意此处循环调用的时候一定要避免陷入死循环End IfEnd IfEnd IfNext iEnd If'检查是否游戏成功For i = 1 To AreaIf Command_Up(i).Visible = True And Label_Down(i).Caption <> "X" ThenSuccess_Flag = 0Exit ForEnd IfNext iIf Success_Flag = 1 ThenIf Continue_Flag = 1 ThenTimer1.Enabled = FalseFor i = 1 To AreaIf Command_Up(i).Visible = True And Command_Up(i).Caption = "X" And Label_Down(i).BackColor = vbRed Then'标记雷正确Command_Up(i).Picture = LoadPicture(App.Path + "\pictures\mine_correct.gif", , , Command_Up(i).Width, Command_Up(i).Height)Command_Up(i).Visible = TrueLabel_Down(i).Visible = TrueElseIf Command_Up(i).Visible = True And Command_Up(i).Caption = "X" And Label_Down(i).BackColor = vbGreen Then'标记雷错误Command_Up(i).Picture = LoadPicture(App.Path + "\pictures\mine_wrong.gif", , , Command_Up(i).Width, Command_Up(i).Height)Command_Up(i).Visible = TrueLabel_Down(i).Visible = TrueElseCommand_Up(i).Visible = FalseLabel_Down(i).Visible = TrueEnd IfNext itemp = MsgBox("恭喜,扫雷成功!" & vbCrLf & "耗时:" & Mid(Label_Time.Caption, 4) & vbCrLf & "鸣谢:平方X O(∩_∩)O~", vbOKOnly, "成功") End IfContinue_Flag = 0 '提示一次后结束,防止在调用Command_Click事件中重复提示End IfEnd IfCommand_Start.SetFocusEnd SubPrivate Sub Command_Start_Click()If Command_Start.Caption = "开始游戏" ThenCommand_Start.Caption = "重新开始"Continue_Flag = 1Timer1.Enabled = TrueDifficulty = Val(Text_Difficulty.Text) / 100Area_X = Val(Text_X.Text)Area_Y = Val(Text_Y.Text)Area = Area_X * Area_Y'初始化这里进行二次初始化的原因是如果在之前的运行中对字体进行了改变,将有可能造成此处的控件大小发生变化With Picture_show.Left = 200.Top = 200.Width = 750 * 10.Height = 750 * 10.Visible = FalseEnd WithWith Command_Up(0).Left = Picture_show.Left.Top = Picture_show.Top.Width = Picture_show.Width / 10.Height = Picture_show.Height / 10.FontSize = 1 '防止自动缩放.Visible = FalseEnd WithWith Label_Down(0).Left = Picture_show.Left.Top = Picture_show.Top.Width = Picture_show.Width / 10.Height = Picture_show.Height / 10.FontSize = 1 '防止自动缩放.Visible = FalseEnd WithWith Label_Down(0).Left = 200.Top = 200.Width = 750 * 10 / IIf(Area_X > Area_Y, Area_X, Area_Y).FontSize = 25 * (.Width / 750) '会自动缩放,必须先设置了.Height = 750 * 10 / IIf(Area_X > Area_Y, Area_X, Area_Y).Visible = FalseEnd WithWith Command_Up(0).Left = 200.Top = 200.Width = Label_Down(0).Width.Height = Label_Down(0).Height.Visible = FalseEnd WithReDim Near_List(1 To 8)Near_List(1) = 0 - 1 - Area_YNear_List(2) = 0 - 0 - Area_YNear_List(3) = 0 + 1 - Area_YNear_List(4) = 0 - 1Near_List(5) = 0 + 1Near_List(6) = 0 - 1 + Area_YNear_List(7) = 0 - 0 + Area_YNear_List(8) = 0 + 1 + Area_Y'如果在列表中有相等的元素将有可能造成统计雷的数目错误For i = 1 To 8For j = i + 1 To 8If Near_List(i) = Near_List(j) Then Near_List(i) = 0Next jNext iArea_temp = 0For Y = 1 To Area_Y'加载labelFor X = 1 To Area_XArea_temp = Area_temp + 1Load Label_Down(Area_temp)With Label_Down(Area_temp).Left = Label_Down(0).Left + Label_Down(0).Width * ((Area_temp -1) Mod Area_Y).Top = Label_Down(0).Top + Label_Down(0).Height * ((Area_temp -1) \ Area_Y).BackColor = vbGreen.Visible = False.Alignment = 2.Font = .FontBoldEnd With'加载commandLoad Command_Up(Area_temp)With Command_Up(Area_temp)'对列数求余的话就是在这一行第几个了.Left = Command_Up(0).Left + Command_Up(0).Width * ((Area_temp - 1) Mod Area_Y)'整除列数的话可以确定第几行.Top = Command_Up(0).Top + Command_Up(0).Height * ((Area_temp - 1) \ Area_Y).Visible = TrueEnd WithNext XNext YReDim Area_List(1 To Area)For i = 1 To AreaArea_List(i) = iNext i' 随即布雷RandomizeMine_Count = Val(Text_Mine_Count.Text)For i = 1 To Mine_CountCurrent_Mine = Int(Rnd * (UBound(Area_List) - LBound(Area_List) + 1) + 1) '在数组中随机一个,注意此处2个+1的必要性和准确性Label_Down(Area_List(Current_Mine)).BackColor = vbRed '将该位置标记为雷Call Delete_Item(Area_List, Current_Mine) '删除该位置,防止再次标记Next i'检查雷的数目For j = 1 To AreaIf Label_Down(j).BackColor = vbRed ThenLabel_Down(j).Caption = "X"ElseMine_Number = 0For i = 1 To 8'判断控件是否存在If j + Near_List(i) > 0 And j + Near_List(i) <= Area Then'判断是否相邻If Abs(Label_Down(j + Near_List(i)).Left -Label_Down(j).Left) <= Label_Down(j).Width And Abs(Label_Down(j + Near_List(i)).Top -Label_Down(j).Top) <= Label_Down(j).Height Then'判断是否有雷If Label_Down(j + Near_List(i)).BackColor = vbRed ThenMine_Number = Mine_Number + 1End IfEnd IfEnd IfNext iLabel_Down(j).Caption = Mine_NumberEnd IfNext jStart_Time = Now()ElseIf Command_Start.Caption = "重新开始" ThenCall Command_retry_ClickEnd IfEnd SubPrivate Sub Command_Up_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = 2 ThenIf Command_Up(Index).Caption = "" ThenCommand_Up(Index).Caption = "X"Command_Up(Index).Picture = LoadPicture(App.Path + "\pictures\mine.gif", , , Command_Up(Index).Width, Command_Up(Index).Height)ElseIf Command_Up(Index).Caption = "X" ThenCommand_Up(Index).Caption = "?"Command_Up(Index).Picture = LoadPicture(App.Path + "\pictures\Unknown.gif", , , Command_Up(Index).Width, Command_Up(Index).Height)ElseIf Command_Up(Index).Caption = "?" ThenCommand_Up(Index).Caption = ""Command_Up(Index).Picture = LoadPicture("") End IfEnd IfEnd SubPrivate Sub Form_Load()With Picture_show.Left = 200.Top = 200.Width = 750 * 10.Height = 750 * 10.Visible = FalseEnd WithWith Command_Up(0).Left = Picture_show.Left.Top = Picture_show.Top.Width = Picture_show.Width / 10.Height = Picture_show.Height / 10.FontSize = 1 '防止自动缩放.Visible = FalseEnd WithWith Label_Down(0).Left = Picture_show.Left.Top = Picture_show.Top.Width = Picture_show.Width / 10.Height = Picture_show.Height / 10.FontSize = 1 '防止自动缩放.Visible = FalseEnd With'加载计时器Timer1.Enabled = FalseTimer1.Interval = 100'加载滚动条With HScroll_Difficulty.LargeChange = 5.SmallChange = 1.Max = 100.Min = 0.Value = 10End WithWith HScroll_Area_X.LargeChange = 5.SmallChange = 1.Max = 100.Min = 1.Value = 10End WithWith HScroll_Area_Y.LargeChange = 5.SmallChange = 1.Max = 100.Min = 1.Value = 10End WithWith HScroll_Mine_Count.LargeChange = 5.SmallChange = 1.Max = 100.Min = 0.Value = 10End With'由于很多数据不方便处理,索性让其禁用了Text_Difficulty.Enabled = FalseText_Mine_Count.Enabled = FalseText_X.Enabled = FalseText_Y.Enabled = FalseEnd SubPrivate Sub HScroll_Area_X_Change()Text_X.Text = HScroll_Area_X.ValueHScroll_Mine_Count.Max = HScroll_Area_X.Value * HScroll_Area_Y.ValueHScroll_Mine_Count.Value = HScroll_Area_X.Value * HScroll_Area_Y.Value / 100 * HScroll_Difficulty.ValueEnd SubPrivate Sub HScroll_Area_X_Scroll()Text_X.Text = HScroll_Area_X.ValueHScroll_Mine_Count.Max = HScroll_Area_X.Value * HScroll_Area_Y.ValueHScroll_Mine_Count.Value = HScroll_Area_X.Value * HScroll_Area_Y.Value / 100 * HScroll_Difficulty.ValueEnd SubPrivate Sub HScroll_Area_Y_Change()Text_Y.Text = HScroll_Area_Y.ValueHScroll_Mine_Count.Max = HScroll_Area_X.Value * HScroll_Area_Y.ValueHScroll_Mine_Count.Value = HScroll_Area_X.Value * HScroll_Area_Y.Value / 100 * HScroll_Difficulty.ValueEnd SubPrivate Sub HScroll_Area_Y_Scroll()Text_Y.Text = HScroll_Area_Y.ValueHScroll_Mine_Count.Max = HScroll_Area_X.Value * HScroll_Area_Y.ValueHScroll_Mine_Count.Value = HScroll_Area_X.Value * HScroll_Area_Y.Value / 100 * HScroll_Difficulty.ValueEnd SubPrivate Sub HScroll_Difficulty_Change()Text_Difficulty.Text = HScroll_Difficulty.ValueHScroll_Mine_Count.Value = HScroll_Area_X.Value * HScroll_Area_Y.Value / 100 * HScroll_Difficulty.ValueEnd SubPrivate Sub HScroll_Difficulty_Scroll()Text_Difficulty.Text = HScroll_Difficulty.ValueHScroll_Mine_Count.Value = HScroll_Area_X.Value * HScroll_Area_Y.Value / 100 * HScroll_Difficulty.ValueEnd SubPrivate Sub HScroll_Mine_Count_Change()Text_Mine_Count.Text = HScroll_Mine_Count.ValueHScroll_Difficulty.Value = HScroll_Mine_Count.Value / (HScroll_Area_X.Value * HScroll_Area_Y.Value) * 100End SubPrivate Sub HScroll_Mine_Count_Scroll()Text_Mine_Count.Text = HScroll_Mine_Count.ValueHScroll_Difficulty.Value = HScroll_Mine_Count.Value / (HScroll_Area_X.Value * HScroll_Area_Y.Value) * 100End SubPrivate Sub Label_Down_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)For i = 1 To 8'判断控件是否存在If Index + Near_List(i) > 0 And Index + Near_List(i) <= Area Then'判断是否相邻If Abs(Label_Down(Index + Near_List(i)).Left -Label_Down(Index).Left) <= Label_Down(Index).Width And Abs(Label_Down(Index + Near_List(i)).Top -Label_Down(Index).Top) <= Label_Down(Index).Height Then'判断是否有标记雷If Command_Up(Index + Near_List(i)).Caption <> "X" And Command_Up(Index + Near_List(i)).Caption <> "?" ThenCommand_Up(Index + Near_List(i)).Picture = LoadPicture("")End IfEnd IfEnd IfNext iEnd SubPrivate Sub label_down_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)If LeftAndRight_Flag + Button = 3 Then '双击完成Mine_Number = Val(Label_Down(Index).Caption)Mark_mine_number = 0For i = 1 To 8'判断控件是否存在If Index + Near_List(i) > 0 And Index + Near_List(i) <= Area Then'判断是否相邻If Abs(Label_Down(Index + Near_List(i)).Left -Label_Down(Index).Left) <= Label_Down(Index).Width And Abs(Label_Down(Index + Near_List(i)).Top -Label_Down(Index).Top) <= Label_Down(Index).Height Then'判断是否有标记雷If Command_Up(Index + Near_List(i)).Caption = "X" ThenMark_mine_number = Mark_mine_number + 1End IfEnd IfEnd IfNext iIf Val(Label_Down(Index).Caption) - Mark_mine_number <= 0 Then '已全部标出,自动点开For i = 1 To 8'判断控件是否存在If Index + Near_List(i) > 0 And Index + Near_List(i) <= Area Then'判断是否相邻If Abs(Label_Down(Index + Near_List(i)).Left -Label_Down(Index).Left) <= Label_Down(Index).Width And Abs(Label_Down(Index + Near_List(i)).Top -Label_Down(Index).Top) <= Label_Down(Index).Height Then'判断是否有标记雷If Command_Up(Index + Near_List(i)).Caption <> "X" ThenCall Command_Up_Click(Index + Near_List(i))End IfEnd IfEnd IfNext iElse '如果没有全部标注的话应该显示一下嘛For i = 1 To 8'判断控件是否存在If Index + Near_List(i) > 0 And Index + Near_List(i) <= Area Then'判断是否相邻If Abs(Label_Down(Index + Near_List(i)).Left -Label_Down(Index).Left) <= Label_Down(Index).Width And Abs(Label_Down(Index + Near_List(i)).Top -Label_Down(Index).Top) <= Label_Down(Index).Height Then'判断是否有标记雷If Command_Up(Index + Near_List(i)).Caption <> "X" ThenCommand_Up(Index + Near_List(i)).Picture = LoadPicture(App.Path + "\pictures\xia.gif", , , Command_Up(Index).Width, Command_Up(Index).Height)End IfEnd IfEnd IfNext iEnd IfElseLeftAndRight_Flag = Button'Print LeftAndRight_FlagEnd IfEnd SubPrivate Sub Timer1_Timer()LeftAndRight_Flag = 0End_Time = Now()spend_time = (End_Time - Start_Time) * 10 ^ 5Label_Time.Caption = "时间:" & Format(Int(spend_time) \ (60 * 60), "00") & ":" & Format((Int(spend_time) Mod (60 * 60)) \ 60, "00") & ":" & Format(Int(spend_time) Mod 60, "00") & "." & Format(Int((spend_time - Int(spend_time)) * 1000), "000")End Sub五.软件截图1 2 3。
用VB编写趣味撞球程序
用VB编写趣味撞球程序一只红色的小球在箱子中不停地弹跳,你要适当地移动下面的板子挡住,别让它掉下来。
相信许多人都玩过这样的游戏,有没有想过自己编个来玩呢?界面设计:新建一个工程,Form1的Caption属性设为“趣味撞球”,在Form1上放上一个图片框控件Picture1,一个图形控件Shape1,将Shape属性设为3,FillStyle 属性设为0,FillColor属性设为“&H000000FF&”,即红色,Shape1显示为红色实心圆作小球,一个直线控件Line1,其BorderWidth属性设为3,当做板子;一个定时器Timer1,其Interval属性设为10,Enabled属性设为False,两个标签Label1 和Label2,其Caption 属性分别为“得分”和“0”,再放两个命令按钮Command1和Command2,其Caption属性分别为“开始”和“退出”,设计好的界面如^03020501a^。
程序代码:Option ExplicitDim x_step As IntegerDim y_step As IntegerPrivate Sub Command1_Click()Timer1.Enabled = Not Timer1.Enabled'启动或停止定时器If Command1.Caption = “暂停” ThenCommand1.Caption = “继续”ElseCommand1.Caption = “暂停”End IfEnd SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Form_Load()x_step = 200'设置小球运动的速度y_step = 200End SubPrivate Sub Picture1_KeyDown KeyCode As Integer, Shift As Integer Select Case KeyCodeCase 37'如果按下左箭头,使板子向左移动If Line1.X1 <= 0 ThenLine1.X1 = 0Line1.X2 = 2000ElseLine1.X1 = Line1.X1 - 100Line1.X2 = Line1.X2 - 100End IfCase 39'如果按下右箭头,使板子向右移动If Line1.X2 >= Picture1.Width ThenLine1.X2 = Picture1.WidthLine1.X1 = Picture1.Width - 2000ElseLine1.X1 = Line1.X1 + 100Line1.X2 = Line1.X2 + 100End IfEnd SelectEnd SubPrivate Sub Timer1_Timer()If Shape1.Top <= 0 Then Shape1.Top = 0:y_step = -y_step'如果小球出了上边界便弹回If Shape1.Left <= 0 Then Shape1.Left = 0:x_step = -x_step'如果小球出了左边界便弹回If Shape1.Left >= Picture1.Width - Shape1.Width Then Shape1.Left = Picture1.Width - Shape1.Width: x_step = -x_step'如果小球出了右边界便弹回If Shape1.Top >= Line1.Y1 - Shape1.Height And Shape1.Left >= Line1.X1 And Shape1.Left <= Line1.X2 Then'如果小球撞在板子上,便弹回Shape1.Top = Line1.Y1 - Shape1.Heighty_step = -y_step* 1.01'速度增加x_step = x_step* 1.01Label2.Caption = Val(Label2.Caption) + 1End IfShape1.Top = Shape1.Top + y_step'使小球移动Shape1.Left = Shape1.Left + x_stepIf Shape1.Top >= Picture1.Height - Shape1.Height ThenMsgBox “你输了!”Timer1.Enabled = FalseCommand1.Caption = “开始”Shape1.Top = 1000Label2.Caption = 0End IfEnd Sub按“F5”键运行,小球来回跳动起来,你招架得住吗?有意思吧,快试试呀!知识点:这个程序的主要控件是Shape(形状控件)和Line(直线控件),这两个控件都是简单形状的控件。
VB编写猜数字小游戏教程
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以上代码都做了注释,就不需要过多说明了。
VB小游戏设计(1)
VB小游戏设计(1)VB小游戏设计是继承自传统手游的电脑小游戏,它被设计成小巧玲珑,娱乐性强,复杂程度不高的小游戏。
由于其操作简单,适合各个年龄段人群,因此在各个平台上都被广泛取得了支持和关注。
本文将介绍几种VB小游戏的设计,其中包括推箱子、飞行棋和2048。
一、推箱子推箱子是一款经典的益智小游戏,游戏中玩家需要通过推动不同位置上的箱子完成关卡。
其实现过程包括以下几个部分:1、设计游戏主界面;2、根据玩家的操作,在游戏主界面上添加箱子和目标位置;3、根据玩家操作后箱子和目标位置之间的距离等相关参数,检测箱子是否能够到达目标位置;4、对于箱子到达目标位置的情况,更新游戏分数并进入下一关卡;5、当玩家全部完成所有关卡后,弹出游戏通关页面。
二、飞行棋飞行棋是一款家庭娱乐游戏,游戏中玩家需要通过色子的掷骰,将自己的棋子移动到对应的目的地,首先完成游戏目标的玩家获胜。
其实现过程包括以下几个部分:1、设计游戏主界面;2、根据玩家操作,在游戏主界面上添加棋子和骰子;3、根据玩家掷骰子的点数和其是否遇到了冒险事件等参数,计算棋子的移动轨迹;4、在棋子到达目的地的情况下,计算游戏分数并判定游戏的胜负;5、当玩家全部完成所有关卡后,弹出游戏通关页面。
三、20482048是一款数字推理游戏,其规则是将相同数字的方块移动到一起,并不断合并以获得更高的分数。
其实现过程包括以下几个部分:1、设计游戏主界面;2、根据玩家操作,在游戏主界面上添加数字方块和分数板;3、根据玩家操作后数字方块之间的逻辑关系,合并相同数字方块并计算游戏分数;4、当游戏结束时,弹出游戏结束页面并显示得分。
总的来说,VB小游戏的设计需要思考游戏玩法的设计、响应时间和可玩性等方面,以确保游戏能够吸引玩家。
同时,良好的UI设计及程序的调试和维护也至关重要。
只有将这些方面的工作,协调的运用到设计中,才能够发展出一个优秀的VB小游戏。
(完整)VB实现贪吃蛇小游戏
VB实现贪吃蛇小游戏——比较适合VB初学者,属原创作品图1图2图3如图1所示,布置控件,其中有4个timer控件,1个picture控件(底图),4个command控件(上下左右),10个label控件.其他功能都在程序里实现,其中贪吃蛇都是由点来组成的,初学者主要学习一下timer控件的应用,还有贪吃蛇拐弯怎么实现的.图2、图3是游戏视图.主程序:Public a, b, f As Double: Public i, j, c, d, e, g, h, z As IntegerDim aa(100) As Double: Dim bb(100) As DoublePrivate Sub Form_Load()a = 100:b = 300:c = 4 'a、b定义第一个点(红点)位置,c能控制蓝点数量g = 2000: h = 2000Timer1.Interval = (200 — z * 30) ’定义每个定时器间隔时间 0.2STimer2。
Interval = (200 - z * 30)Timer3。
Interval = (200 — z * 30)Timer4.Interval = (200 - z * 30)Timer5。
Interval = 300Timer1。
Enabled = True '初设一开始向右走Timer2.Enabled = FalseTimer3.Enabled = FalseTimer4。
Enabled = FalseEnd SubPrivate Sub Timer1_Timer() '向右走Picture1.Cls '没循环一次就清除上一次画的图像,要不就看不出运动了Picture1.DrawWidth = 10 '定义画图粗细b = b + 100 ’b每次都加100,画图后坐标就变了aa(i) = abb(j) = bPicture1.PSet (b, a), vbRed ’绘制第一个点(红)For k = 1 To c '此k-for循环从1到c,绘制c个蓝色点If aa(99) = 0 Then '如果游戏刚开始,以下绘制方法,一开始j=0,j—k为负,bb(j—k)与aa(j-k)数组无效,因此在j〈=c时单独绘制If j <= c And i <= c Thenf = 400 - 100 * (k - j)Picture1.PSet (f, 100), vbBlueElsePicture1。
人人都会用的VB游戏小程序代码
人人都会用的VB游戏小程序代码人人都会用的 VB 游戏小程序代码3. 球来回弹在窗体上添加一shape 空间, shape 为circle ,计时器空间inteval=10 通用Dim bzPrivate Sub Timer1_Timer(If Shape1.Left >= Form1.ScaleWidth - Shape1.Width Then bz = 1 If Shape1.Left <= 0 Then bz = 0If bz = 0 Then Shape1.Left = Shape1.Left + 10If bz = 1 Then Shape1.Left = Shape1.Left - 10End Sub注意:bz 的使用(bz 为一临时标志,用于判断移动方向2. 六角星Dim i%, j%, k%For i = 1 To 10If i < 4 Or i > 6 ThenPrint Space(20 - i;For j = 1 To iPrint "○ ";Next jElsePrint Space(6 + i;For k = 14 - i To 1 Step -1 Print "○ ";Next kEnd IfPrintNext iFor i = 3 To 1 Step -1 Print Space(20 - i;For j = 1 To iPrint "○ ";Next jPrintNext i1. 空心三角形Dim i%, j%Print Space(20; "*"For i = 2 To 9Print Space(21 - i; "*"; Space(2 * i - 3; "*"NextPrint Space(10;For i = 1 To 10Print Space(1; "*";Next扩展程序Const n = 15Dim a(1 To n As IntegerDim i%, j%, t%RandomizeFor i = 1 To na(i = Int(100 * Rnd ' 生成 15个 0~100的随机整数存入数组 Next Print "排序前:"For i = 1 To nPrint a(i;NextPrintFor i = 1 To n - 1For j = i + 1 To nIf a(j < a(i Then t = a(j: a(j = a(i: a(i = tNextNextPrint "排序后:"For i = 1 To nPrint a(i;Next3. 球来回弹在窗体上添加一shape 空间, shape 为circle ,计时器空间inteval=10 通用Dim bzPrivate Sub Timer1_Timer(If Shape1.Left >= Form1.ScaleWidth - Shape1.Width Then bz = 1 If Shape1.Left <= 0 Then bz = 0If bz = 0 Then Shape1.Left = Shape1.Left + 10If bz = 1 Then Shape1.Left = Shape1.Left - 10End Sub注意:bz 的使用(bz 为一临时标志,用于判断移动方向4. 从大到小再从小到大变化在窗体添加一标签label1, autosize=true, caption="★ ", 添加一计时器空间timer1, inteval=100 通用:Dim bzPrivate Sub Timer1_Timer(If Label1.FontSize >= 72 Then bz = 1If Label1.FontSize <= 8 Then bz = 0If bz = 0 Then Label1.FontSize = Label1.FontSize + 2If bz = 1 Then Label1.FontSize = Label1.FontSize - 2End Sub5. 在 VB 中用画圆Dim x, y, i As SingleClsScale (-15, 15-(15, -15 ' 定义笛卡儿坐标系For i = 0 To 6.28 Step 0.05y = 10 * Sin(ix = 10 * Cos(iCurrentX = xCurrentY = yPrint "*"Next6. 四周循环移动创建一个窗体,在上面添加“开始”和“停止”两个按钮,添加一个计时器控件timer1 在窗体上添加一个 shape 控件,设置背景不透明,红色,调整大小程序代码如下:Option ExplicitDim bz%Private Sub Command1_Click( '开始按钮Timer1 = TrueEnd SubPrivate Sub Command2_Click( ' 停止按钮Timer1 = FalseEnd SubPrivate Sub Form_Load(Shape1.Left = 0Shape1.Top = 0Timer1 = FalseTimer1.Interval = 10End SubPrivate Sub Timer1_Timer(If Shape1.Left >= Form1.ScaleWidth - Shape1.Width And Shape1.Top <= 0 Then bz = 1If Shape1.Top >= Form1.ScaleHeight - Shape1.Height Then bz = 2If Shape1.Left <= 0 Then bz = 3If Shape1.Top <= 0 And Shape1.Left <= 0 Then bz = 0Select Case bzCase 0Shape1.Left = Shape1.Left + 10Case 1Shape1.Top = Shape1.Top + 10Case 2Shape1.Left = Shape1.Left - 10Case 3Shape1.Top = Shape1.Top - 10End SelectEnd Sub。
VB实例教学
5、多条件选择语句
Select case 测试表达式 [case 表达式列表1 语句块1] [case 表达式列表2 语句块2] …… [case Else 语句块n] End select
小结:
1、添加外部控件 生一定区间的随机整数
4、如何将图片列表中的图片加载 到图片框中 5、多条件选择语句
团结就是力量
作业
谢 谢 指 导 !
VB实例教学——
剪刀石头布小游戏
江山职教中心
授课人:吴建浩
课题:剪刀石头布
1、添加外部控件
方法:右击工具箱空白处,在快捷 菜单中选“部件”,后选中 Microsoft windows common controls6.0
2、ImageList控件的使用 方法:右击此控件后选“属性”, 在属性页对话框中选“图像”选项 卡,接着将相应图片插到图片列表 中(注意每张图片的序号)
3、产生一定区间的随机整数 [下限,上限]
方法:INT(Rnd*(上限-下限+1)+下限)
例1:要产生【0,9】的随机整数 用公式=INT(Rnd*10) 例2:要产生【1,20】的随机整数 用公式=INT(Rnd*20+1) 产生【1,3】的随机整数 用公式= INT(Rnd*3+1)
4、如何将图片列表中的图片加载 到图片框中
用VB编程实现锤子、剪刀、布游戏
用VB编程实现锤子、剪刀、布游戏VB中的IF语句应用--用VB编程实现锤子、剪刀、布游戏一、基本说明2、教学内容1)教学内容所属模块:算法与程序设计二、教学设计1、教学目标:让学生亲身编写一个儿时玩过的锤子、剪刀、布游戏程序来感受计算机程序解决问题的过程,了解用高级语言编程工具解决问题的基本方法,特别是熟练掌握IF语句的应用,感悟计算机程序设计的思想,了解计算机程序设计的基本流程,激发学生对信息技术的求知欲,提高其学习兴趣,形成积极主动学习信息技术的态度。
2、内容分析:本节课的内容结构是:首先请每相邻的2个同学一起玩儿时的锤子、剪刀、布游戏,通过解剖这段程序让学生了解程序设计的基本思想和流程。
在练习中,让学生编写运行程序,亲身感受计算机程序解决问题的过程。
重点难点分析:(1)教学重点:在高级语言环境中编写并执行一段程序代码,了解其工作过程VB中的IF语句、以及随机函数(2)教学难点:剖析程序,了解其结构组成和具体作用,认识计算机程序设计的基本流程熟练掌握VB中的IF语句、以及随机函数的使用如何把简单的游戏过程转化为计算机容易解决的编程方法上3、学情分析:4、设计思路:1、教学方法设计逐步建立起自主性和研究性的学习模式,从而更加突出学生在教学过程中的主体地位。
使学生在具体活动中理解信息技术的基本知识,掌握信息处理的基本技能,并能够灵活应用到学习和生活中。
2、关于教学流程和教学活动的设计执行VB编写的锤子、剪刀、布游戏小程序,让学生了解计算机程序的工作过程玩锤子、剪刀、布游戏学生游戏由玩游戏的方法和步骤引导出计算机解决问题的方法的步骤,即"算法" 剖析部分程序,让学生举一反三让学生们总结游戏方法和步骤,分析如何用计算机编程实现如何玩这个游戏的,得出每次出都是随机教学总结评论交流学生作品学生上机练习让学生更深的感受编程解决问题的能力运行程序提出问题分析问题引出"算法"剖析程序学生练习教学总结评价交流教学提升三、教学过程描述1(教与学的过程描述教学环节及时间教师活动学生活动对学生学习过程的观察和考查设计意图引入课题(3分钟)要求玩儿时游戏演示VB样例程序每2个同学玩游戏观察VB样例程序引导学生对比人和计算机玩游戏引入课题提出问题(2分钟)在VB中如何编写这个程序呢,学生讨论,互相探讨听学生讨论,引导学生得出"随机"思想进入主题分析问题(5分钟)得出随机思想,提出如何转化为剖析程序上机练习(20分钟)辅导学生上机练习安排能力好的同学帮助有困难的同学学生设计界面、编写代码、调试代码辅导学生上机练习,观察学生谁做出了好的作品,解决学生的疑难点互助协作评价交流(3分钟)对好的作品进行评价,对出现的错误进行分析看老师演示作品相互交流作品观察学生,看其对自己的作业是否满意,是否有成就感相互交流总结 (2分钟)一起总结这个程序的编程思想和流程和老师一起回顾并总结看学生在老师的引导下能不能自己总结出来回顾总结感悟提升(1分钟)让学生使用准备好的VB开发的程序和软件,让学生对程序解决问题有更深的了解。
打地鼠类小游戏VB代码解析
Private Sub Image1_Click(Index As Integer)
For i = 0 To 11
If Image1(i) = Image2 Then
Image1(i) = Image3
f = f + 10
Call Image2_Click
Else
Call Image3_Click
Call Image2_Click
End If
i = i + 1
Next i
= hp
= a
= f
End Sub
Private Sub Image2_Click()
a = 10
= True
i = Int(Rnd * 12)
If i = 0 Then Image1(0) = Image2
If i = 1 Then Image1(1) = Image2
二、此刻咱们开始在Form1窗体的相应位置放置花瓶图像,在窗体上放置图像框控件Image1,然后拷贝、粘贴变成一个控件组,包括十二个图像框控件Image1(0)-----------Image1(11),
Image1(0)-------------------Image1(11)控件的picture的属性为:
VB编写各种趣味小程序(附代码)
VB编写各种趣味小程序(附代码)一、鸟巢绘制二、加密三、解密四、蝴蝶飞舞五、文本编辑六、统计七、小球跳动八、计算器(彩票摇奖)九、学生信息录入十、矩阵转置十一、带有进度条的倒计时程序十二、加减乘除随机数题十三、计算器十四、抽奖一、鸟巢绘制Private Sub Form_Click()ClsDim r, xi, yi, xj, yj, x0, y0, aif As Singler = Form10.ScaleHeight / 2x0 = Form10.ScaleWidth / 2y0 = Form10.ScaleHeight / 2n = 16aif = 3.14159 * 2 / nFor i = 1 To nxi = r * Cos(i * aif) + x0yi = r * Sin(i * aif) + y0For j = i To nxj = r * Cos(j * aif) + x0yj = r * Sin(j * aif) + y0Line (xi, yi)-(xj, yj), QBColor(i - 1)PSet (xi, yi)Print i - 1Next jNext iEnd SubPrivate Sub Form_Load()Print "要求:";Print "1.将圆周等分成16份;"Print "2.每个等分点要标记成0-16的数字;" Print "3.按样本图的图案画图。
"End Sub附图:二、加密Function code(ByVal s$, ByVal key%) Dim c As String * 1, iAsc%code = ""For i = 1 To Len(s)c = Mid$(s, i, 1)Select Case cCase "A" To "Z"iAsc = Asc(c) + keyIf iAsc > Asc("Z") Then iAsc = iAsc - 26 code = code + Chr(iAsc)Case "a" To "z"iAsc = Asc(c) + keyIf iAsc > Asc("z") Then iAsc = iAsc - 26 code = code + Chr(iAsc)Case Elsecode = code + cEnd SelectNext iEnd FunctionPrivate Sub close_Click()Form11.HideForm1.ShowEnd SubPrivate Sub Jiami_Click()Text2 = code(Text1, 2)End SubPrivate Sub open_Click()CommonDialog1.Action = 1Text1.Text = ""Open CommonDialog1.FileName For Input As #1Dim counter As IntegerDim workarea(25000) As StringProgressBar1.min = LBound(workarea)ProgressBar1.max = UBound(workarea)ProgressBar1.Visible = TrueProgressBar1.Value = ProgressBar1.minFor counter = LBound(workarea) To UBound(workarea) workarea(counter) = "initial value " & counter ProgressBar1.Value = counterNext counterDo While Not EOF(1)Line Input #1, inputdataText1.Text = Text1.Text + inputdata + vbCrLfLoopClose #1End SubPrivate Sub save_Click()CommonDialog1.FileName = "a1.txt"CommonDialog1.DefaultExt = "txt"CommonDialog1.Action = 2Open CommonDialog1.FileName For Output As #1Print #1, Text2.TextClose #1End Sub三、解密Function UnCode(ByVal s$, ByVal key%)Dim c As String * 1, iAsc%UnCode = ""For i = 1 To Len(s)c = Mid$(s, i, 1)Select Case cCase "A" To "Z"iAsc = Asc("c") - keyIf iAsc < Asc("A") Then iAsc = iAsc + 26UnCode = UnCode + Chr(iAsc)Case "a" To "z"iAsc = Asc(c) - keyIf iAsc < Asc("a") Then iAsc = iAsc + 26UnCode = UnCode + Chr(iAsc)Case ElseUnCode = UnCode + cEnd SelectNext iEnd FunctionPrivate Sub close_Click()Form2.HideForm1.ShowEnd SubPrivate Sub Jiemi_Click()Text2 = UnCode(Text1, 2)End SubPrivate Sub open_Click()CommonDialog1.Action = 1Text1.Text = ""Open CommonDialog1.FileName For Input As #1Dim counter As IntegerDim workarea(25000) As StringProgressBar1.min = LBound(workarea) ProgressBar1.max = UBound(workarea) ProgressBar1.Visible = TrueProgressBar1.Value = ProgressBar1.minFor counter = LBound(workarea) To UBound(workarea) workarea(counter) = "initial value " & counter ProgressBar1.Value = counterNext counterDo While Not EOF(1)Line Input #1, inputdataText1.Text = Text1.Text + inputdata + vbCrLfLoopClose #1End SubPrivate Sub save_Click()CommonDialog1.FileName = "a.txt" CommonDialog1.DefaultExt = "txt" CommonDialog1.Action = 2Open CommonDialog1.FileName For Output As #1 Print #1, Text2.TextClose #1End Sub四、蝴蝶飞舞Private Sub Form_Load()Print "蝴蝶飞出窗体后重新定位到左下方再向右上方飞" End SubPrivate Sub Timer1_Timer()Static PickBmp As IntegerIf PickBmp = 0 ThenImage1.Picture = Image2.PicturePickBmp = 1ElseImage1.Picture = Image3.PicturePickBmp = 0End IfCall mymoveEnd SubSub mymove()Image1.Move Image1.Left + 40, Image1.Top - 25If Image1.Top <= 0 ThenImage1.Left = 0Image1.Top = 2325End IfEnd Sub图:五、文本编辑Private Sub Copy_Click()Clipboard.ClearClipboard.SetText RichTextBox1.SelTextEnd SubPrivate Sub Cut_Click()Clipboard.ClearClipboard.SetText RichTextBox1.SelTextRichTextBox1.SelText = ""End SubPrivate Sub Exit_Click()Form3.HideForm1.ShowEnd SubPrivate Sub Font_Click()CommonDialog1.Flags = cdlCFBoth Or cdlCFEffects CommonDialog1.Action = 4RichTextBox1.FontName = CommonDialog1.FontName RichTextBox1.FontSize = CommonDialog1.FontSize RichTextBox1.FontBold = CommonDialog1.FontBold RichTextBox1.FontItalic = CommonDialog1.FontItalic RichTextBox1.FontStrikethru = CommonDialog1.FontStrikethru RichTextBox1.FontUnderline = CommonDialog1.FontUnderline RichTextBox1.ForeColor = CommonDialog1.ColorEnd SubPrivate Sub Form_Load()Print "注:"Print "1.'打开'对话框的初始文件夹应是所要打开文件所在的" Print "文件夹,将提供的xz.txt文件打开;"Print "2.要实现将选定的内容格式化,必须在工具箱中添加" Print "RichTextBox控件(Microsoft Rich Textbox Comtrol 6.0)" Print "并在帮助菜单中查阅其字体设置的相关属性。
vb小游戏制作
vb小游戏制作Vb制作小游戏一、射击游戏Option ExplicitDim RandX As SingleDim RandY As SingleDim Score As SingleDim Thisscore As SingleDim Average As SingleDim Shot As IntegerDim Appear As BooleanDim Distance As SinglePrivate Sub Command1_Click()Timer1.Enabled = TrueCommand3.Enabled = TrueIf Command1.Enabled = True Then Command3.Caption = "暂停"End IfCommand4.Enabled = TrueEnd SubPrivate Sub Command2_Click()If Command4.Enabled = True ThenMsgBox "请先结束游戏", 48, "警告"ElseEndEnd IfEnd SubPrivate Sub Command3_Click() Command1.Enabled = False Command3.Caption = "继续"Timer1.Enabled = Not Timer1.Enabled If Timer1.Enabled =True Then Command3.Caption = "暂停"End IfEnd SubPrivate Sub Command4_Click() Timer1.Enabled = FalseCommand3.Enabled = False Command1.Enabled = TruePicture1.ClsLabel1.Caption = "射击:"Label2.Caption = "平均得分:"Label3.Caption = "环数:"Label4.Caption = "总分:" Command4.Enabled = FalseCommand3.Caption = "暂停"End SubPrivate Sub Form_Load()Appear = FalseTimer1.Enabled = FalseThisscore = 0Score = 0Shot = 0End SubPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) BeepShot = Shot + 1Picture1.DrawWidth = 4Picture1.PSet (X, Y), RGB(255, 0, 0)Distance = Sqr((X - RandX) * (X - RandX) + (Y - RandY) * (Y - RandY))If Appear And Timer1.Enabled ThenThisscore = 5 - Int(Distance / 10)If Thisscore <= 0 ThenThisscore = 0End IfScore = Score + ThisscoreAverage = Int((Score / Shot) * 100) / 100Label1.Caption = "射击:" + Str(Shot) + "发"Label2.Caption = "平均得分:" & Format(Average, "0.00") & "环" Label3.Caption = "环数:" + Str(Thisscore) + "环"Label4.Caption = "总分:" + Str(Score) + "环"End IfEnd SubPrivate Sub Timer1_Timer()Dim i As IntegerAppear = Appear Xor TrueRandX = 500 * Rnd()RandY = 370 * Rnd()If Appear ThenForm1.Picture1.AutoRedraw = TruePicture1.DrawWidth = 1Picture1.DrawStyle = 0For i = 10 To 50 Step 10Picture1.Circle (RandX, RandY), i, RGB(0, 0, 255)Next iPicture1.Line (RandX - 60, RandY)-(RandX + 60, RandY) Picture1.Line (RandX, RandY - 60)-(RandX, RandY + 60) ElsePicture1.ClsEnd IfEnd Sub二、打飞机游戏从作一个小游戏开始指针本文从制作一个简单的小游戏开始,通过扩展这游戏,讲解VB多媒体,键盘控制与一些相关技术。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这些游戏以前玩过吧,快下载看它们是怎么编写的!目录:·编写趣味撞球小游戏·用VB6.0设计简易赛车游戏·Visual Basic小游戏:猜英雄·VB游戏写作技巧(1)秀图篇·VB游戏写作技巧(2)网络篇·VB 贪吃蛇单人版游戏(一)·VB 贪吃蛇单人版游戏(二)·VB 贪吃蛇单人版游戏(三)·VB 贪吃蛇单人版游戏(四)·用VB开发即时战略游戏正文:编写趣味撞球小游戏文章来源:沐风经典文章作者:佚名Visual Basic是一个功能强大的工具,它有一大特点就是易学易用,下面我们就通过写一个“趣味撞球”的程序来初步体会一下。
首先启动VB5,新建一个标准的EXE工程。
此时可以看到,工程包括一个Form1框体。
在Form1边框的右下角按住鼠标左键不放,拖动鼠标把Form1的面积改为适当大小,比如6930×4320。
再在属性框中把Form1的ScaleMode 属性改为3-Pixel,表明我们将以像素为我们的坐标计算单位,把Form1的StartUpPosition 属性设为2-CenterScreen,使运行时窗体出现在屏幕正中。
现在,在控件面板上选取CommandButton(命令按钮)控件,为Form1添加Command1和Command2两个按钮控件,把它们的大小设为121×25,再在属性框中把Command1的Caption填为“&GO”,把Command2的Caption填为“&QUIT”,并把Command1放到框体的右上角,把Command2放到框体的右下角。
然后,在控件面板上选取Timer(时钟)控件,为Form1添加一个Timer1时钟控件。
再在属性框中把它的Enabled属性改为False,Interval属性改为50,前一个值表示该时钟控件是否激活,后一个值决定该时钟控件产生Timer事件的间隔时间,我们将用它来控制小球的移动频率。
到此为止,我们已经完成了全部的界面设计工作。
接下来要做的全部工作就是填入程序代码了。
Dim BallX As IntegerDim BallY As IntegerDim AddX As IntegerDim AddY As IntegerDim HitX As IntegerDim W As IntegerDim H As IntegerPrivate Sub Command1_Click()BallX=Int(Rnd(1)*Form1.ScaleWidth/10)*5+25BallY=Int((Form1.ScaleHeight)/10)*5AddX=-5AddY=-5Form_PaintTimer1.Enabled=TrueEnd SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)X=X-50If X<15 Then X=15If X>W-105 Then X=W-105HitX=XIf Timer1.Enabled=True ThenLine(16,H-5)-(W-6,H),&HC0C0C0,BFLine(HitX,H)-(HitX+100,H-5),0,BFEnd IfEnd SubPrivate Sub Form_Paint()ClsW=Int((ScaleWidth-140)/5)*5H=Int((ScaleHeight-10)/5)*5BackColor=&HC0C0C0Line(10,10)-(15,H),0,BFLine(W-5,10)-(W,H),0,BFLine(10,10)-(W,15),0,BFEnd SubPrivate Sub Timer1_Timer()Form1.Circle(BallX,BallY),4,&HC0C0C0BallX=BallX+AddXBallY=BallY+AddYForm1.Circle(BallX,BallY),4,0If BallX<=20 Then AddX=-AddXIf BallY<=20 Then AddY=-AddYIf BallX>=W-10 Then AddX=-AddXIf BallY>=H-10 ThenIf BallXHitX+100 ThenTimer1.Enabled=FalseForm_PaintEnd IfAddY=-AddYEnd IfEnd Sub一旦程序代码输入完毕,你就可以按F5开始执行它,或是在File菜单里选取Make来生成EXE执行文件了,瞧,小球已经在你的屏幕上蹦来蹦去了。
本文来自编程入门网():/VBjc/vbyx/yx1.htm用VB6.0设计简易赛车游戏文章来源:programfan 文章作者:yaozheng简单的游戏往往更耐玩,就比如伴我度过高考的赛车游戏:一切都是方块,所谓的赛车也只是四个方块。
第一步,绘制对象:用函数drawcar()画赛车,drawway(n)画跑道的第n层。
第二步,接受控制:Form的KeyPreview属性要设为true,在Form_KeyPress函数中通过改变全局变量cx来控制赛车的位置。
第三步,游戏循环:作为即时游戏,必须要有一个Timer,并在其事件Timer1_Timer()中绘制所有对象和进行碰撞检测。
本例中,绘图部分写在了Timer1_Timer()中,碰撞测试放在了test()中。
……这也是所有即时游戏所共通的框架。
当然,我们往往还是根据具体的设计作一些变通,发挥一些技巧……比如这里设计的跑道是随机产生的的,这就要通过一点技巧以便既让玩家感到挑战,又不至于出现不可逾越的难关……下面是全部源代码,窗体上只需放个按钮Command1就行了!Const D = 100 '方格的宽度Const BT = 3000 '跑道底部的y坐标Dim l1(22) As Integer '每层跑道左边有几个方块Dim l2(22) As Integer '每层跑道右边有几个方块Dim cx As Single '赛车的在x轴的位置Private Sub Command1_Click()cx = Width / 2 - 3 * D / 2cy = Height - DdrawcarFor i = 1 To 20l1(i) = 0l2(i) = 0drawway (i)Next iTimer1.Enabled = TrueEnd SubPrivate Sub drawcar()Line (cx, BT - 100)-Step(3 * D, D), BackColor, BFLine (cx + D, BT - 200)-Step(D, D), BackColor, BF '先擦Line (cx, BT - 100)-Step(3 * D, D), RGB(225, 0, 0), BFLine (cx + D, BT - 200)-Step(D, D), RGB(225, 0, 0), BFEnd SubPrivate Sub drawway(n)Line (Width/2-3*D/2-2*D,BT-n*D)-Step(7*D,D),BackColor, BF'先擦后画Line (Width/2-3*D/2-2*D,BT-n*D)-Step(l1(n)*D, D), ,BFLine (Width/2-3*D/2+5*D,BT-n*D)-Step(-l2(n)*D,D), ,BFEnd SubPrivate Sub Form_KeyPress(KeyAscii As Integer)Select Case KeyAsciiCase Asc("a"), Asc("A")cx = cx - DCase Asc("s"), Asc("S")cx = cx + DEnd SelectEnd SubPrivate Sub Timer1_Timer()RandomizeFor i = 1 To 19l1(i) = l1(i + 1)l2(i) = l2(i + 1)drawway (i)Next iDol1(20) = Int(Rnd * 5)l2(20) = Int(Rnd * 5)Loop Until ((l1(20) + l2(20) <= 4) And (l1(20) - l1(19) <= 1) And _(l2(20) - l2(19) <= 1) And (l1(19) + l2(20) <= 4) And _(l1(20) + l2(19) <= 4)) '这里生成新一层跑道,'注意要筛去玩家不可能通过的情况!drawway (20)'以上画出跑道drawcartestEnd SubPrivate Sub test()If 3.5*D-Width/2+cx<l1(1)*D Then Timer1.Enabled=FalseIf 3.5*D-Width/2+cx+D<l1(2)*D Then Timer1.Enabled=FalseIf 3.5*D-(cx+3*D-Width/2)<l2(1)*D Then Timer1.Enabled=FalseIf 3.5*D-(cx+2*D-Width/2)<l2(2)*D Then Timer1.Enabled=FalseEnd Sub本文来自编程入门网():/VBjc/vbyx/yx2.htm相信不少读者都看过央视的《水浒》吧,林冲、武松、李逵等英雄好汉的音容笑貌仿佛还浮现在我的眼前,那么108将中你最喜欢谁呢?我做了一个小程序来让电脑猜测你的心思,程序界面如图所示。
为了简化问题,我选择了其中的27将,将他们分成3组,每组9人。
如果你最喜欢其中的一个(比如史进),他在第一组出现了,那么就按下按钮“第一组”。
然后这27将会重新排列顺序,你再找史进在哪一组,比如发现他在第二组,就按下按钮“第二组”,画面中的人物次序会再次打乱,再找史进所在组别……最多3次,电脑将会猜出你心中的英雄!知道了玩法,下面我将介绍程序是如何实现的:一、猜测的奥妙——推算原理猜测的原理其实也不复杂,我们来模拟一下猜测的过程大家就清楚了。