1、Visual Basic是一个功能强大的工具,它有一大特点就是易学易用,下面我们就通过写一个“趣味撞球 的程序来初步体会一下。首先启动VB5,新建一个标准的EXE工程。此时可以看到,工程包括一个Form1框体。在Form1边框的右下角按住鼠标左键不放,拖动鼠标把Form1的面积改为适当大小,比如69304320。再在属性框中把Form1的ScaleMode 属性改为3Pixel,明确我们将以像素为我们的坐标计算单位,把Form1的StartUpPosition 属性设为2CenterScreen,使运行时窗体出现在屏幕正中。现在,在控件面板上选取mandButton命令按钮控件,为Form1添
2、加mand1和mand2两个按钮控件,把它们的大小设为12125,再在属性框中把mand1的Caption填为“GO,把mand2的Caption填为“QUIT,并把mand1放到框体的右上角,把mand2放到框体的右下角。然后,在控件面板上选取Timer时钟控件,为Form1添加一个Timer1时钟控件。再在属性框中把它的Enabled属性改为False,Interval属性改为50,前一个值表示该时钟控件是否激活,后一个值决定该时钟控件产生Timer事件的间隔时间,我们将用它来控制小球的移动频率。到此为止,我们已经完成了全部的界面设计工作。接下来要做的全部工作就是填入程序代码了。 Dim
3、BallX As IntegerDim BallY As IntegerDim AddX As IntegerDim AddY As IntegerDim HitX As IntegerDim W As IntegerDim H As IntegerPrivate Sub mand1_Click()BallX=Int(Rnd(1)Form1.ScaleWidth/10)525BallY=Int(Form1.ScaleHeight)/10)5AddX=5AddY=5Form_PaintTimer1.Enabled=TrueEnd SubPrivate Sub mand2_Click()EndPr
4、ivate Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)X=X50If XW105 Then X=W105HitX=XIf Timer1.Enabled=True ThenLine(16,H5)(W6,H),HC0C0C0,BFLine(HitX,H)(HitX100,H5),0,BFEnd IfPrivate Sub Form_Paint()ClsW=Int(ScaleWidth140)/5)5H=Int(ScaleHeight10)/5)5BackColor=HC0C0C0Lin
5、e(10,10)(15,H),0,BFLine(W5,10)(W,H),0,BFLine(10,10)(W,15),0,BFPrivate Sub Timer1_Timer()Form1.Circle(BallX,BallY),4,HC0C0C0BallX=BallXAddXBallY=BallYAddYForm1.Circle(BallX,BallY),4,0If BallX=20 Then AddX=AddXIf BallY=W10 Then AddX=AddXIf BallY=H10 ThenIf BallXHitX100 ThenTimer1.Enabled=FalseAddY=Add
6、YEnd Sub 一旦程序代码输入完毕,你就可以按F5开始执行它,或是在File菜单里选取Make来生成EXE执行文件了,瞧,小球已经在你的屏幕上蹦来蹦去了。 programfan 文章 yaozheng简单的游戏往往更耐玩,就比如伴我度过高考的赛车游戏:一切都是方块,所谓的赛车也只是四个方块。第一步,绘制对象:用函数drawcar()画赛车,drawway(n)画跑道的第n层。第二步,承受控制:Form的KeyPreview属性要设为true,在Form_KeyPress函数中通过改变全局变量cx来控制赛车的位置。第三步,游戏循环:作为即时游戏,必须要有一个Timer,并在其事件Timer1
7、_Timer()中绘制所有对象和进展碰撞检测。本例中,绘图局部写在了Timer1_Timer()中,碰撞测试放在了test()中。这也是所有即时游戏所共通的框架。当然,我们往往还是根据具体的设计作一些变通,发挥一些技巧比如这里设计的跑道是随机产生的的,这就要通过一点技巧以便既让玩家感到挑战,又不至于出现不可逾越的难关下面是全部源代码,窗体上只需放个按钮mand1就行了!Const D = 100 方格的宽度Const BT = 3000 跑道底部的y坐标Dim l1(22) As Integer 每层跑道左边有几个方块Dim l2(22) As Integer 每层跑道右边有几个方块Dim c
8、x As Single 赛车的在x轴的位置cx = Width / 2 - 3 * D / 2cy = Height - DdrawcarFor i = 1 To 20l1(i) = 0l2(i) = 0drawway (i)Next iTimer1.Enabled = TruePrivate 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), RG
9、B(225, 0, 0), BFLine (cx + D, BT - 200)-Step(D, D), RGB(225, 0, 0), BFPrivate 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), ,BFPrivate Sub Form_KeyPress(KeyAscii As Int
10、eger)Select Case KeyAsciiCase Asc(a), Asc(A)cx = cx - DsScx = cx + DEnd SelectRandomizeFor i = 1 To 19l1(i) = l1(i + 1)l2(i) = l2(i + 1)Dol1(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
11、(20) + l2(19) = 4) 这里生成新一层跑道,注意要筛去玩家不可能通过的情况!drawway (20)以上画出跑道testPrivate Sub test()If 3.5*D-Width/2+cxl1(1)*D Then Timer1.Enabled=FalseIf 3.5*D-Width/2+cx+Dl1(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.Enable
12、d=False相信不少读者都看过央视的水浒吧,林冲、武松、李逵等英雄好汉的音容笑貌仿佛还浮现在我的眼前,那么108将中你最喜欢谁呢?我做了一个小程序来让电脑猜想你的心思,程序界面如下列图。为了简化问题,我选择了其中的27将,将他们分成3组,每组9人。如果你最喜欢其中的一个比如史进,他在第一组出现了,那么就按下按钮“第一组。然后这27将会重新排列顺序,你再找史进在哪一组,比如发现他在第二组,就按下按钮“第二组,画面中的人物次序会再次打乱,再找史进所在组别最多3次,电脑将会猜出你心中的英雄!知道了玩法,下面我将介绍程序是如何实现的:一、猜想的奥妙推算原理猜想的原理其实也不复杂,我们来模拟一下猜想的
13、过程大家就清楚了。程序初始化时是把127将随机打乱分别放入PageControl控件的三个选项卡中,每个选项卡放9X图片。点击一次按钮后其实不是盲目地将顺序打乱,而是进展了筛选,把有用的图片就是点选的那组的9X图片筛选出来平均分配到PageControl控件的三个选项卡中,再把不需要的图片集中起来平均分配到PageControl控件的三个选项卡中,最后在各个选项卡中把有用的、无用的图片随机打乱再次重新排列显示出来,从而完成猜想。用表1来说明:点击按钮的次数 选项卡1 选项卡2 选项卡3 1 3 3 3 2 1 1 1 3 0 0 0 具体讲,当第一次按下按钮时,表示你相中的图片在其中一个选项卡的9X图片内。于是把这9X图片均分成3份,每份3X,分别送入3个选项卡,其余的图片就不做考虑了。当第二次按下按钮时,表示你相中的图片在其中一个选项卡的3X图片内,于是把这3X图片均分成3份,每份1X,分别送入3个选项卡,当第三次按下按钮时,表示你相中的图片在其中一个选项卡的
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1