vb游戏编写程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

目录:·编写趣味撞球小游戏·用VB6.0设计简易赛车游戏·VisualBasic小游戏:猜英雄·VB游戏写作技巧(1)秀图篇·VB游戏写作技巧(2)网络篇·VB贪吃蛇单人版游戏(一)·VB贪吃蛇单人版游戏(二)·VB贪吃蛇单人版游戏(三)·VB贪吃蛇单人版游戏(四)·用VB开发即时战略游戏正文:编写趣味撞球小游戏文章来源:沐风经典文章作者:佚名VisualBasic是一个功能强大的工具,它有一大特点就是易学易用,下面我们就通过写一个“趣味撞球”的程序来初步体会一下。首先启动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事件的间隔时间,我们将用它来控制小球的移动频率。到此为止,我们已经完成了全部的界面设计工作。接下来要做的全部工作就是填入程序代码了。DimBallXAsIntegerDimBallYAsIntegerDimAddXAsIntegerDimAddYAsIntegerDimHitXAsIntegerDimWAsIntegerDimHAsIntegerPrivateSubCommand1_Click()BallX=Int(Rnd(1)*Form1.ScaleWidth/10)*5+25BallY=Int((Form1.ScaleHeight)/10)*5AddX=-5AddY=-5Form_PaintTimer1.Enabled=TrueEndSubPrivateSubCommand2_Click()EndEndSubPrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)X=X-50IfX15ThenX=15IfXW-105ThenX=W-105HitX=XIfTimer1.Enabled=TrueThenLine(16,H-5)-(W-6,H),&HC0C0C0,BFLine(HitX,H)-(HitX+100,H-5),0,BFEndIfEndSubPrivateSubForm_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,BFEndSubPrivateSubTimer1_Timer()Form1.Circle(BallX,BallY),4,&HC0C0C0BallX=BallX+AddXBallY=BallY+AddYForm1.Circle(BallX,BallY),4,0IfBallX=20ThenAddX=-AddXIfBallY=20ThenAddY=-AddYIfBallX=W-10ThenAddX=-AddXIfBallY=H-10ThenIfBallXHitX+100ThenTimer1.Enabled=FalseForm_PaintEndIfAddY=-AddYEndIfEndSub一旦程序代码输入完毕,你就可以按F5开始执行它,或是在File菜单里选取Make来生成EXE执行文件了,瞧,小球已经在你的屏幕上蹦来蹦去了。本文来自编程入门网():用VB6.0设计简易赛车游戏文章来源:programfan文章作者:yaozheng简单的游戏往往更耐玩,就比如伴我度过高考的赛车游戏:一切都是方块,所谓的赛车也只是四个方块。第一步,绘制对象:用函数drawcar()画赛车,drawway(n)画跑道的第n层。第二步,接受控制:Form的KeyPreview属性要设为true,在Form_KeyPress函数中通过改变全局变量cx来控制赛车的位置。第三步,游戏循环:作为即时游戏,必须要有一个Timer,并在其事件Timer1_Timer()中绘制所有对象和进行碰撞检测。本例中,绘图部分写在了Timer1_Timer()中,碰撞测试放在了test()中。……这也是所有即时游戏所共通的框架。当然,我们往往还是根据具体的设计作一些变通,发挥一些技巧……比如这里设计的跑道是随机产生的的,这就要通过一点技巧以便既让玩家感到挑战,又不至于出现不可逾越的难关……下面是全部源代码,窗体上只需放个按钮Command1就行了!ConstD=100'方格的宽度ConstBT=3000'跑道底部的y坐标Diml1(22)AsInteger'每层跑道左边有几个方块Diml2(22)AsInteger'每层跑道右边有几个方块DimcxAsSingle'赛车的在x轴的位置PrivateSubCommand1_Click()cx=Width/2-3*D/2cy=Height-DdrawcarFori=1To20l1(i)=0l2(i)=0drawway(i)NextiTimer1.Enabled=TrueEndSubPrivateSubdrawcar()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),BFEndSubPrivateSubdrawway(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),,BFEndSubPrivateSubForm_KeyPress(KeyAsciiAsInteger)SelectCaseKeyAsciiCaseAsc(a),Asc(A)cx=cx-DCaseAsc(s),Asc(S)cx=cx+DEndSelectEndSubPrivateSubTimer1_Timer()RandomizeFori=1To19l1(i)=l1(i+1)l2(i)=l2(i+1)drawway(i)NextiDol1(20)=Int(Rnd*5)l2(20)=Int(Rnd*5)LoopUntil((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)'以上画出跑道drawcartestEndSubPrivateSubtest()If3.5*D-Width/2+cxl1(1)*DThenTimer1.Enabled=FalseIf3.5*D-Width/2+cx+Dl1(2)*DThenTimer1.Enabled=FalseIf3.5*D-(cx+3*D-Width/2)l2(1)*DThenTimer1.Enabled=FalseIf3.5*D-(cx+2*D-Width/2)l2(2)*DThenTimer1.Enabled=FalseEndSub本文来自编程入门网():相信不少读者都看过央视的《水浒》吧,林冲、武松、李逵等英雄好汉的音容笑貌仿佛还浮现在我的眼前,那么108将中你最喜欢谁呢?我做了一个小程序来让电脑猜测你的心思,程序界面如图所示。为了简化问题,我选择了其中的27将,将他们分成3组,每组9人。如果你最喜欢其中的一个(比如史进),他在第一组出现了,那么就按下按钮“第一组”。然后这27将会重新排列顺序,你再找史进在哪一组,比如发现他在第二组,就按下按钮“第二组”,画面中的人物次序会再次打乱,再找史进所在组别……最多3次,电脑将会猜出你心中的英雄!知道了玩法,下面我将介绍程序是如何实现的:一、猜测的奥妙——推算原理猜测的原理其实也不复杂,我们来模拟一下猜测的过程大家就清楚了。程序初始化时是把1~27将随机打乱分别放入PageControl控件的三个选项卡中,每个选项卡放9张图片。点击一次按钮后其实不是盲目地将顺序打乱,而是进行了筛选,把有用的图片(就是点选的那组的9张图片)筛选出来平均分配到PageControl控件的三个选项卡中,再把不需要的图片集中起来平均分配到PageControl控件的三个选项卡中,最后在各个选项卡中把有用的、无用的图片随机打乱再次重新排列显示出来,从而完成猜测。用表1来说明:点击按钮的次数选项卡1选项卡2选项卡3133321113000具体讲,当第一次按下按钮时,表示你相中的图片在其中一个选项卡的9张图片内。于是把这9张图片均分成3份,每份3张,分别送入3个选项卡,其余的图片就不做考虑了。当第二次按下按钮时,表示你相中的图片在其中一个选项卡的3张图片内,于是把这3张图片均分成3份,每份1张,分别送入3个选项卡,当第三次按下按钮时,表示你相中的图片在其中一个选项卡的1张图片内,毫无疑问,这张图片就是你相中的图片,于是程序把这张图片显示出来。打乱重排的算法在程序中的很多地方要涉及打乱顺序重排的问题,下面我们就来先简单介绍一下打乱是如何实现的。这里要实现的方法是比较简单的,也就是多次把数组的不同位置的值互换,就像读小学时老师让两个同学互换位置一样,老师不断随机抽两个同学互换位置,最后同学们的座位就都重新排了一遍。举个例子:intI,temp1,temp2,a[2],b[27]for(i=1;i=27;i++)//先对数组赋初值b[i]=I;randomize();for(i=1;i=500;i++)//i的大小决定打乱的程度,循环次数越多,打乱程度越高{temp1=random(27)+1;temp2=random(27)+1;a[1]=b[temp1];b[temp1]=b[temp[2];b[temp2]=a[1];}//输出ListBox1-Clear();for(i=1;i=27;i++)ListBox1-Items-Add(IntToStr(b[i]));如上例所示,经过打乱,b[27]数组将不再是旧时容颜。二、实现的关键——筛选算法的介绍在整个实现的过程中,如何在每一次打乱后对人物进行筛选是程序的关键所在,处理不好,程序就不会有结果。而且筛选很容易把你搅得头晕脑胀,所以涉及

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功