蜘蛛纸牌java注释_自己摸索的纸牌游戏代码,感觉还有很多知识不懂,任重道远啊!...

package com.poker;

/*

* 定义一个纸牌的实体类

*/

public class Poker implements Comparable{

String color ;//定义花色

String card ;//定义牌

Double num ;//定义用来比较的数字

public Poker() {

}

public Poker(String color,String card,double num) {//含参构造器

this.color = color ;

this.card = card ;

this.num = num ;

}

@Override

public String toString() {//重写下,打印输出的时候屏蔽掉数字

return color+card;

}

@Override

public int compareTo(Poker o) {//定义比较规则

// TODO Auto-generated method stub

return this.num.compareTo(o.num);

}

}

package com.poker;

import java.util.ArrayList;

import java.util.List;

/*

* 定义一个玩家实体类

*/

public class Player {

String name ;

Integer id ;

List playingcards;

public Player() {

}

public Player(String name , Integer id ,List playingcards) {//含参构造器

playingcards = new ArrayList();//终于知道在构造器中初始化对象的用处了,写在上面某些情况下会出现空指针异常

this.name = name ;

this.id = id ;

this.playingcards = playingcards ;

}

@Override

public String toString() {//重写,方便打印

return "昵称:"+name+"  id:"+id;

}

}

package com.poker;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.InputMismatchException;

import java.util.List;

import java.util.Scanner;

public class Game {

List poker = new ArrayList();//创建扑克牌集合的对象

Player pr1 ; //玩家1 对象

Player pr2 ; //玩家2 对象

public static void main(String[] args) {

// TODO Auto-generated method stub

Game game = new Game();

game.pokerAdd();

game.playerAdd();

game.licensing();

}

public void pokerAdd() {

//创建扑克牌数组

System.out.println("-------------创建扑克牌-----------------------------");

//建立卡牌数组

String [] card = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};

//建立花色数组

String [] color = {"黑桃","红心","梅花","方片"};

//建立比较值数组

int [] num = {2,3,4,5,6,7,8,9,10,11,12,13,14};

//建立花色比较值数组

double [] colorNum = {0.4,0.3,0.2,0.1};

for(int i = 0 ; i < card.length ; i++) {

for(int j = 0 ; j< color.length; j++) {

Poker pk = new Poker(color[j],card[i],num[i]+colorNum[j]);

poker.add(pk);

}

}

System.out.println("------------扑克牌创建成功-----------------------");

System.out.println("为:"+poker);

System.out.println("---------------开始洗牌--------------------------");

Collections.shuffle(poker);//把数组元素顺序打乱

System.out.println("---------------洗牌结束--------------------------");

//System.out.println("为:"+poker);//测试用

}

public void playerAdd() {

for(int i = 0 ; i < 2 ; i++ ) {

System.out.println("-------请输入第"+(i+1)+"位玩家的ID和昵称------------");

System.out.println("输入ID");

try {

Scanner sca = new Scanner(System.in);//初始化输入对象,这步必须写在这里,否则会进入死循环

Integer id = sca.nextInt();

System.out.println("请输入昵称");

String name = sca.next();

if(i==0) {

pr1 = new Player(name,id,null);

System.out.println("成功添加玩家"+pr1);

}else if(i==1) {

pr2 = new Player(name,id,null);

System.out.println("成功添加玩家"+pr2);

}

}catch(InputMismatchException e) {

System.out.println("请输入整数类型的ID");

i--;

continue;

}

}

System.out.println("玩家添加完毕,分别为:"+pr1+","+pr2+"  !");

}

