很久之前就想把這個程式寫出來

但是,那時環境沒辦法寫出程式…

只能用巨集寫…(有人說…天丫,如果寫的出來真是太神奇了)

分析圖也畫,邏輯判斷也大致出來了…

就是在把邏輯寫成程式時,發現真的太難了…

對我來說,真的很難克服…

後來,與部隊之前的文書(程設師)msn聊,就聊到了怎麼撰寫一個黑桃二的程式…

因為黑桃二的「判斷」真的太多了…

連我的老同學(龜)都說超難寫的…

於是,我先改了一下舊的九九遊戲(真是太久遠以前設計的)

讓他感覺真的有像玩樸克牌遊戲的樣子…

http://www.badongo.com/file/10103189


(點上面連結,下載後自動解壓,點執行檔即可玩囉!)

更新連結:點此下載

在改完九九之後,我便著手開始寫黑桃二的程式碼…

於是就從97/06/23下午開始…

 

再之前,曾查過有人做「黑桃二」的遊戲,除錯加上設計…

約莫三個月左右的時間…

現在在家,有小毛頭要搞…三不五時出難題給偶破解…

有時還要出去買個東西,所以感覺當學生真的很不錯…

至少只要管自已就好了,可以更專心寫程式(算了,說這麼多也沒用)!

我在三天後(即26日)寫完ai(電腦)可以自已玩牌…

27日晚上終於完成整個遊戲,之後再改進ai囉…

以下是我製作遊戲的截圖…

http://www.badongo.com/file/10104718

(點上面連結,下載後自動解壓,點執行檔即可玩囉!)

更新連結:點此下載

歡迎大家測試…

我是以vb寫的…

我想可能有人會有興趣,我公布一小段程式碼…

Case 503                'full house牌型503
   
   
   
    d = CInt(Right(What_Big(2, 5), 2))                      '讀出full house三張中最大牌數值
    temp1 = Array(0, 0, 0, 0, 0)                            '定義出牌暫存變數
    For a = 3 To 13                                         '2張的從3開始找,即最大為13(k)
        For b = d To 13                                     '3張的則以最大的開始找,最大不得為13(k)
            If a <> b Then                                  '防止3張和2張為相同牌
                For c = 1 To player(Who_Play, 1, 2) - 2     '判斷有3張牌一樣,從第一張至最後一張(所以牌數-2防止過頭)
                   
                    z = Array(CInt(Right(player(Who_Play, c, 1), 2)), CInt(Right(player(Who_Play, c + 1, 1), 2)), CInt(Right(player(Who_Play, c + 2, 1), 2)))
                   
                    If z(0) = b And z(0) = z(1) And z(0) = z(2) Then
                                                            '三張牌相同,而且符合數字者
                        For e = 2 To 4
                            temp1(e) = player(Who_Play, c + e - 2, 1)
                        Next
                        yn = 1
                        Exit For
                    Else
                        yn = 0
                    End If
                   
                Next
                For c = 1 To player(Who_Play, 1, 2) - 1     '判斷有2張牌一樣,從第一張至最後一張(所有牌數-1防止過頭)
                    z = Array(CInt(Right(player(Who_Play, c, 1), 2)), CInt(Right(player(Who_Play, c + 1, 1), 2)))
                   
                    If z(0) = a And z(0) = z(1) Then
                                                            '二張牌相同,而且符合數字者
                        For e = 0 To 1                      '轉存temp1
                            temp1(e) = player(Who_Play, c + e, 1)
                        Next
                        yn = yn + 1
                        Exit For
                    End If
               
                Next
                If yn = 2 Then
                    Exit For
                End If
            End If
           
        Next
        If yn = 2 Then
       
        For b = 0 To 4
            What_Big(2, b + 1) = temp1(b)               '把所查出之牌導入現最大之牌
        Next
       
        Call Opp
        clear_paper                                                             '出完牌,呼叫清除玩家手中牌
        Who_Big = Who_Play                                                      '誰出的牌最大,轉存為發牌者
        Exit For
       
        End If
    Next
       
Case 301                '3條牌型301
   
    d = CInt(Right(What_Big(2, 3), 2))                      '讀出三張中最大牌數值
    temp1 = Array(0, 0, 0, 0, 0)                            '定義出牌暫存變數

    For b = d + 1 To 13                                     '3張的則以最大的開始找,最大不得為13(k)
        For c = 1 To player(Who_Play, 1, 2) - 2             '判斷有3張牌一樣,從第一張至最後一張(所以牌數-2防止過頭)
           
            z = Array(CInt(Right(player(Who_Play, c, 1), 2)), CInt(Right(player(Who_Play, c + 1, 1), 2)), CInt(Right(player(Who_Play, c + 2, 1), 2)))
           
            If z(0) = b And z(0) = z(1) And z(0) = z(2) Then
                                                    '三張牌相同,而且符合數字者
                For e = 0 To 2
                    temp1(e) = player(Who_Play, c + e, 1)
                Next
                yn = 1
                Exit For
            Else
                yn = 0
            End If
           
        Next
        If yn = 1 Then
   
            For a = 0 To 4
                What_Big(2, a + 1) = temp1(a)               '把所查出之牌導入現最大之牌
            Next
               
            Call Opp
            clear_paper                                                             '出完牌,呼叫清除玩家手中牌
            Who_Big = Who_Play                                                      '誰出的牌最大,轉存為發牌者
            Exit For
       
        End If
       
    Next

不知道有沒有人看的懂?

如果看不懂,還是建議下載來玩玩吧!

arrow
arrow
    全站熱搜

    Necos的遊樂園 發表在 痞客邦 留言(11) 人氣()