小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx

上传人:b****3 文档编号:8085390 上传时间:2023-05-10 格式:DOCX 页数:41 大小:51.85KB
下载 相关 举报
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第1页
第1页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第2页
第2页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第3页
第3页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第4页
第4页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第5页
第5页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第6页
第6页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第7页
第7页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第8页
第8页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第9页
第9页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第10页
第10页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第11页
第11页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第12页
第12页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第13页
第13页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第14页
第14页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第15页
第15页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第16页
第16页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第17页
第17页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第18页
第18页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第19页
第19页 / 共41页
小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx

《小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx》由会员分享,可在线阅读,更多相关《小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx(41页珍藏版)》请在冰点文库上搜索。

小时候经典游戏用VB编的编写实例教程大全全Word文档格式.docx

DimAddYAsInteger

DimHitXAsInteger

DimWAsInteger

DimHAsInteger

PrivateSubCommand1_Click()

BallX=Int(Rnd

(1)*Form1.ScaleWidth/10)*5+25

BallY=Int((Form1.ScaleHeight)/10)*5

AddX=-5

AddY=-5

Form_Paint

Timer1.Enabled=True

EndSub

PrivateSubCommand2_Click()

End

PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

X=X-50

IfX<

15ThenX=15

IfX>

W-105ThenX=W-105

HitX=X

IfTimer1.Enabled=TrueThen

Line(16,H-5)-(W-6,H),&HC0C0C0,BF

Line(HitX,H)-(HitX+100,H-5),0,BF

EndIf

PrivateSubForm_Paint()

Cls

W=Int((ScaleWidth-140)/5)*5

H=Int((ScaleHeight-10)/5)*5

BackColor=&HC0C0C0

Line(10,10)-(15,H),0,BF

Line(W-5,10)-(W,H),0,BF

Line(10,10)-(W,15),0,BF

PrivateSubTimer1_Timer()

Form1.Circle(BallX,BallY),4,&HC0C0C0

BallX=BallX+AddX

BallY=BallY+AddY

Form1.Circle(BallX,BallY),4,0

IfBallX<

=20ThenAddX=-AddX

IfBallY<

=20ThenAddY=-AddY

IfBallX>

=W-10ThenAddX=-AddX

IfBallY>

=H-10Then

IfBallXHitX+100Then

Timer1.Enabled=False

AddY=-AddY

EndSub

一旦程序代码输入完毕,你就可以按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轴的位置

 cx=Width/2-3*D/2

 cy=Height-D

 drawcar

 Fori=1To20

  l1(i)=0

  l2(i)=0

  drawway(i)

 Nexti

 Timer1.Enabled=True

PrivateSubdrawcar()

 Line(cx,BT-100)-Step(3*D,D),BackColor,BF

 Line(cx+D,BT-200)-Step(D,D),BackColor,BF'

先擦

 Line(cx,BT-100)-Step(3*D,D),RGB(225,0,0),BF

 Line(cx+D,BT-200)-Step(D,D),RGB(225,0,0),BF

PrivateSubdrawway(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),,BF

 Line(Width/2-3*D/2+5*D,BT-n*D)-Step(-l2(n)*D,D),,BF

PrivateSubForm_KeyPress(KeyAsciiAsInteger)

 SelectCaseKeyAscii

  CaseAsc("

a"

),Asc("

A"

   cx=cx-D

s"

S"

   cx=cx+D

 EndSelect

 Randomize

 Fori=1To19

  l1(i)=l1(i+1)

  l2(i)=l2(i+1)

 Do

  l1(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)

以上画出跑道

 test

PrivateSubtest()

 If3.5*D-Width/2+cx<

l1

(1)*DThenTimer1.Enabled=False

 If3.5*D-Width/2+cx+D<

l1

(2)*DThenTimer1.Enabled=False

 If3.5*D-(cx+3*D-Width/2)<

l2

(1)*DThenTimer1.Enabled=False

 If3.5*D-(cx+2*D-Width/2)<

l2

(2)*DThenTimer1.Enabled=False

相信不少读者都看过央视的《水浒》吧,林冲、武松、李逵等英雄好汉的音容笑貌仿佛还浮现在我的眼前,那么108将中你最喜欢谁呢?

我做了一个小程序来让电脑猜测你的心思,程序界面如图所示。

  为了简化问题,我选择了其中的27将,将他们分成3组,每组9人。

如果你最喜欢其中的一个(比如史进),他在第一组出现了,那么就按下按钮“第一组”。

然后这27将会重新排列顺序,你再找史进在哪一组,比如发现他在第二组,就按下按钮“第二组”,画面中的人物次序会再次打乱,再找史进所在组别……最多3次,电脑将会猜出你心中的英雄!

  知道了玩法,下面我将介绍程序是如何实现的:

  一、猜测的奥妙——推算原理

  猜测的原理其实也不复杂,我们来模拟一下猜测的过程大家就清楚了。

程序初始化时是把1~27将随机打乱分别放入PageControl控件的三个选项卡中,每个选项卡放9张图片。

点击一次按钮后其实不是盲目地将顺序打乱,而是进行了筛选,把有用的图片(就是点选的那组的9张图片)筛选出来平均分配到PageControl控件的三个选项卡中,再把不需要的图片集中起来平均分配到PageControl控件的三个选项卡中,最后在各个选项卡中把有用的、无用的图片随机打乱再次重新排列显示出来,从而完成猜测。

用表1来说明:

点击按钮的次数选项卡1选项卡2选项卡3

1333

2111

3000

  具体讲,当第一次按下按钮时,表示你相中的图片在其中一个选项卡的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();

=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();

i++)

