




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、面向?qū)ο蠹埮朴螒驅(qū)嶒瀳蟾鎸嶒烆}目solitaire紙牌游戲?qū)嶒災(zāi)康脑O(shè)計一個簡單的cardgames程序,運用面向?qū)ο蠓庋b、繼承、抽象類、抽象方法、多態(tài)、動態(tài)綁定等概念。實驗?zāi)繕?biāo)就要求參考windows的紙牌游戲使用java語音實驗內(nèi)容 單人紙牌游戲,牌桌上有7個堆共28張牌,第一堆1張牌,第二堆2張,。第7堆7張,每一堆的第一張牌朝上,其他朝下。牌桌上還有4個suitpiles,一個deck card堆和一個discard card堆,布局如下程序總體設(shè)計紙牌游戲中對于類的設(shè)計共有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表示每個堆左上角的坐標(biāo)位置。top(),pop(),isempty(),這三個類函數(shù)通過stack類所提供的成員函數(shù)來操縱紙牌列表。另外還定義了5中虛擬函數(shù): 1,includes 看給定的坐標(biāo)位置是否在派對邊界之內(nèi)。 2,cantake 返回該牌堆是否可以取走特定紙牌。 3,addcard 增加一張紙牌到該牌堆 4,display 顯示整幅牌堆 5,select 執(zhí)行響應(yīng)鼠標(biāo)單擊的行為3,deckpile,discardpile,suitpile,tablepile分別繼承于cardpile類,并對某些函數(shù)進行重寫,以生成自己的牌堆。代碼分析1.發(fā)配算法該算法先創(chuàng)建52張紙牌(c
5、ard)對象,并放置allcard(arraylist)中,然后模擬現(xiàn)實當(dāng)中的洗牌操作,主要是利用java的random來打亂allcard里牌的排列順序,然后初始化各個牌堆類: deckpile, discardpile, tablepile, suitpile, movecard。此外還建了一個數(shù)組allpiles(cardpile),用于存儲所有的牌堆類。最后將allcard中的紙牌牌(card)對象分發(fā)至各個堆里。2. select方法傳給該函數(shù)坐標(biāo)用于判斷點中該牌堆中的某張紙牌,其中因為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中的紙牌是剩余紙牌都是背面的時候?qū)⒆钌厦娴募埮品催^來。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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【勞動合同】計量工程技術(shù)人員勞動合同8篇
- 2024年度民主生活會點評模板
- 小學(xué)六年級下英語試卷
- 英語小學(xué)試卷模板
- 醫(yī)院投藥合同范本
- 汽車電子控制技術(shù)??荚囶}+答案
- N2級護理模考試題含答案
- 農(nóng)資化肥合同范本
- 中醫(yī)康復(fù)治療技術(shù)模擬考試題+參考答案
- 開荒保潔租房合同范本
- 2025年旅行與旅游的未來:擁抱可持續(xù)與包容性增長報告(英文版)-世界經(jīng)濟論壇
- 2025年湖南水利水電職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年徐州生物工程職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 向量的數(shù)量積說課
- 2024年全國體育專業(yè)單獨招生考試數(shù)學(xué)試卷試題真題(含答案)
- 2025年中糧集團有限公司招聘筆試參考題庫含答案解析
- 2023年12月大學(xué)英語四級第一套真題和答案
- 河北省職業(yè)院校技能大賽建筑信息模型建模與應(yīng)用(高職組)賽項參考試題及答案
- T-CBIA 010-2024 營養(yǎng)素飲料標(biāo)準(zhǔn)
- 艾滋病耐藥報告解讀
- 創(chuàng)新思維與創(chuàng)造力開發(fā)(山西經(jīng)貿(mào)職業(yè)學(xué)院)知到智慧樹答案
評論
0/150
提交評論