版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、面向對象紙牌游戲實驗報告實驗題目solitaire紙牌游戲實驗目的設計一個簡單的cardgames程序,運用面向對象封裝、繼承、抽象類、抽象方法、多態(tài)、動態(tài)綁定等概念。實驗目標就要求參考windows的紙牌游戲使用java語音實驗內容 單人紙牌游戲,牌桌上有7個堆共28張牌,第一堆1張牌,第二堆2張,。第7堆7張,每一堆的第一張牌朝上,其他朝下。牌桌上還有4個suitpiles,一個deck card堆和一個discard card堆,布局如下程序總體設計紙牌游戲中對于類的設計共有card,cardpile,deckpail,discardpail,suitpile,tablepail,sol
2、itare七個類。簡單地uml圖如下:cardpilecardsuitpiletablepaildiscardpaildeckpailsolitare1,card類: card類主要用于建立紙牌,共有以下幾個屬性, card(int, int) rank() suit() faceup() flip() color() draw(graphics, int, int) width : int height : int red : int black : int heart : int spade : int diamond : int club : intfaceup : booleanr :
3、 ints : intlink : card它主要定義了一個紙牌的屬性,如顏色,長度,寬度,花色,是否背面朝上等。2,cardpile類: 這是個牌堆類,主要是作為基類,供各個堆來繼承使用,它含有以下幾個函數(shù) cardpile(int, int) top() empty() pop() includes(int, int) select(int, int) addcard(card) display(graphics) cantake(card)3,solitare類主要用于圖形界面的顯示 x : int y : int firstcard : card它的每個屬性和操作在子類中都會有重新定義
4、。其中x,y表示每個堆左上角的坐標位置。top(),pop(),isempty(),這三個類函數(shù)通過stack類所提供的成員函數(shù)來操縱紙牌列表。另外還定義了5中虛擬函數(shù): 1,includes 看給定的坐標位置是否在派對邊界之內。 2,cantake 返回該牌堆是否可以取走特定紙牌。 3,addcard 增加一張紙牌到該牌堆 4,display 顯示整幅牌堆 5,select 執(zhí)行響應鼠標單擊的行為3,deckpile,discardpile,suitpile,tablepile分別繼承于cardpile類,并對某些函數(shù)進行重寫,以生成自己的牌堆。代碼分析1.發(fā)配算法該算法先創(chuàng)建52張紙牌(c
5、ard)對象,并放置allcard(arraylist)中,然后模擬現(xiàn)實當中的洗牌操作,主要是利用java的random來打亂allcard里牌的排列順序,然后初始化各個牌堆類: deckpile, discardpile, tablepile, suitpile, movecard。此外還建了一個數(shù)組allpiles(cardpile),用于存儲所有的牌堆類。最后將allcard中的紙牌牌(card)對象分發(fā)至各個堆里。2. select方法傳給該函數(shù)坐標用于判斷點中該牌堆中的某張紙牌,其中因為tablepile要支持選中多張紙牌,要改寫cardpile的方法。cardpile的select
6、方法:public int select (int tx, int ty) if(includes(tx,ty) if(isempty() return -2; else return thepile.size() - 1; else return -1;tablepile的select方法:public int select(int tx, int ty) / todo auto-generated method stub if(!(isempty() int beginx,beginy,endx,endy; /system.out.println(notflipnum+ +cardnum)
7、; beginx = x ; beginy = y + unflipcardseparation * notflipnum; endx = x + card.width; endy = beginy + unflipcardseparation * notflipnum + separation * (thepile.size() - 1 - notflipnum) + card.height; boolean flip_include = beginx = tx & tx = endx & beginy = ty & ty = thepile.size() c = thepile.size(
8、) - 1; return c;/從零開始 else return -1; else return -1; 3. iscanadd方法用于判斷某張紙牌是否可以放于suitepile或tablepilecardpile類public boolean iscanadd( card card) return falase;suitepile類public boolean iscanadd( card card) / todo auto-generated method stub if (isempty() return card.getnum() = 0; card topcard = top();
9、 return (card.gettype() = topcard.gettype() & (card.getnum() = topcard.getnum() + 1); tablepile類:public boolean iscanadd(card card) / todo auto-generated method stub if ( isempty() return card.getnum() = 12; card topcard = top(); return (card.getcolor() != topcard.getcolor() & (card.getnum() = topcard.getnum()-1 );4. refreshtablepile用于刷新tablepile,主要處理走tablepile中的紙牌是剩余紙牌都是背面的時候將最上面的紙牌反過來。public static void refreshtablepile() / system.out.println(refreshtablepile); for(int i=0;i7;i+) if(tablepilei.top() != null) if(!(tablepilei.top().isfaceup() tablepilei.top().setfaceup(true); tablepilei.setn
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【全程復習方略】2020-2021學年高中數(shù)學(人教A版選修2-2)練習:全冊綜合質量評估
- 動物兒歌一年級下冊
- 2025年八年級統(tǒng)編版語文寒假預習 第07講《馬說》
- 【走向高考】2021屆高考歷史(人民版)一輪復習強化作業(yè)精煉:第14講-新興力量的崛起
- 專升本英語考試題型
- 期末測評卷(一)(Lesson10 ~ 12)綜合測評卷 2024-2025學年科普版(三起)英語五年級上冊 (含答案)
- 【名師一號】2021年人教版物理雙基限時練-必修二:第七章-5探究彈性勢能的表達式
- 《創(chuàng)新作文指導》課件
- 2025年廣東省高中學業(yè)水平考試綜合測評卷(一)化學試題(含答案)
- 【備戰(zhàn)2021高考】全國2021屆高中地理試題匯編(11月份):M2中國地理
- 北師大版七年級數(shù)學上冊 期末重難點真題特訓之易錯必刷題型(96題32個考點)(原卷版+解析)
- 2023年公路養(yǎng)護工知識考試題庫附答案
- 高警示(高危)藥品考試試題與答案
- 42山東省棗莊市薛城區(qū)2023-2024學年七年級上學期期末考試生物試題
- 部編版六年級語文下冊第三單元大單元教學設計
- 前端組長述職報告
- 食品安全企業(yè)標準模板
- 鈷酸鋰結構特性
- 臺州造船行業(yè)產(chǎn)值分析
- 2024年度醫(yī)院兒童保健科醫(yī)務人員述職報告課件
- 品牌部工作總結匯報
評論
0/150
提交評論