朱 慶 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 說明書