package com.pokergame;
public class Poker implements Comparable<Poker> {
private String number;//扑克的点数
private String color;//花色
private int value;
public Poker(int value){
this.value=value;
setNumCol();
}
/**
* 102-110代表方片2-10,111-114代表方片J-A
* 202-210代表梅花2-10,211-214代表梅花J-A
* 302-310代表红桃2-10,311-314代表红桃J-A
* 402-410代表黑桃2-10,411-414代表黑桃J-A
*/
public void setNumCol(){
switch(value/100){
case 1:color="方片";
break;
case 2:color="梅花";
break;
case 3:color="红桃";
break;
case 4:color="黑桃";
}
switch(value%100){
case 2:number="2";
break;
case 3:number="3";
break;
case 4:number="4";
break;
case 5:number="5";
break;
case 6:number="6";
break;
case 7:number="7";
break;
case 8:number="8";
break;
case 9:number="9";
break;
case 10:number="10";
break;
case 11:number="J";
break;
case 12:number="Q";
break;
case 13:number="K";
break;
case 14:number="A";
}
}
@Override
public int compareTo(Poker o) {//单张牌比较的方法
// TODO Auto-generated method stub
if(value==o.getValue()){
return 0;
}
if(value%100>o.getValue()%100){
return 1;
}else if(value%100<o.getValue()%100){
return -1;
}else{
if(value/100>o.getValue()/100){
return 1;
}else{
return -1;
}
}
}
/**
* get、set
*/
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
package com.pokergame;
import java.util.*;
public class Player {
private int id;
private String name;
List<Poker> pokerCatch;
public Player(int id,String name){
this.id=id;
this.name=name;
pokerCatch=new ArrayList<Poker>();
}
/**
* 判断手牌类型的方法
*/
public void pokerType(List<Poker> pokerCatch){
Collections.sort(pokerCatch);
//暂时还没想好。。。
}
/**
* get和set
* @return
*/
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;
}
public List<Poker> getPokerCatch() {
return pokerCatch;
}
public void setPokerCatch(List<Poker> pokerCatch) {
this.pokerCatch = pokerCatch;
}
}
package com.pokergame;
import java.util.*;
public class PokerGame {
private List<Poker> pokers;
private List<Player> players;
Scanner input=new Scanner(System.in);
public PokerGame(){//创建牌组
pokers=new ArrayList<Poker>();
int[] p={102,103,104,105,106,107,108,109,110,111,112,113,114,
202,203,204,205,206,207,208,209,210,211,212,213,214,
302,303,304,305,306,307,308,309,310,311,312,313,314,
402,403,404,405,406,407,408,409,410,411,412,413,414};
for(int i=0;i<52;i++){
Poker poke=new Poker(p[i]);
pokers.add(poke);
}
System.out.println("-------------------牌组创建完毕-------------------");
}
/**
* 开始游戏
*/
public void run(){
flag:while(true){
createPlayer();//创建玩家
System.out.println("-------------------洗牌中-------------------");
Collections.shuffle(pokers);//洗牌
distribute();//发牌
consequence();//比大小
System.out.println("你想继续体验这个精致的游戏吗?");
System.out.println("是: 1\t否: 2");
while(true){
try{
int num=input.nextInt();
if(num==2){
break flag;
}else if(num==1){
break;
}else{
System.out.println("您输入的命令有误,请重新输入!");
input.next();
}
}catch(Exception e){
System.out.println("您输入的命令有误,请重新输入!");
input.next();
}
}
}
System.out.println("游戏愉快,再见。");
}
/**
* 创建玩家
*/
public void createPlayer(){
players=new ArrayList<Player>();
for(int i=0;i<2;i++){
int id;
String name;
System.out.println("请输入玩家的ID:");
while(true){
try{
id=input.nextInt();
break;
}catch(Exception e){
System.out.println("您输入的ID有误,请重新输入:");
input.next();
}
}
System.out.println("请输入玩家的用户名:");
while(true){
try{
name=input.next();
break;
}catch(Exception e){
System.out.println("您输入的用户名有误,请重新输入:");
input.next();
}
}
players.add(new Player(id,name));
}
System.out.println("-------------------玩家创建完毕!-------------------");
System.out.println("欢迎玩家"+players.get(0).getId()+": "+players.get(0).getName());
System.out.println("欢迎玩家"+players.get(1).getId()+": "+players.get(1).getName());
}
/**
* 发牌
*/
public void distribute(){
System.out.println("-------------------发牌,请等待-------------------");
for(int i=0;i<6;i++){
players.get(0).pokerCatch.add(pokers.get(i));
i++;
players.get(1).pokerCatch.add(pokers.get(i));
}
}
/**
* 比大小结束游戏
*/
public void consequence(){
System.out.println("-------------------游戏结束-------------------");
Collections.sort(players.get(0).pokerCatch);
Collections.sort(players.get(1).pokerCatch);
System.out.println("------------"+players.get(0).getId()+"号玩家的牌从小到大依次是:"+"------------");
for(Poker poke:players.get(0).pokerCatch){
System.out.println(poke.getColor()+poke.getNumber());
}
System.out.println("------------"+players.get(1).getId()+"号玩家的牌从小到大依次是:"+"------------");
for(Poker poke:players.get(1).pokerCatch){
System.out.println(poke.getColor()+poke.getNumber());
}
for(int i=2;i>=0;i--){
if(players.get(0).pokerCatch.get(i).compareTo(players.get(1).pokerCatch.get(i))>0){
System.out.println("获得胜利的是:"+players.get(0).getName());
break;
}else if(players.get(0).pokerCatch.get(i).compareTo(players.get(1).pokerCatch.get(i))<0){
System.out.println("获得胜利的是:"+players.get(1).getName());
break;
}else{
if(i>0){
continue;
}else{
System.out.println("两家一样大,请重新比过。");
}
}
}
}
public static void main(String[] args) {
System.out.println("*********欢迎来到不完整版炸金花!*********");
PokerGame pokerGame=new PokerGame();
pokerGame.run();
}
}