王朝网络
分享
 
 
 

献给初学编程的礼物(实例) VB语言

王朝英语沙龙·作者佚名  2007-01-10
宽屏版  字体: |||超大  

献给初学编程的礼物(实例) VB语言

rosesnow 2000-4-9

C语言系列的所有文章现已做成html上载在我的主页上,请从以下站点查找:

rosesnow.533.net

rosesnow.heha.net(国外)

go.163.com/~rosesnow

www.homcn.com/rosesnow

请先择相对快的站点下载,同时本系列的实例程序及源程序都有下载。

现在我们来看这个才写好的实例吧。

★ 该应用程序是一个真正的软件程序.对于初学者来说可能分析起来比较难.在下面所讲的都

是这个应用程序中最简单的简化的部分,并且最好下载源程序及实例软件一块来看.更简单的

VB我将在另一个专题中讲.★

------------

这个软件的名称叫《卡通拼图》。属自由软件,可以自由传播,但代码部分是不允许修

改的。

需求分析:允许选择不同的图片,确定开始后将图片拆成规定的小图片,如4*4等,将顺

序打散。让用户点击图片时,图片自动移到空栏处直到检测出图片都按序拼好为止。(请参

阅网站上的实例程序)

可能这个程序是复杂了点。但做为一个正真实用的软件开发来说,这是一个简单的程序

首先我们要来设计这个程序的主界面。

我做的是一个类似于电视机一样的界面。你可以去创意这个界面。一个好的界面是一个

程序的核心!

技巧:label,line,shape都是设计界面的最好控件,它们占用资源少速度快。用它们可

以组成简单的凸凹的立体效果。在本例中并没有用任何界面图形来定制界面,都是由这些组

成的。如果你真要用图形,请选用image控件而不是picturebox控件。图形的制作可以用画笔

来完成。画笔?这个简单的工具其实是最有效的制作软件。你可以从材质库(自己找)中选

择合适的图片来剪载。可以用photoshop之类的软件来作一些效果。

在该程序中我准备了五张卡通来做执行对像,放在image\目录下,并依次取名为angle1

....angle2.

界面的制作过程就讲这么多,请参阅实例。

在界面上放两个按钮,用来决定选择的图片具体程序如下:

---------

Picmunber = Picmunber + 1

If Picmunber > Picmunindex Then Picmunber = 1

'imgnext.Left = 7150

'imgnext.Top = 5890

Picture3.Picture = LoadPicture(App.Path & "\image\angle" & Picmunber & ".jpg")

'PlaySound App.Path & "\move.wav"

----------

picmunber是一个全局变量,用来记录先择的图片是第几张,初始化时在form_load()中

设置为1.

当点击一下,picmunber加 1,到了第五张,又回转。

实例中用的是image而不是button,现在用引号注示了。

将图片引导至picture中用loadpicture方法. app.path是指应该程序目录

整个参数的含义是应用程序目录下的image目录下的angle1...angle2.jpg中的图片.

playsound是一个自编的API播放wav函数.

再设一个按钮用来选择是几乘几的分格.

Select Case Misize

Case 3

Misize = 4

labchage = "难易度:中级"

Case 4

Misize = 5

labchage = "难易度:高级"

Case 5

Misize = 6

labchage = "难易度:特级"

Case 6

Misize = 3

labchage = "难易度:初级"

End Select

PlaySound App.Path & "\move.wav"

misize是一个全局变量,用来告诉程序是几乘几的.

现在要把这个图拆成misize*misize.

VB中有一个现成的控件叫做pictureclip.在添加部件中选择microsoft pictureclip control 6.0.

设misize^2 个image数组用来显示这些小图片调用如下picbox(i).Picture = PicClip

.GraphicCell(Picarray(i)).

程序中采用动态添加image

方法为 load image(i)

将这些image打散.这里只介绐随机打散,在实例程序中保证了都有解的情况,并未采用这个方

法.因为程序上比较难就不列出来了

随机:

for i=0 to misize^2-1

a(i)=i

next i

for i=0 to 400

j1=int(rnd*misize^2)

j2=int(rnd*misize^2)

j=a(j1)

a(j1)=a(j2)

a(j2)=j

next i

