闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掆偓杩濋梺閫炲苯澧撮柡灞剧〒閳ь剨缍嗛崑鍛暦瀹€鍕厸鐎光偓閳ь剟宕伴弽顓溾偓浣糕槈濡嘲鐗氶梺鍛婂姉閸嬫挸袙婢跺绻嗛柣鎰典簻閳ь剚鍨垮畷鏇熺節濮橆剛顔嗛梺璺ㄥ櫐閹凤拷 (0) +1 闂傚倸鍊搁崐宄懊归崶褏鏆﹂柛顭戝亝閸欏繒鈧箍鍎遍幏瀣触鐎n喗鐓曢柍鈺佸枤濞堛垹霉绾攱瀚� (0) +1 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂撮檷閸嬫垿鎮楀☉娆嬬細妞も晜鐓¢弻锝夊箣閿濆棭妫勭紓浣哄閸ㄥ爼寮婚妸鈺傚亞闁稿本绋戦锟� (0) +1
闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掆偓杩濋梺閫炲苯澧撮柡灞剧〒閳ь剨缍嗛崑鍛暦瀹€鍕厸鐎光偓閳ь剟宕伴弽顓溾偓浣糕槈濡嘲鐗氶梺鍛婂姉閸嬫挸袙婢跺绻嗛柣鎰典簻閳ь剚鍨垮畷鏇㈠蓟閵夈儱鐎梺绉嗗嫷娈旈柦鍐枛閺岋綁寮崶銉㈠亾閳ь剟鏌涚€n偅灏柍钘夘槸閳诲秹顢樿缁ㄥジ鏌熸笟鍨鐎规洘鍎奸ˇ顕€鏌¢埀顒勬嚍閵夛絼绨婚梺鍝勬川閸嬬偤藟閻愮儤鍊垫慨妯煎亾鐎氾拷闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偞鐗犻、鏇㈠Χ閸℃ぞ绮℃俊鐐€栭崝褏绮婚幋鐘差棜闁秆勵殕閻撴洟鏌熼柇锕€鐏遍柛銈咁儔閺屻倝寮堕幐搴′淮闂佸搫鏈粙鎴﹀煡婢跺ň鏋庨柟閭﹀枤閳诲繒绱撻崒姘偓椋庢媼閺屻儱鐤鹃柣妯款嚙閽冪喖鏌i弮鍌楁嫛闁轰礁绉电换婵囩節閸屾碍鐏撻梺鍝勬-閸樺ジ鈥旈崘顔嘉ч柛鎰╁妼婵兘姊洪悷鏉挎闁瑰嚖鎷�>>

正在阅读:VB游戏攻略-平面魔方游戏VB游戏攻略-平面魔方游戏

2005-01-21 10:20 出处: 作者:文修 责任编辑:xietaoming

  回想儿时玩的魔方游戏,曾经让我如痴如醉。那时我不分昼夜地琢磨它,并且很快就成为了小朋友中的高手,很风光啊!前几天整理屋子的时候,竟然在一个阴暗的角落里又发现了它,玩了之后却发现自己现在已经只有初学者的水平了。不好意思整天把它捧在手里玩,最后决定还是在电脑上玩一玩吧,因此就用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 Integer
Dim 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 n
End 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 n
End Sub
Private Sub Form_Activate()
    fill_color
    draw
End Sub
Private 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 = 14
End 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 = vbDefault
End Sub

  程序比较简单,大家一定很容易看懂,这个程序的方格我们也可以改成6*6、7*7等等,但玩起来的难度可能会大大增加,就是这个5*5方格的游戏,我有时候都很难玩通。
本程序在VB6.0+ Windows Me下调试通过。

关注我们

最新资讯离线随时看 聊天吐槽赢奖品
闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗ù锝堟缁€濠傗攽閻樻彃鈧绱撳杈ㄥ枑闁哄啫鐗勯埀顑跨窔瀵粙顢橀悙鑼垛偓鍨攽閿涘嫬浠х紒顕呭灦瀵偊鎮╃紒妯锋嫼闂備緡鍋嗛崑娑㈡嚐椤栨稒娅犻柟缁㈠枟閻撴瑦銇勯弮鈧娆忈缚閹扮増鐓欑€瑰嫮澧楅崵鍥┾偓瑙勬磸閸斿秶鎹㈠┑瀣<婵炲棙鍔栭埢鏇熺節閻㈤潧啸妞わ綀妫勫嵄闁告稒娼欑壕濠氭煙閹规劦鍤欑紒鐙€鍨堕弻銊╂偆閸屾稑顏�闂傚倸鍊搁崐鎼佸磹閻戣姤鍊块柨鏇炲€哥粻鏍煕椤愶絾绀€缁炬儳娼¢弻鐔煎箚閻楀牜妫勭紒鎯у⒔缁垳鎹㈠☉銏犵婵炲棗绻掓禒濂告⒑閸濆嫬顏ラ柛搴f暬楠炲啫顫滈埀顒勫箖濞嗘挸绾ч柛顭戝枤瑜版垵鈹戦悙鑼憼缂侇喖绉堕崚鎺楀箻鐠囪尪鎽曞┑鐐村灟閸╁嫰寮崘顔界叆婵犻潧妫欓ˉ鐘炽亜閿斿搫鍔︽慨濠冩そ瀹曘劍绻濋崘鐐棝闂備胶鎳撻崵鏍箯閿燂拷