public void licensing() {

for(int i = 0 ; i < 4 ; i ++) {

if(i%2==0) {//方便大家看,pr1是玩家1对象,palyingcards 是玩家对象中的ArrayList集合,用来放牌

pr1.playingcards.add(poker.get(i));

System.out.println("玩家"+pr1.name+"拿牌");

}else {

pr2.playingcards.add(poker.get(i));

System.out.println("玩家"+pr2.name+"拿牌");

}

}

//pr1.playingcards.add(poker.get(0));  //测试用

//System.out.println("玩家"+pr1.name+"拿牌");

//poker.remove(0);

//pr2.playingcards.add(poker.get(0));

//System.out.println("玩家"+pr2.name+"拿牌");

//poker.remove(0);

System.out.println("--------------发牌结束------------------------------");

System.out.println("--------------游戏开始------------------------------");

Collections.sort(pr1.playingcards);

Collections.sort(pr2.playingcards);

//方便大家看,pr1是玩家1对象,palyingcards 是玩家对象中的ArrayList集合,用来放牌

System.out.println(pr1.name+"最大的手牌为"+pr1.playingcards.get(1).color+

pr1.playingcards.get(1).card);

System.out.println(pr2.name+"最大的手牌为"+pr2.playingcards.get(1).color+

pr2.playingcards.get(1).card);

if(pr1.playingcards.get(1).num>pr2.playingcards.get(1).num){

System.out.println("------------玩家"+pr1.name+"获胜-------------------------");

}else {

System.out.println("------------玩家"+pr2.name+"获胜-------------------------");

}

System.out.println("玩家各自的手牌为:");

System.out.println(pr1.name+":"+pr1.playingcards);

System.out.println(pr2.name+":"+pr2.playingcards);

}

}

蜘蛛纸牌游戏• 授权方式:免费源码 • 运行环境:SDK • 源码大小:800 KB • 开发厂商:Home Page • 整理时间:2006-02-27 • 下载统计:19421 • 推荐等级: 版本:1.1.0作者:dujid 说明:http://pub.idr.gov.cn/dujid/projects/araneid---------------------运行 Araneid---------------------对于源文件下载包:1. 下载一个Java开发库,例如 J2sdk1.4.2 等版本,http://java.sun.com/ 上有;2. 编译所有的源文件;3. 复制 images 目录到程序运行目录,如果目录放置错误,程序会没有图像显示;4. 运行 dujid.araneid.Araneid(默认) 。对于发布包:1. 下载一个Java运行时,例如 J2re1.4.2 等版本,http://java.sun.com/ 上有;2. 执行 classes 目录中的 start.bat---------------------对于开发者---------------------程序在 Windows XP J2sdk 1.3 下开发,使用编辑器 JCreator 2.5 Pro源目录(src)中 araneid.jcw 是 JCreator 的工作空间文件。后来在 J2sdk1.4.2 下修正,使用编辑器 Intellij IDEA源目录(src)中 araneid.ipr 和 araneid_old.ipr 分别是 Intellij IDEA 3 和 Intellij IDEA 4 的工程文件。软件介绍“蜘蛛纸牌”游戏的目标是以最少的移动次数将十叠牌中所有最前面的牌都移走。 如要将十叠牌中所有最前面的牌都移走,请将牌从一列移到另一列,直到将一牌套从 K 到 A 依次排齐。当一组牌从 K 到 A 依次排齐时,这些牌就会被移走。 蜘蛛纸牌玩法 在“游戏”菜单上,单击“开局”。 “蜘蛛纸牌”用两副牌玩。新一局游戏开始时,发有十叠牌,每叠中只有一张正面朝上。其余的牌放在窗口右下角的五叠牌叠中;新一轮发牌时用这些牌。 移牌的方法是将牌从一个牌叠拖到另一个牌叠。移牌的规则如下: 可以将牌叠最底下的牌移到空牌叠。 可以将牌从牌叠最底下移到牌值仅次于它的牌上,不论牌套或颜色如何。 可以像对待一张牌一样移动一组同样牌套、依序排好的牌。 准备新一轮发牌时,请单击“发牌”,或者单击窗口右下角的牌叠。 在新一轮发牌之前,每一叠中都必须有牌。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值