时间: 2021-07-31 作者:daque
回顾儿时玩的魔方游戏,已经让我如痴如醉。其时我不分日夜地商量它,而且很快就变成了小伙伴中的能手,很得意啊!前几天整治房子的功夫,果然在一个暗淡的边际里又创造了它,玩了之后却创造本人此刻仍旧惟有入门者的程度了。不好道理成天把它捧在手里玩,结果确定仍旧在电脑上玩一玩吧,所以就用vb编写了这个步调。原想是编写一个三维的游戏,但用vb举行三维计划过于搀杂,结果确定仍旧按照魔方的道理,编写一个平面二维魔方。即是在一个5×5方格的围盘中,每一个小方格都随机弥补5种脸色中的任一脸色。而且在这25个方格中,每种脸色的方格惟有5个,当用鼠圈点击个中一个方格,举行横向或纵向拖动,同一目标方格的脸色就程序变革,如:同一目标5个方格的脸色辨别为“红(1)、绿(2)、蓝(3)、黑(4)、紫(5)”,当把第二个方格(绿)拖到第四个方格(黑)的场所时,那么这5个方格的脸色的程序就形成“黑(4)、紫(5)、红(1)、绿(2)、蓝(3)”。当把百般脸色按横向或纵向各陈设成一排时,那么就实行了这个游戏。
编写这个步调在本领上没有什么难点,要害的场合是在数据算法安排上,如在方格中随机弥补脸色的算法安排中,我发端是用数组来举行安排,截止创造算法有点搀杂,代码有点长,厥后改用汇合东西,算法就大大大略明清楚。谈天少说,此刻咱们就发端编制程序。开始翻开vb,兴建一个规范工程,在form1上增添一个picturebox控件,树立picture1的autoredraw属性为true,而后切换到代码编纂框增添如次代码:'设置x1、y1为全部变量,用来表白鼠标按下时的坐标dim x1 as integerdim y1 as integer'设置fill_color进程,在5*5的方格中随机弥补脸色sub fill_color() dim color as integer dim color_col as new collection '设置一个汇合变量
'在汇合中承载5种脸色 for i = 0 to 24 color_col.add int(i / 5), str(i) next i
'在方格中弥补脸色 j = 0 for n = 0 to 4 for m = 1 to 5 randomize x = int((25 - j) * rnd() + 1) color = color_col.item(x) picture1.line (n, m)-(n + 1, m - 1), qbcolor(color), bf color_col.remove (x) j = j + 1 next m next nend sub'设置draw进程,画边框为白色的方格sub draw() for n = 0 to 5 picture1.line (0, n)-(5, n), qbcolor(15) picture1.line (n, 0)-(n, 5), qbcolor(15) next nend subprivate sub form_activate() fill_color drawend subprivate sub form_load() picture1.scale (0, 5)-(5, 0)end sub
private sub picture1_mousedown(button as integer, shift as integer, x as single, y as single) x1 = int(x) y1 = int(y) picture1.mousepointer = 14end sub
private sub picture1_mouseup(button as integer, shift as integer, x as single, y as single) dim color1(4) as long dim x2 as integer dim y2 as integer
x2 = int(x) y2 = int(y) if y1 = y2 then for n = 0 to 4 color1(n) = picture1.point(n + 0.5, y2 + 0.5) next n
a = x2 - x1 for n = 0 to 4 if n - a <= 4 and n - a >= 0 then z = n - a else z = abs(5 - abs(n - a)) end if picture1.line (n, y2 + 1)-(n + 1, y2), color1(z), bf next n else if x1 = x2 then for n = 0 to 4 color1(n) = picture1.point(x2 + 0.5, n + 0.5) next n a = y2 - y1 for n = 0 to 4 if n - a <= 4 and n - a >= 0 then z = n - a else z = abs(5 - abs(n - a)) end if picture1.line (x2 + 1, n)-(x2, n + 1), color1(z), bf next n else msgbox "你的挪动失效", , "劝告" end if end if draw picture1.mousepointer = vbdefaultend sub
步调比拟大略,大师确定很简单看懂,这个步调的方格咱们也不妨改成6*6、7*7之类,但玩起来的难度大概会大大减少,即是这个5*5方格的游戏,我有功夫都很难玩通。本步调在vb6.0+ windows me下调节和测试经过。