< UNO >

朱 慶   B95570006

〔遊戲介紹〕

˙牌組 

    一共108張牌

    19張 Blue Number Cards,0一張,1∼9各兩張

    19張 Green Number Cards,0一張,1∼9各兩張

    19張 Red Number Cards,0一張,1∼9各兩張

    19張 Yellow Number Cards,0一張,1∼9各兩張

    8張 Draw Two Cards,各兩張

    8張 Reverse Cards,各兩張

    8張 Skip Cards,各兩張

    4張 Wild Cards

    4張 Wild Draw Four Cards

˙功能 

    Draw Two Cards

      當玩家出此牌時,下一名玩家必須從牌堆中抽兩張卡片,且不得出牌

    Reverse Cards

      當玩家出此牌時,出牌順序將會逆轉

          一開始引牌為此,則下一家出牌後,方向再逆轉

    Skip Cards

      當玩家出此牌時,下一名玩家將被跳過,不得出牌

    Wild Cards

      當玩家出此牌時,可以指定下一名玩家所出牌的顏色

                                        一開始引牌為此,則下一家可指定出牌顏色,出牌權交給下一家

    Wild Draw Four Cards

      當玩家出此牌時,可指定下下一名玩家所出牌的顏色,下一名玩家將必須從牌堆中抽四張卡片,且不得出牌

          一開始引牌為此,作廢,再抽一張

˙規則

    莊家先翻出第一張牌,稱為引牌,左側玩家接著出牌

    如果是數字牌則依照同數字同顏色出牌

    如果是功能牌則依照上述介紹來動作

    當手中的牌剩下一張時(出倒數第二張時),必須喊 UNO,否則必須從牌堆中抽兩張牌

    當一位玩家出完了手中的牌,該回合結束

˙分數

    數字牌,照數字算分

    功能牌

     Draw Two Card 、 Reverse Card 、 Skip Card : 20分

     Wild Card 、 Wild Draw Four :20分

˙結束

    當一位玩家總分超過五百分時,遊戲結束,最少分的人為贏家

 

 

〔推演過程〕

    畫牌一共54張(扣去重複),加入資源,分配編號,發牌,將四家牌貼出

    製作牌堆圖,抽牌按鈕,讓滑鼠點下去可以抽牌,並且將牌顯示在螢幕上

    將規則寫入,讓電腦可以自動抽牌出牌

    出牌時使用滑鼠點牌,畫色盤讓玩家可以點選顏色(Wild Card 用到)

    回合結束顯示計分板和分數,遊戲結束顯示圖案

    畫箭頭,指出順時針、逆時針順序

    將出在桌面上的牌旋轉,變成正向玩家方向

    畫UNO圖案(喊UNO使用),畫桌子換人時會變色

    Double Buffer 使畫面順暢

 

〔程式架構〕

    OnDrow( )

      showBackG( ) 背景、桌子

      showCard( ) 四位玩家手牌、出到桌面上的牌

      showOther( ) 順序箭頭、抽牌 Take、選色盤、詢問出牌否、顯示遊戲結束、顯示計分板、UNO

        showScore( ) 顯示計分板、計算分數

    

    Timer( )

      timerControl( ) 綠色:Action for NPC 、 藍色:Action for User

        hostTake( ) 電腦當莊家抽引牌

        outCard( ) 電腦出牌

        takeOut( ) 電腦抽牌,抽到的牌可出則出

        dealMagic( ) 如果上家是出功能牌則會在此做事

        KillTimer( ) 輪到 User 出牌,將 Timer 停止

        dealMagic( ) 如果上家是出功能牌則會在此做事

        尋找可出的牌 存入 m_canOutCardNum vector,供繪圖時會高出不可出的卡 //非函式

 

    OnLButtonDown( )

      checkMouseDown( ) 處理所有需要觸發的按鈕:抽牌、選色、出牌、繼續遊戲…

     

〔程式現況〕

    遊戲主體已經寫完成,可玩,完成度 99%

 

〔未來方向〕

    在上方工具列『說明』新增對話框,可顯示 html 說明書