package solitaire.game;
import java.util.ArrayList;
import java.util.Random;
import solitaire.pile.*;
import solitaire.card.*;
public class Game {
static public ArrayList<Card> allCard;//存储所有纸牌
static public CardPile allPiles [];
static public DeckPile deckPile;
static public DiscardPile discardPile;
static public TablePile tablePile [];
static public SuitPile suitPile [];
static public MoveCardPile moveCard;//干么用的?
static{
//初始化纸牌
allCard = new ArrayList<Card>();
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 CardPile[13];
suitPile = new SuitPile[4];
tablePile = new TablePile[7];
// then fill them in
allPiles[0] = deckPile = new DeckPile(200, 40);
allPiles[1] = discardPile = new DiscardPile(200+Card.width+50, 40);
for (int i = 0; i < 4; i++)
allPiles[2+i] = suitPile[i] =
new SuitPile(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 TablePile(200 + (50+Card.width) * i, 40 + Card.height + 40, i);
////////////////////////////////////////
for (int i = 0; i < 7; i++){
ArrayList<Card> al = new ArrayList<Card>();
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);
//System.out.println(tablePile[i].getCardNum());
tablePile[i].top().setFaceup(true);
}
//////////////////////////////////////////////////
//把分配完TablePile的牌放入未发放堆中
int rest = allCard.size();
for(int i = 0;i < rest;i++ ){
deckPile.addCard(allCard.remove(allCard.size()-1));
//System.out.println( i);
}
moveCard = new MoveCardPile();
}
//从discard移出一张牌放入deck中
public static void transferFromDiscardToDeck(){
// System.out.println( "transferFromDiscardToDeck");
while(!(discardPile.isEmpty())){
Card card = discardPile.pop();
card.setFaceup(false);
deckPile.addCard(card);
}
}
public static boolean testDeckPile(int x,int y){//x和y应该是鼠标点击的坐标吧......
int selectNum = deckPile.select(x, y);
if(selectNum >= 0){
discardPile.addCard(deckPile.pop());
// System.out.println("deckPile_selectNum:"+selectNum);
return true;
}
else if(selectNum == -2){
Game.transferFromDiscardToDeck();
// System.out.println("deckPile_selectNum:"+-2);
return true;
}
else{
// System.out.println("deckPile_selectNum:"+-1);
return false;
}
// System.out.println("deckSize:"+deckPile.thePile.size() );
}
//////////////////////////////
public static boolean testDisCardPile(int x,int y){
int selectNum = discardPile.select(x, y);
if(selectNum >= 0){
moveCard.clear();
moveCard.addCard(discardPile.pop());
moveCard.setFromPile(discardPile);
// System.out.println("discardPile_selectNum:"+selectNum);
return true;
}
else if(selectNum == -2){
// System.out.println("discardPile_selectNum:"+-2);
}
else{
// System.out.println("discardPile_selectNum:"+-1);
}
//System.out.println("discardSize:"+discardPile.thePile.size() );
return false;
}
public static boolean testTablePile(int x,int y){
boolean isDrag = false;
for(int i = 0;i<tablePile.length;i++){
int selectNum = tablePile[i].select(x, y);
if(selectNum >= 0){
moveCard.clear();
int num = tablePile[i].getCardNum();
for(int j = selectNum;j < num;j++){
moveCard.addCard(tablePile[i].pop());
}
moveCard.setFromPile(tablePile[i]);
//System.out.println("moveCard_size:"+moveCard.size() );
return true;
}
else{
// System.out.println("tablePile["+i+"]_selectNum:"+-1);
}
//System.out.println("tablePile["+i+"]_size:"+tablePile[i].thePile.size() );
}
return isDrag;
}
public static boolean isCanAddToSuitPile(int x,int y){
if(moveCard.size()==1){
for(int i = 0;i < 4;i++){
if(suitPile[i].includes(x, y)){
if(suitPile[i].isCanAdd(moveCard.getCard())){
suitPile[i].addCard(moveCard.removeCard());
return true;
}
}
}
}
return false;
}
public static boolean isCanAddtoTablePile(int x,int y){
for(int i=0;i<7;i++){
if(tablePile[i].includes(x, y)){
if(tablePile[i].hashCode()!=moveCard.getFromPile().hashCode())
if(tablePile[i].isCanAdd(moveCard.getCard())){
tablePile[i].addCard(moveCard.clear());
return true;
}
}
}
return false;
}
public static void refreshTablePile(){
// System.out.println("refreshTablePile");
for(int i=0;i<7;i++){
if(tablePile[i].top() != null)
if(!(tablePile[i].top().isFaceup())){
tablePile[i].top().setFaceup(true);
tablePile[i].setNotFlipNum(tablePile[i].getNotFlipNum()-1);
}
}
}
public static void returnToFromPile(){
if(moveCard.getFromPile()!=null)
if(moveCard.getFromPile().hashCode()==discardPile.hashCode()){
while(!(moveCard.isEmpty())){
moveCard.getFromPile().addCard(moveCard.removeCard());
}
}
else
moveCard.getFromPile().addCard(moveCard.clear());
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
oop-xp1.zip_11oop. com
共80个文件
png:55个
java:11个
class:11个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 45 浏览量
2022-09-22
22:42:10
上传
评论
收藏 98KB ZIP 举报
温馨提示
纸牌小游戏,利用面向对象的思想进行开发的,是一个不错的参考程序。
资源推荐
资源详情
资源评论
收起资源包目录
oop-xp1.zip (80个子文件)
oop-xp1
bin
solitaire
game
Game.class 5KB
Main.class 864B
Solitaire.class 3KB
pile
CardPile.class 3KB
SuitPile.class 718B
TablePile.class 4KB
MoveCardPile.class 3KB
DeckPile.class 326B
DiscardPile.class 778B
card
Card.class 3KB
test.class 1KB
picture
1-5.png 388B
3-2.png 921B
2-11.png 2KB
1-7.png 391B
0-4.png 935B
2-0.png 647B
0-5.png 956B
3-8.png 430B
2-7.png 993B
0-10.png 2KB
0-7.png 1KB
2-10.png 2KB
2-1.png 719B
cardSkin1.png 7KB
0-3.png 829B
3-9.png 444B
2-9.png 1KB
1-9.png 445B
0-8.png 1KB
2-2.png 784B
0-0.png 705B
0-12.png 2KB
3-10.png 2KB
3-11.png 2KB
2-4.png 878B
0-9.png 1KB
1-4.png 396B
3-3.png 906B
back.png 2KB
1-0.png 451B
2-5.png 889B
2-6.png 934B
2-12.png 2KB
0-6.png 1000B
0-11.png 2KB
3-7.png 381B
3-5.png 368B
3-4.png 383B
0.png 817B
1-3.png 357B
2-8.png 1KB
1-12.png 2KB
3-6.png 1KB
1-6.png 405B
0-1.png 749B
1-8.png 431B
1-1.png 343B
1-10.png 2KB
1-2.png 357B
2-3.png 792B
3-1.png 829B
3-0.png 736B
1-11.png 2KB
0-2.png 836B
3-12.png 2KB
.settings
org.eclipse.jdt.core.prefs 629B
src
test.java 620B
solitaire
game
Solitaire.java 3KB
Game.java 5KB
Main.java 468B
pile
MoveCardPile.java 2KB
CardPile.java 2KB
DiscardPile.java 333B
DeckPile.java 206B
SuitPile.java 436B
TablePile.java 4KB
card
Card.java 2KB
.project 383B
.classpath 301B
共 80 条
- 1
资源评论
alvarocfc
- 粉丝: 108
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功