这样就可以把一个按0到misize^2-1顺序数组打乱了,这个算法在扑克牌中用的比较多,在

这只做一个参考.

真正合适的算法:

Private Sub wash()

Dim Bmove As BooleanDim i%, xcoord%, ycoord%, iRand%, j%

Miemptyindex = Misize ^ 2 - 1PicClip.Rows = MisizePicClip.Cols = MisizeFor i = 0 To Misize ^ 2 - 1Picarray(i) = iNext ixcoord = Miemptyindex Mod Misizeycoord = Miemptyindex \ Misizei = 0While i < Misize ^ 4

Bmove = False

iRand = Int(4 * Rnd)

If (iRand = 0) And (xcoord > 0) Then

xcoord = xcoord - 1

Bmove = True

ElseIf (iRand = 1) And (xcoord < Misize - 1) Then

xcoord = xcoord + 1

Bmove = True

ElseIf (iRand = 2) And (ycoord > 0) Then

ycoord = ycoord - 1

Bmove = True

ElseIf (iRand = 3) And (ycoord < Misize - 1) Then

ycoord = ycoord + 1

Bmove = True

End If

If Bmove Then

j = Picarray(Miemptyindex)

Picarray(Miemptyindex) = Picarray(Misize * ycoord + xcoord)

Picarray(Misize * ycoord + xcoord) = j

Miemptyindex = Misize * ycoord + xcoord

i = i + 1

End IfWendRestartflag = MiemptyindexEnd Sub

---------

接下来再将图片显示出来

Private Sub show_bmp()

Dim i%

Miemptyindex = RestartflagFor i = 0 To 35picbox(i).Visible = FalseNext iFor i = 0 To Misize ^ 2 - 1If i <> Restartflag Thenpicbox(i).Picture = PicClip.GraphicCell(Picarray(i))

picbox(i).Visible = TrueElsepicbox(i).Picture = PicClip.GraphicCell(Misize ^ 2 - 1)

End IfNext iFor i = 0 To Misize ^ 2 - 1Picarrayb(i) = Picarray(i)

Next iFor i = 0 To Misize ^ 2 - 1picbox(i).Left = 120 + (picbox(0).Width - 20) * (i Mod Misize)

picbox(i).Top = 170 + (picbox(0).Height - 20) * (i \ Misize)

Next iEnd Sub

-----------

图片显示出来以后

当用户点击时做出反映.

Private Sub picbox_MouseDown(Index As Integer, Button As Integer, Shift As Integer, x As Single, Y As Single)

Dim xEmpty%, yEmpty%, yClicked%, xClicked%, j%

If Button = 1 ThenxEmpty = Miemptyindex Mod MisizeyEmpty = Miemptyindex \ MisizexClicked = Index Mod MisizeyClicked = Index \ Misize

If (xClicked = xEmpty + 1 And yClicked = yEmpty) Or _

(xClicked = xEmpty - 1 And yClicked = yEmpty) Or _

(yClicked = yEmpty + 1 And xClicked = xEmpty) Or _

(yClicked = yEmpty - 1 And xClicked = xEmpty) Then

j = Picarrayb(Miemptyindex)

Picarrayb(Miemptyindex) = Picarrayb(Index)

Picarrayb(Index) = j

picbox(Miemptyindex).Picture = picbox(Index).Picture

picbox(Miemptyindex).Visible = True

Miemptyindex = Index

picbox(Miemptyindex).Visible = False

PlaySound App.Path & "\move.wav"

End If

For j = 0 To Misize ^ 2 - 1

If Picarrayb(j) <> j Then

Exit Sub

End If

Next j

E_game.Enabled = True

E_restart.Enabled = False

imgnext.Enabled = True

imgprev.Enabled = True

imgchage.Enabled = True

For j = 0 To Misize ^ 2 - 1

picbox(j).Visible = False

Next j

Picture3.Visible = True

patfade.FadeOut (100)

Picture3.Picture = LoadPicture(App.Path & "\image\angle" & Picmunber & ".jpg

")

ElsePopupMenu E_gamesEnd IfEnd Sub

整个程序的制作就是如此了.

在程序中还应用了淡入淡出效果这些都是由API来完成的.

该实例在我的主页有下载.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有