Items->

Add(IntToStr(b[i]));

  如上例所示,经过打乱,b[27]数组将不再是旧时容颜。

  二、实现的关键——筛选算法的介绍

  在整个实现的过程中,如何在每一次打乱后对人物进行筛选是程序的关键所在,处理不好,程序就不会有结果。

而且筛选很容易把你搅得头晕脑胀,所以涉及的各个数组之间的关系一定要先理顺,先用一个例子来解释如何进行筛选。

以点击按钮的次数是第一次并且点击的按钮是Button1为例加以介绍,其思路如下:

  初始:

  第一次执行按钮事件并且按下的是Button1时(表a的数组就是关键数组):

  把表a打乱后平均拆分为3组分别送入内存缓冲区

  把表b和表c打乱后也平均拆分为3组分别送入内存缓冲区(非重要的数组),然后将它们进行组合,分别把有用的和无用的搭配重新组合为三张表并显示出来:

  把全部的筛选过程表述出来:

  1.初始化:

  把a[1-27]打乱并将

  a[1-9]赋给first[1-9]

  a[10-18]赋给second[1-9]

  a[19-27]赋给third[1-9]

  2.第一次按钮事件(假设选中的是第二个选项卡)

  second[1-9]打乱后赋给temp1[1-3]、temp2[1-3]、temp3[1-3]

  a[1-9]+a[19-27]赋给temp4[1-18]并打乱

  temp1[1-3]+temp4[1-6]赋给first[1-9]并打乱

  temp2[1-3]+temp4[7-12]赋给second[1-9]并打乱

  temp3[1-3]+temp4[13-18]赋给third[1-9]并打乱

 

  3.第二次按钮事件(假设选中的是第二个选项卡)

  temp2[1-3]打乱后赋给temp5[1]、temp6[1]、temp7[1]

  temp1[1-3]+temp3[1-3]+temp4[1-18]赋给temp8[1-24]并打乱

  temp5[1]+temp8[1-8]赋给first[1-9]并打乱

  temp5[2]+temp8[9-16]赋给second[1-9]并打乱

  temp5[3]+temp8[17-24]赋给third[1-9]并打乱

  4.第三次按钮事件(如果选中的是第二个选项卡)

  把temp5[2]所对应的图片显示出来即可。

  最后分别把表a—表c打乱后显示出来即可。

进行二次、多次筛选的方法都一样,只是要注意相中的好汉在哪个数组里面,千万别搞错就行了。

  三、小结

  最后的工作就比较简单了。

可以设计一个友好的界面,然后在程序启动的时候对数组赋初值,并显示出来;

对每个按钮分别先进行次数判断,然后进行前面讲述的处理,不断筛选直到剩下惟一的好汉后就可以显示在界面的正下方了。

VB游戏写作技巧

(1)秀图篇

互联网文章作者:

未知

一开始,我想先从游戏的图形先讲起好了,毕竟游戏最重要的就是画面,一个没有漂亮图形的游戏,我连碰都不想去碰。

那该怎么处理游戏的图形呢?

VB提供了一个非常好用的控制项--PictureBox,有了这个控制项我们才能轻松的在程式中秀出图形,现在就来看看PictureBox有那些特性可以让我们在游戏中使用。

Picture属性:

只要将这个属性填入正常的图形档名,VB就会自动帮我们载入图形档。

Visible属性:

这个属性可以让图形消失或让图形出现在画面上。

用法:

Form1.Picture1.Visible=False'

消失

Form1.Picture1.Visible=True'

出现

Left属性:

表示图形的位置的X座标。

Top属性:

表示图形的位置的Y座标。

