资源简介
山东大学等高校的面向对象实验一: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课程设计-五子棋226111
- 非常简单实用的jsp实现树型菜单,不
- JAVA 控制台 简单的图书管理系统
- SM4java实现
- socket的应用 计算机网络 java版
- jsp+javabean+servlet库存管理系统
- MongoDB-Java驱动API
- Java导出Excel(适合分页_大数据量)
- java运动会分数统计系统课程设计
- 打字训练软件(Java)
- 解决微信扫描二维码APK问题
- Java,使用UDP协议实现CS通信
- mysql-connector-java-5.1.10-bin.jar
- Thinking in java第四版源码 + 书中net.mi
- DES加密算法及其在Java中的实现
- JAVA 商品秒杀demo
- apriori算法求频繁项集和关联规则 mv
- 在线选课系统 java servlet+ jsp+mysql+css
- Java微信支付-微信企业付款到个人
- Java DFA算法实现敏感词、广告词过滤
- 音频分割程序Java语言制作
- Java鹰眼轨迹批量上传
- Java实现五子棋
- 设计模式课程设计---使用5个以上不同
- Java QQ类图
- 基于java Swing的报刊管理系统
- javaEE 网上在线销售系统个人项目
- Java实现Socket长连接和短连接
- java 宾馆客房管理系统
- java聊天室socket编程
评论
共有 条评论