資源簡介
山東大學等高校的面向對象實驗一:solitaire紙牌游戲
單人紙牌游戲,牌桌上有7個堆共28張牌,第一堆1張牌,第二堆2張,。。。第7堆7張,每一堆的第一張牌朝上,其他朝下。牌桌上還有4個suitpiles,一個deck card堆和一個discard card堆。設計一個簡單的CardGames程序,運用面向對象封裝、繼承、抽象類、抽象方法、多態、動態綁定等概念。

代碼片段和文件信息
package?myAlgorithm;
import?java.util.ArrayList;
import?java.util.Random;
import?myStructure.*;
public?class?Init?{
/**
?*?主要算法
?*?洗牌
?*?牌堆初始化
?*?
?*?注:所有的牌放在動態數組,打亂順序后安排到相應牌堆中
?*/
static?public?ArrayList?allCard;//?所有紙牌動態數組
static?public?PukeStack?allPiles[];//??所有的牌堆堆棧
static?public?DeckStack?deckPile;//?取牌堆棧
static?public?DiscardStack?discardPile;//?展示所取牌的牌堆
static?public?TableStack?tablePile[];//?桌面上主要的七個牌堆
static?public?LastStack?suitPile[];//?最后四個框對應牌堆
static?public?PukeWhenMove?moveCard;//?移動紙牌時的牌堆
static?{
//?初始化紙牌
allCard?=?new?ArrayList();
for?(int?i?=?0;?i?4;?i++)
for?(int?j?=?0;?j?<=?12;?j++)
allCard.add(new?Card(j?i));
//?用交換紙牌對象的方式進行《洗牌》
Random?generator?=?new?Random();
for?(int?i?=?0;?i?52;?i++)?{
int?j?=?Math.abs(generator.nextInt()?%?52);
//?swap?the?two?card?values
Card?temp?=?allCard.get(i);
allCard.set(i?allCard.get(j));
allCard.set(j?temp);
}
//?初始化牌堆
allPiles?=?new?PukeStack[13];//?所有的牌堆
deckPile?=?new?DeckStack(200?40);//?取牌的牌堆
discardPile?=?new?DiscardStack(200?+?Card.width?+?50?40);//?展示所取牌的牌堆
suitPile?=?new?LastStack[4];//?最后右上的四個框牌堆
tablePile?=?new?TableStack[7];//?桌面上主要的七個牌堆
allPiles[0]?=?deckPile;//?取牌的
allPiles[1]?=?discardPile;//?看牌的
for?(int?i?=?0;?i?4;?i++)
//?最后放置的
allPiles[2?+?i]?=?suitPile[i]?=?new?LastStack(200?+?Card.width?+?50
+?Card.width?+?150?+?(40?+?Card.width)?*?i?40);
for?(int?i?=?0;?i?7;?i++)
//?主要的七個
allPiles[6?+?i]?=?tablePile[i]?=?new?TableStack(200
+?(50?+?Card.width)?*?i?40?+?Card.height?+?40?i);
for?(int?i?=?0;?i?7;?i++)?{//?七個牌堆對應的動態數組
ArrayList?al?=?new?ArrayList();
for?(int?j?=?0;?j?
al.add(allCard.remove(allCard.size()?-?1));
}
tablePile[i].addCard(al);
tablePile[i].setCardNum(tablePile[i].getNotFlipNum()?+?1);
tablePile[i].top().setFaceup(true);
}
int?rest?=?allCard.size();
for?(int?i?=?0;?i?
deckPile.addCard(allCard.remove(allCard.size()?-?1));
}
moveCard?=?new?PukeWhenMove();
}
/**
?*?展示的牌放回取牌的地方
?*/
public?static?void?transferFromDiscardToDeck()?{
while?(!(discardPile.isEmpty()))?{
Card?card?=?discardPile.pop();
card.setFaceup(false);
deckPile.addCard(card);
}
}
/**
?*?點擊取牌時,從取牌到展示牌
?*?
?*?@param?x
?*?@param?y
?*?@return
?*/
public?static?boolean?testDeckPile(int?x?int?y)?{
int?selectNum?=?deckPile.select(x?y);
if?(selectNum?>=?0)?{
discardPile.addCard(deckPile.pop());
return?true;
}?else?if?(selectNum?==?-2)?{
Init.transferFromDiscardToDeck();
return?true;
}?else?{
return?false;
}
}
/**
?*?點擊展示牌堆時,第一張放到移動時的牌堆上
?*?
?*?@param?x
?*?@param?y
?*?@return
?*/
public?static?boolean?testDisCard
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????385??2014-11-01?19:16??solitaire\.classpath
?????文件????????385??2014-10-22?08:03??solitaire\.project
?????文件????????629??2014-10-31?20:08??solitaire\.settings\org.eclipse.jdt.core.prefs
?????文件???????4426??2014-11-04?22:45??solitaire\bin\myAlgorithm\Init.class
?????文件???????2153??2014-11-01?19:38??solitaire\bin\myGUI\AboutDialog.class
?????文件???????1527??2014-11-01?19:38??solitaire\bin\myGUI\myfr
?????文件????????816??2014-11-04?20:19??solitaire\bin\myGUI\myMenuBar$1.class
?????文件????????682??2014-11-04?20:19??solitaire\bin\myGUI\myMenuBar$2.class
?????文件???????2029??2014-11-04?20:19??solitaire\bin\myGUI\myMenuBar.class
?????文件???????2922??2014-11-05?08:29??solitaire\bin\myGUI\myPanel.class
?????文件???????2689??2014-11-04?20:14??solitaire\bin\myStructure\Card.class
?????文件????????321??2014-11-04?20:49??solitaire\bin\myStructure\DeckStack.class
?????文件????????739??2014-11-04?20:50??solitaire\bin\myStructure\DiscardStack.class
?????文件????????673??2014-11-01?19:16??solitaire\bin\myStructure\LastStack.class
?????文件???????2421??2014-11-01?19:16??solitaire\bin\myStructure\PukeStack.class
?????文件???????2768??2014-11-01?19:16??solitaire\bin\myStructure\PukeWhenMove.class
?????文件???????4023??2014-11-04?20:47??solitaire\bin\myStructure\TableStack.class
?????文件????????462??2014-11-01?19:41??solitaire\bin\StartGame\Start.class
?????文件????????705??2012-11-13?22:48??solitaire\picture\0-0.png
?????文件????????749??2012-11-13?22:48??solitaire\picture\0-1.png
?????文件???????2066??2012-11-13?22:48??solitaire\picture\0-10.png
?????文件???????2189??2012-11-13?22:48??solitaire\picture\0-11.png
?????文件???????2200??2012-11-13?22:48??solitaire\picture\0-12.png
?????文件????????836??2012-11-13?22:48??solitaire\picture\0-2.png
?????文件????????829??2012-11-13?22:48??solitaire\picture\0-3.png
?????文件????????935??2012-11-13?22:48??solitaire\picture\0-4.png
?????文件????????956??2012-11-13?22:48??solitaire\picture\0-5.png
?????文件???????1000??2012-11-13?22:48??solitaire\picture\0-6.png
?????文件???????1057??2012-11-13?22:48??solitaire\picture\0-7.png
?????文件???????1114??2012-11-13?22:48??solitaire\picture\0-8.png
............此處省略75個文件信息
評論
共有 條評論