java慕课网第三季_Java入门第三季

package com.yangkai.pai;

import java.util.*;

public class PlayTest {

//创建扑克牌的载体,扑克牌是有序的,不重复载体,所以用List集合

List list=new ArrayList();

List persons=new ArrayList();

Map huaMap=new HashMap(){

{

put((short)0,"红桃");

put((short)1,"黑桃");

put((short)2,"方片");

put((short)3,"梅花");

}

};

/**

* 创建洗牌方法

*/

public void init(){

System.out.println("============洗牌中==========");

//清空牌库

list=new ArrayList();

//创建13*4 也就是 52张牌的对象,因为这些牌是随机排列的,所以使用set集合

Set pais=new HashSet();

for(int i=1;i<14;i++){

for (short j = 0; j 

Pai pai=new Pai();

pai.setHua(j);

pai.setNumber(i);

pais.add(pai);

}

}

//遍历set集合,把牌放入list集合中,也就是放入牌库中

list.addAll(pais);

}

/**

* 创建玩家

*/

public void initPerson(){

System.out.println("==========初始化玩家=========");

Person p1=new Person();

p1.setId(1);

p1.setName("赌神");

persons.add(p1);

Person p2=new Person();

p2.setId(2);

p2.setName("赌圣");

persons.add(p2);

}

/**

* 发牌,每人发两张

*/

public List fapai(){

System.out.println("=========开始发牌=========");

//如果牌数少于4张,调用洗牌方法

if(list.size()<4){

this.init();

}

//获取手牌

List handList=new ArrayList();

for(int i=4;i>0;i--){

//生成一张手牌

HandPai handPai=new HandPai();

//抽牌

Pai pai=list.get(i-1);

//给手牌赋值

handPai.setHua(pai.getHua());

handPai.setNumber(pai.getNumber());

//发给一个玩家

if(i%2==0){

handPai.setName(persons.get(0).getName());

}else{

handPai.setName(persons.get(1).getName());

}

handList.add(handPai);

//从牌库移除一张牌

list.remove(i-1);

System.out.println("玩家:"+handPai.getName()+",发牌:"+huaMap.get(handPai.getHua())+handPai.getNumber());

}

return handList;

}

/**

* 比较两个人的手牌大小

* @param handPais

*/

public void bijiao(List handPais){

Collections.sort(handPais,new PaiCompara());

System.out.println("获胜者为:"+handPais.get(3).getName()+

",最大点数为:"+handPais.get(3).getNumber() +

",花色为:"+huaMap.get(handPais.get(3).getHua()));

}

/**

* 游戏入口

* @param args

*/

public static void main(String[] args) {

System.out.println("===欢迎进入欢乐比大小游戏===");

System.out.println("====================");

System.out.println("====== 1:开始游戏 ===");

System.out.println("====== 2:退出游戏 ===");

System.out.println("====================");

System.out.println("===请输入1并按回车开始游戏===");

Scanner scanner=new Scanner(System.in);

int cmd=scanner.nextInt();

if(cmd == 1){

PlayTest  playTest=new PlayTest();

playTest.init();

playTest.initPerson();

do {

List handPaiList=playTest.fapai();

playTest.bijiao(handPaiList);

System.out.println("====================");

System.out.println("====== 3:继续发牌 ===");

System.out.println("====== 2:退出游戏 ===");

System.out.println("====================");

cmd=scanner.nextInt();

}while (cmd != 2);

System.out.println("===欢迎下次光临===");

}else if(cmd == 2){

System.out.println("===欢迎下次光临===");

}

}

/**

* 手牌对象

*/

class HandPai implements Comparable{

//玩家名称

private String name;

//扑克牌花色 0-红桃 1-黑桃 2-方片 3-梅花

private Short hua;

//牌号 1-13

private int number;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Short getHua() {

return hua;

}

public void setHua(Short hua) {

this.hua = hua;

}

public int getNumber() {

return number;

}

public void setNumber(int number) {

this.number = number;

}

public int compareTo(HandPai o) {

return 0;

}

}

/**

* 定义比较规则

*/

class PaiCompara implements Comparator{

public int compare(HandPai o1, HandPai o2) {

if(o1.getNumber()>o2.getNumber()){

return 1;

}else if(o1.getNumber()

return -1;

}else{

if(o1.getHua()>o2.getHua()){

return 1;

}else if(o1.getHua()

return -1;

}

}

return 0;

}

}

/**

* 这是一个扑克牌对象

*/

public class Pai {

//扑克牌花色 0-红桃 1-黑桃 2-方片 3-梅花

private Short hua;

//牌号 1-13

private int number;

public Short getHua() {

return hua;

}

public void setHua(Short hua) {

this.hua = hua;

}

public int getNumber() {

return number;

}

public void setNumber(int number) {

this.number = number;

}

}

/**

* 创建打牌的玩家

*/

public class Person {

/**

* 玩家id

*/

private int id;

/**

* 玩家名称

*/

private String name;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值