资源简介
山东大学等高校的面向对象实验一: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 < tablePile[i].getCardNum(); 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 < rest; 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个文件信息
相关资源
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
评论
共有 条评论