簡單的撲克牌比較遊戲
1. 建立一副撲克牌,不考慮大小王
2. 建立兩名玩家,玩家至少要有ID、姓名、手牌等屬性
3. 洗牌,将之前建立的撲克牌順序打亂(說明集合是有序的)
4. 發牌,将洗牌之後的撲克牌集合,從第一張開始,發給兩名玩家,按照一人一張的方式,每人發兩張
5. 開始遊戲,比大小,取兩人各自的點數最大的牌進行比較,點數大的赢,若大小相同比花色(黑紅梅方)
package com.poker;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class PlayPoker {
List<Card> cards ; //牌
List<Player> players; //玩家
//static Player[] players = new Player[2];
PlayPoker(){
this.cards = new ArrayList<Card>();
this.players = new ArrayList<Player>();
}
public static void main(String[] args) {
PlayPoker play = new PlayPoker();
play.addCards();
play.foreach();
play.reCards();
play.addplayer();
play.playerGetCards();
play.playerForeach();
play.campareCards();
}
//加入牌52張無大小王
public void addCards() {
String[] colors = {"黑桃","紅心","草花","方塊"};
String[] num = {"2","3","4","5","6","7","8","9","10","J","Q","K","A",};
System.out.println("---------添加牌-------");
for(int i = 0; i <colors.length; i++) {
for(int j = 0; j < num.length; j++) {
cards.add(new Card(colors[i],num[j]));
}
}
System.out.println("------添加成功--------");
}
//重洗牌 方法不是很好有待改善
public void reCards() {
System.out.println("\n----開始洗牌----");
Random random = new Random();
for(int i =0 ; i < 52; i++) {
int k = random.nextInt(cards.size());
Card c =cards.get(k);
cards.remove(k);
cards.add(random.nextInt(cards.size()),c);
}
System.out.println("-----洗牌結束-------");
}
// 按順序周遊所有的牌
public void foreach() {
System.out.print("添加的牌:");
for(Card c:cards) {
System.out.print(c.color+c.num+" ");
}
}
//添加玩家 限制兩名玩家
public void addplayer() {
Scanner console = new Scanner(System.in);
for( int i = 0; i < 2; i++) {
System.out.println("輸玩家id");
int cinid = console.nextInt();
System.out.println("輸入玩家姓名");
String cinname = console.next();
// players[i] =new Player(id,name);
players.add(new Player(cinid,cinname));
}
}
// 随機取牌發給 個個玩家 這限制了玩家拿牌數量
public void playerGetCards() {
System.out.println("----發牌----");
Random random = new Random();
for(Player player:players) {
for( int j = 0; j < 2; j++) { //這裡的2為拿牌限制
Card c = cards.get(random.nextInt(cards.size()));
player.cards.add(c);
}
// for(int i = 0; i < players.length; i++)
// {
// for( int j = 0; j < 2; j++) { //這裡的2為拿牌限制
// Card c = cards.get(random.nextInt(cards.size()));
// players[i].cards.add(c);
// }
// }
}
System.out.println("-----發牌結束-----");
}
// 周遊 每次玩家的拿牌 并列印
public void playerForeach() {
for(Player player:players) {
for(Card card:player.cards) {
System.out.print(player.name + ": " + card.color + card.num + "\n");
}
}
}
// 列印兩個玩家的最大手牌
// 比較 最大手牌 并列印赢家
public void campareCards() {
for(Player player:players) {
Collections.sort(player.cards,new CardComparator());
}
Player player1 =players.get(0);
Player player2 =players.get(1);
System.out.print(player1.name + "最大的牌是:");
Card card1 = player1.cards.get(1);
System.out.print(card1.color+card1.num + "\n");
System.out.print(player2.name + "最大的牌是:");
Card card2 = player2.cards.get(1);
System.out.print(card2.color+card2.num + "\n");
System.out.println("------比較大小結果------");
if(card1.num==card2.num) {
if(card1.compareTo(card2)>0)
{
System.out.println(player1.name + "獲勝");
}
if(card1.compareTo(card2)==0) {
System.out.println("平");
}
if(card1.compareTo(card2)<0) {
System.out.println(player2.name + "獲勝");
}
}
if(card1.num.compareToIgnoreCase(card2.num)>0) {
System.out.println(player1.name + "獲勝");
}
if(card1.num.compareToIgnoreCase(card2.num)<0) {
System.out.println(player2.name + "獲勝");
}
}
}
package com.poker;
public class Card implements Comparable {
public String color;
public String num;
public Card(String color,String num) {
this.color = color;
this.num = num;
}
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
return this.color.compareTo(((Card)o).color);
}
}
package com.poker;
import java.util.ArrayList;
import java.util.List;
public class Player {
public int id;
public String name;
public List<Card> cards;
public Player(int id,String name) {
this.id = id;
this.name = name;
this.cards = new ArrayList<Card>();
}
public Player()
{
this.cards = new ArrayList<Card>();
}
}
package com.poker;
import java.util.Comparator;
public class CardComparator implements Comparator<Card> {
@Override
public int compare(Card o1, Card o2) {
// TODO Auto-generated method stub
return o1.num.compareTo(o2.num);
}
}