• 大小: 250KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: Java
  • 标签: 面向对象  纸牌  java  

资源简介

山东大学等高校的面向对象实验一: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\myframe.class

     文件        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个文件信息

评论

共有 条评论