资源简介
完成一个变形版的纸牌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
相关资源
- 微博系统(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论坛 非常详细
评论
共有 条评论