改变这两个属性就可以改变图形的位置。

ScaleMode属性:

设定PictureBox所使用的座标单位,一般都设为"

3-像素"

知道了PictureBox的特性後,要怎么样把它应用到游戏中呢?

举个例子好了,我现在要做一个打砖块的游戏,需要用到那些图片呢?

砖块、球、击球的板子,一共有三张图,所以我们就使用三个PictureBox,将图片载入到PictureBox里面,如下面所示:

Picture1砖块的图片

Picture2球的图片

Picture3板子的图片

接著我就可以写,当我按下方向键的右键时,Picture3的left属性+1,按下左键则-1,这样一来不就可以控制板子的左右移动了吗?

球也是一样,只要每隔一段时间更改一次Picture2的left和top属性,就可以做出球移动的效果了。

或许有人会觉得奇怪,一张图就要用到一个PictureBox,小游戏的图不多还没关系,如果是RPG的话不就要动用到几千个甚至几万个PictureBox?

岂不是麻烦死了?

所以如果图片很多的时候,我通常都是把图全部都放在同一个图形档里面,这样就只要用到一个PictureBox了,要用图片时从里面把它抓出来就好了,不过要怎么抓呢?

我建议使用函数BitBlt()来做图形的搬移。

使用BitBlt函数前要先宣告:

DeclareSubBitBltLib"

gdi32"

(ByValhDestDCAsLong,ByValXAsLong,ByValYAsLong,ByValnWidthAsLong,ByValnHeightAsLong,ByValhSrcDCAsLong,ByValxSrcAsLong,ByValySrcAsLong,ByValdwRopAsLong)

hDestDC目的地的DC

x目的地的座标x

y目的地的座标y

nWidth来源图片的宽度

nHight来源图片的高度

hSrcDC来源图片的DC

xsrc来源图片的座标x

ysrc来源图片的座标y

dwrop运算方法:

&

HCC0020PUT

H8800C6AND

HEE0086OR

H660046XOR

现在有两个PictureBox

Picture1AutoRedRaw属性设为Ture

ScaleMode属性设为"

Picture2AutoRedRaw属性设为Ture

若想将Picture2里(10,10)-(100,100)区域内的图形拷贝到Picture1的(0,0)

可以这样写:

BitBltPicture1.hdc,0,0,90,90,Picture2.hdc,10,10,&

HCC0020

这样子平常写游戏时就只要设两个PictureBox,一个专门用来显示,另一个则用来放图形资料,需要时再用BitBlt函数覆制过去就好了,不是很方便吗?

VB游戏写作技巧

(2)网络篇

这一次写的是如何用VB来写网路程式的方法,你可不要以为这是什么深奥的程式,其实只要一个Winsock控制项就可以了,现在就来介绍一下Winsock的用法:

步骤一:

首先要先把控制项给叫出来,你只要按下Ctrl+T後选取WinsockControl5.0若是用VB6的就选WinsockControl6.0,这样就可以使用Winsock元件。

步骤二:

再来我们必须先确定程式是作Server端还是Client端的,要先设定一些属性:

Server写法:

winsock1.localPort=5400(数字可以随便设)

winsock1.Listen(等待连线)

Client写法:

winsock1.RemoteHost="

对方IP"

winsock1.RemoteProt=5400(必须要和Server端相同)

winsock1.LocalProt=0

winsock1.Connect(连线)

连线之前Client端要先知道Server端的IP,接著等到Server端等待连线时,Client端就可以呼叫Connect方法,双方连线成功後就可以传输资料。

步骤三:

当Client连线的时候Server端会引发ConnectionRequest事件,Server的程式要这样子写:

PrivateSubWinsock1_ConnectionRequest(ByValrequestIDAslong)

winsock1.Close

winsock1.AcceptrequestID

步骤四:

这样一来就可以传送资料了,传送和接受资料的方法如下:

传送资料:

mydata="

你好吗?

"

winsock1.sendDatamydata

这样就会把mydata给传到对方那里。

接受资料:

当有资料送到的时候会引发DataArrival事件。

PrivataSubWinsock1_DtatArrival(ByValbytesTotalAslong)

DimmydataAsString

winsock1.GetDatamydata 会把送到的资料给mydata

Winsock控制项就那么简单,只要会这些就可以写网路游戏了,相关的程式你可以参考网路五子棋(54K)

本文介绍编制贪吃蛇游戏的一般方法,其中不含什么高深的算法,只使用了初级的VB编程方法,通俗易懂。

各位如有任何见解,请不吝赐教。

本人QQ:

190317890(请在身份验证里面写上“CSDN”)

邮箱****************

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2