资源简介
完成一个变形版的纸牌21点游戏。该游戏来源于21点游戏,实现人机对战。游戏说明如下:
(1)该游戏需要两副牌,没有Joker,共104张。每张“纸牌”应具有花色与数字两个属性。
(2)游戏在机器与人类玩家之间进行。游戏一开始应先洗牌(将104张牌打乱)。
(3)机器永远是庄家,所以永远先给机器发牌,机器的牌不可见,只能看到机器要了几张牌。机器停止要牌后,再给人类玩家发牌。
(4)游戏胜利与失败的条件与普通21相同;除此以外,一方在当前牌没有爆掉的前提下,如果下一张牌使得手中有两张完全一样的牌(同数字、同花色)则立刻胜利。
(5)游戏结束时机器的牌要全部显示,并提示谁胜利了。
程序设计要求如下:
(1)程序中应至少有Card类和CardGame类。
(2)Card类需要重写Object类的equals(Object o) 函数,用于比较两张牌是否完全一样;重写toString函数,用于输出牌时直接显示牌的花色与数字。
(3)CardGame类应具有shuffle(洗牌)、deal(发牌)、win(胜利判别)等函数。
(4)选择适当的java集合类来实现“发牌牌堆”和“手牌”(不允许都使用数组)。。
代码片段和文件信息
/*
* To change this template choose Tools | Templates
* and open the template in the editor.
*/
package pointgame;
import java.util.ArrayList;
import java.util.Scanner;
enum Color{
HEARTS DIAMOND SPADE CLUB //红桃,方块,黑桃,梅花
}
class Card {
private Color cardColor;
private int number; //牌的面值
public Card(){
}
public Card(Color c int num) {
cardColor = c;
number = num;
}
@Override
public boolean equals(object obj) {
if (obj == this)
return true;
if (!(obj instanceof Card))
return false;
return ((Card)obj).cardColor == this.cardColor &&
((Card)obj).number == this.number ;
}
@Override
public int hashCode() {
int hash = 7;
hash = 59 * hash + (this.cardColor != null ? this.cardColor.hashCode() : 0);
hash = 59 * hash + this.number;
return hash;
}
@Override
public String toString() {
String symble ;
String numberString = ““;
if (cardColor == Color.HEARTS)
symble = “红心“;
else if (cardColor == Color.DIAMOND)
symble = “方块“;
else if (cardColor == Color.SPADE)
symble = “黑桃“;
else
symble = “梅花“;
if (number == 11) {
numberString += “J“;
} else if (number == 12) {
numberString += “Q“;
} else if (number == 13) {
numberString += “K“;
} else if (number == 1){
numberString += “A“;
} else{
numberString += number;
}
return symble + “ “ + numberString + “ “;
}
public Color getCardColor() {
return cardColor;
}
public void setCardColor(Color cardColor) {
this.cardColor = cardColor;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
class CardGame{
private Card[] cardHeap; //排堆
private int cardHeapPos; //发到第几张牌了
private ArrayList playerCards ; //玩家手牌
private ArrayList computerCards; //电脑手牌
public CardGame() {
cardHeap = new Card[104];
playerCards = new ArrayList();
computerCards = new ArrayList();
for(int i = 0; i < 104; i += 4 ) {
for(int j = 0; j < 4; j ++) {
switch(j){
case 0:
cardHeap[i + j] = new Card(Color.HEARTS i % 13 + 1);
break;
case 1:
cardHeap[i + j] = new Card(Color.DIAMOND i % 13 + 1);
break;
case 2:
cardHeap[i + j] = new Card(Color.CLUB i % 13 + 1);
break;
default:
cardHeap[i + j] = new Card(Color.SPADE i % 13
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 0 2011-09-21 13:00 21PointGame\build\classes\.netbeans_automatic_build
文件 2104 2011-09-21 19:05 21PointGame\build\classes\pointgame\Card.class
文件 5290 2011-09-21 19:05 21PointGame\build\classes\pointgame\CardGame.class
文件 1002 2011-09-21 19:05 21PointGame\build\classes\pointgame\Color.class
文件 484 2011-09-21 19:05 21PointGame\build\classes\pointgame\Main.class
文件 52 2011-09-21 13:00 21PointGame\build\classes\pointgame\Main.rs
文件 3728 2011-09-21 00:05 21PointGame\build.xm
文件 85 2011-09-21 00:05 21PointGame\manifest.mf
文件 48785 2011-09-21 00:05 21PointGame\nbproject\build-impl.xm
文件 475 2011-09-21 00:05 21PointGame\nbproject\genfiles.properties
文件 96 2011-09-21 00:05 21PointGame\nbproject\private\private.properties
文件 211 2011-09-21 19:06 21PointGame\nbproject\private\private.xm
文件 2373 2011-09-21 00:05 21PointGame\nbproject\project.properties
文件 519 2011-09-21 00:05 21PointGame\nbproject\project.xm
文件 9314 2011-09-21 19:05 21PointGame\src\pointgame\Main.java
目录 0 2011-09-21 19:05 21PointGame\build\classes\pointgame
目录 0 2011-09-21 13:00 21PointGame\build\classes
目录 0 2011-09-21 00:29 21PointGame\nbproject\private
目录 0 2011-09-21 00:05 21PointGame\src\pointgame
目录 0 2011-09-21 13:00 21PointGame\build
目录 0 2011-09-21 00:05 21PointGame\nbproject
目录 0 2011-09-21 00:05 21PointGame\src
目录 0 2011-09-21 00:05 21PointGame\test
目录 0 2011-09-21 13:00 21PointGame
----------- --------- ---------- ----- ----
74518 24
相关资源
- fckeditor2.6的六个jar包,java-core-2.6.ja
- java实习周记136502
- java给word文档插入水印并设置保护密码
- 传智javaee药品集中采购系统项目mysq
- 利用简单工厂模式,实现简易计算器
- HTML标记一览HTML web java 网页 网站
- js+java实现国密算法SM2
- java多线程+Socket+Swing做的局域网聊天程
- EffectiveJava 第二版
- 毕业生信息管理系统
- 完整都的java聚类算法包括界面
- java遍历特殊二叉树
- 微信商城小程序带JAVA后台
- servlet所需jar包
- 毕业设计 java编写
- Java练手_电子时钟
- java基础思维导图
- JWT(Json Web Token)Java实现jar
- 八数码问题代码java)
- java小程序图形用户界面程序设计
- java 微信版飞机大战完整的图片资源和
- java的excel数据录入与读取代码加完美
- jxl-2.4.2.jar
- java jsp简单的登录功能,验证,数据库
- Java面试笔试资料大全
- javaee-api-6.0.jar JavaEE6 servlet JavaEE6 we
- SeetaFaceJavaDemo4
- SeetaFaceJavaDemo3
- 回溯法解决旅行售货员问题源代码j
- GBN网络协议模拟测试
评论
共有 条评论