Java中游戏结束_简易扑克牌游戏-Java第三季结束

扑克牌类:

import java.util.ArrayList;

import java.util.Comparator;

import java.util.List;

public class Poker implements Comparable{

//静态变量

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

final public static String poker_pattarn [] = {"方块", "梅花", "红桃", "黑桃"};

String number; //数字

String pattarn; //花色

public Poker (String number, String pattarn) {

this.number = number;

this.pattarn = pattarn;

}

public String getNumber() {

return number;

}

public String getPattarn() {

return pattarn;

}

//获取下标

int getIndex (String array[], String string) {

List list = new ArrayList ();

for (String str : array) {

list.add(str);

}

return list.indexOf(string);

}

@Override

//比较大小,先比数字,再比花色

public int compareTo(Poker o) {

if (getIndex(poker_number, this.number) > getIndex(poker_number, o.getNumber()))

return 1;

else if (getIndex(poker_number, this.number) < getIndex(poker_number, o.getNumber()))

return -1;

else {

if (getIndex(poker_number, this.pattarn) > getIndex(poker_number, o.getPattarn()))

return 1;

else if (getIndex(poker_number, this.pattarn) < getIndex(poker_number, o.getPattarn()))

return -1;

else

return 0;

}

}

}

玩家类:

import java.util.ArrayList;

import java.util.List;

public class Player {

int id; //玩家ID

String name; //玩家姓名

List pokers; //玩家手中的扑克牌

public Player (int id, String name) {

this.id = id;

this.name = name;

pokers = new ArrayList ();

}

public List getPokers() {

return pokers;

}

public void addPokers(Poker poker) {

this.pokers.add(new Poker (poker.getNumber(), poker.getPattarn()));

}

public int getId() {

return id;

}

public String getName() {

return name;

}

}

扑克牌游戏类:

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Random;

import java.util.Scanner;

public class PokerGame {

List pokers; //牌堆

Map players; // 玩家

Scanner input;

//扑克牌初始化

public PokerGame () {

pokers = new ArrayList ();

players = new HashMap ();

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

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

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

pokers.add(new Poker (Poker.poker_number[j], Poker.poker_pattarn[i]));

}

}

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

showPokers();

}

//扑克牌显示

public void showPokers () {

String current_pokers [] = new String [Poker.poker_number.length * Poker.poker_pattarn.length ];

for (int i = 0; i < pokers.size(); i ++) {

String poker = pokers.get(i).getPattarn() + pokers.get(i).getNumber();

current_pokers[i] = poker;

}

System.out.println ("当前扑克牌为:" + Arrays.toString(current_pokers));

}

//洗牌

public void shufflePokers () {

Collections.shuffle(pokers);

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

showPokers();

}

//玩家初始化

public void createPlayers () {

int id;

String name;

System.out.println ("----------创建玩家----------");

System.out.println ("请输入第"+(players.size()+1)+"位玩家信息:");

while (true) {

input = new Scanner(System.in);

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

try {

id = input.nextInt();

} catch (Exception e) {

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

continue;

}

if (players.containsKey(Integer.toString(id))){

System.out.println ("玩家ID重复!");

continue;

}

break;

}

System.out.println ("请输入姓名:");

name = input.next();

players.put(Integer.toString(id), new Player (id ,name));

}

//显示玩家信息

public void showPlayers () {

System.out.println ("----------当前玩家信息----------");

for (Map.Entry entry : players.entrySet()) {

System.out.println ("ID:"+entry.getKey() + " 姓名:" + entry.getValue().getName());

}

}

//发牌

public void dealPokers () {

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

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

for (Map.Entry entry : players.entrySet()) {

entry.getValue().addPokers(pokers.get(0));

pokers.remove(0);

System.out.println ("玩家 " + entry.getValue().getName() + " 拿牌");

}

}

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

}

//开始游戏

public void startGame () {

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

Player Max = null;

for (Map.Entry player : players.entrySet()) {

Collections.sort(player.getValue().getPokers());

int size = player.getValue().getPokers().size();

Poker maxPoker = player.getValue().getPokers().get(size - 1);

System.out.println (player.getValue().getName()+"最大的手牌为" + maxPoker.getPattarn() + maxPoker.getNumber());

if (Max == null)

Max = player.getValue();

else {

if (maxPoker.compareTo(Max.getPokers().get(size - 1)) > 0)

Max = player.getValue();

}

}

System.out.println ("----------玩家"+ Max.getName() +"获胜----------");

}

//遍历手牌

public void showPokersOfPlayers () {

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

for (Map.Entry player : players.entrySet()) {

int size = player.getValue().getPokers().size();

String arrayPoker[] = new String [size];

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

arrayPoker[i] = player.getValue().getPokers().get(i).getPattarn() + player.getValue().getPokers().get(i).getNumber();

}

System.out.println (player.getValue().getName() + ":" + Arrays.toString(arrayPoker));

}

}

}

主函数:

public class Initial {

public static void main(String[] args) {

// TODO Auto-generated method stub

PokerGame pokergame = new PokerGame();

pokergame.shufflePokers(); //洗牌

pokergame.createPlayers(); //创建一个玩家

pokergame.createPlayers(); //创建一个玩家

pokergame.showPlayers(); //显示玩家信息

pokergame.dealPokers(); //发牌

pokergame.startGame(); //开始游戏

pokergame.showPokersOfPlayers(); //显示玩家手牌

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值