小时候经典游戏用VB编的编写实例教程大全全!
- 格式:doc
- 大小:148.00 KB
- 文档页数:34
数字排序小游戏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编写的弹球游戏整理编写:西贝一哲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的兴趣。
本文以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小游戏设计-V1VB小游戏设计VB(Visual Basic)是一种广泛使用的编程语言,既可以编写应用程序,也可以编写小游戏。
在本文中,我们将介绍如何使用VB制作小游戏。
步骤 1:选择游戏类型在开始之前,您需要选择您想要制作的游戏类型。
VB可以制作多种类型的小游戏,如拼图游戏、图形平台游戏、扫雷游戏等等。
根据自己的兴趣和能力,选择一个适合自己的游戏类型。
步骤 2:设计游戏场景游戏场景是游戏的基础,在VB中,可以使用Form来设计游戏场景。
在设计游戏场景时,您需要考虑场景的大小、背景图、游戏元素的位置等等。
根据游戏类型的不同,设计方式也会有所不同。
步骤 3:添加游戏元素游戏元素是游戏的主体,它们包括游戏角色、游戏道具、游戏关卡等等。
在VB中,可以使用PictureBox或其他控件来表示游戏元素。
您需要根据游戏类型和游戏场景来添加游戏元素,并设置它们的属性和事件。
步骤 4:编写游戏逻辑游戏逻辑是游戏的核心,它定义了游戏规则和游戏流程。
在VB中,可以使用代码编写游戏逻辑。
您需要根据游戏类型和游戏元素来编写游戏逻辑,并处理游戏事件、计算得分等等。
步骤 5:测试和调试在完成游戏逻辑后,您需要对游戏进行测试和调试。
测试可以发现游戏中的bug和漏洞,而调试可以解决这些问题。
在测试和调试过程中,您需要不断地修改代码,并进行多次测试,直到游戏完美地运行。
总结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扫雷小游戏一.编程目的二.编程思路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编写趣味撞球程序一只红色的小球在箱子中不停地弹跳,你要适当地移动下面的板子挡住,别让它掉下来。
相信许多人都玩过这样的游戏,有没有想过自己编个来玩呢?界面设计:新建一个工程,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的兴趣。
本文以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小游戏设计是继承自传统手游的电脑小游戏,它被设计成小巧玲珑,娱乐性强,复杂程度不高的小游戏。
由于其操作简单,适合各个年龄段人群,因此在各个平台上都被广泛取得了支持和关注。
本文将介绍几种VB小游戏的设计,其中包括推箱子、飞行棋和2048。
一、推箱子推箱子是一款经典的益智小游戏,游戏中玩家需要通过推动不同位置上的箱子完成关卡。
其实现过程包括以下几个部分:1、设计游戏主界面;2、根据玩家的操作,在游戏主界面上添加箱子和目标位置;3、根据玩家操作后箱子和目标位置之间的距离等相关参数,检测箱子是否能够到达目标位置;4、对于箱子到达目标位置的情况,更新游戏分数并进入下一关卡;5、当玩家全部完成所有关卡后,弹出游戏通关页面。
二、飞行棋飞行棋是一款家庭娱乐游戏,游戏中玩家需要通过色子的掷骰,将自己的棋子移动到对应的目的地,首先完成游戏目标的玩家获胜。
其实现过程包括以下几个部分:1、设计游戏主界面;2、根据玩家操作,在游戏主界面上添加棋子和骰子;3、根据玩家掷骰子的点数和其是否遇到了冒险事件等参数,计算棋子的移动轨迹;4、在棋子到达目的地的情况下,计算游戏分数并判定游戏的胜负;5、当玩家全部完成所有关卡后,弹出游戏通关页面。
三、20482048是一款数字推理游戏,其规则是将相同数字的方块移动到一起,并不断合并以获得更高的分数。
其实现过程包括以下几个部分:1、设计游戏主界面;2、根据玩家操作,在游戏主界面上添加数字方块和分数板;3、根据玩家操作后数字方块之间的逻辑关系,合并相同数字方块并计算游戏分数;4、当游戏结束时,弹出游戏结束页面并显示得分。
总的来说,VB小游戏的设计需要思考游戏玩法的设计、响应时间和可玩性等方面,以确保游戏能够吸引玩家。
同时,良好的UI设计及程序的调试和维护也至关重要。
只有将这些方面的工作,协调的运用到设计中,才能够发展出一个优秀的VB小游戏。
这些游戏以前玩过吧,快下载看它们是怎么编写的!目录:·编写趣味撞球小游戏·用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次,电脑将会猜出你心中的英雄!知道了玩法,下面我将介绍程序是如何实现的:一、猜测的奥妙——推算原理猜测的原理其实也不复杂,我们来模拟一下猜测的过程大家就清楚了。