简易扑克牌程序
1)Card类
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Map.Entry;
public class Card {
private static final Exception InputTypeException = null;
List<String> cardlist = new ArrayList<String>();
List<String> cardlistsort = new ArrayList<String>();
List<Integer> indexlist = new ArrayList<Integer>();
List<Integer> indexlist1 = new ArrayList<Integer>();
List<Integer> indexlist2 = new ArrayList<Integer>();
Map<Integer, String> playerlist = new HashMap<Integer, String>();
List<String> playercardlist = new ArrayList<String>();
List<String> playercardlist1 = new ArrayList<String>();
List<String> playercardlist2 = new ArrayList<String>();
public String[] CardColor = { "红桃", "黑桃", "梅花", "方片" };
public String[] CardColorSort = { "方片" , "梅花" , "黑桃" , "红桃"};
public String[] CardNum = { "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K", "A" };
public int i;
public int j;
public int c;
public String card;
public Integer id;
public String name;
Scanner console = new Scanner(System.in);
// 创建扑克牌
public void CreateCard() {
System.out.println("-------------创建扑克牌...-------------");
for (i = 0; i < CardColor.length; i++) {
for (j = 0; j < CardNum.length; j++) {
for (c = 0; c < 52; c++) {
card = CardColor[i] + CardNum[j];
}
cardlist.add(card);
}
}
System.out.println("-------------扑克牌创建成功!-------------");
System.out.println("为:" + cardlist);
}
// 洗牌
public void MixCard() {
System.out.println("-------------开始洗牌...-------------");
Collections.shuffle(cardlist);
//System.out.println("洗牌后:" + cardlist);
System.out.println("-------------洗牌结束!-------------");
}
// 创建玩家
public void CreatePlayer() {
System.out.println("-------------创建玩家...-------------");
for (int p = 1; p < 3; p++) {
System.out.println("请输入第" + p + "位玩家的ID和姓名:");
while(true){
try{
System.out.println("输入ID");
Scanner sc=new Scanner(System.in);
id =sc.nextInt();
break;
}catch(Exception e){
System.out.println("请输入整数类型的ID!");
}
}
System.out.println("输入姓名:");
name = console.next();
playerlist.put(id, name);
}
for (Entry<Integer, String> player : playerlist.entrySet()) {
System.out.println("----欢迎玩家:" + player.getValue());
}
}
// 发牌
public void ShareCards() {
System.out.println("-------------开始发牌...-------------");
int playernum = playerlist.size();
for (int n = -1; n < 2; n = n + playernum) {
for (Entry<Integer, String> player : playerlist.entrySet()) {
System.out.println("----玩家:" + player.getValue() + "-拿牌"
//+ cardlist.get(player.getKey() + n)
);
playercardlist.add(cardlist.get(player.getKey() + n));
}
}
System.out.println("-------------发牌结束!-------------");
}
//开始游戏
public void BeginCardGame(){
System.out.println("-------------开始游戏...-------------");
for (int n = 0; n < playercardlist.size(); n++) {
if (n % 2 == 0) {
playercardlist1.add(playercardlist.get(n));
} else if (n % 2 == 1) {
playercardlist2.add(playercardlist.get(n));
}
}
for (i = 0; i < CardNum.length; i++) {
for (j = 0; j < CardColorSort.length; j++) {
for (c = 0; c < 52; c++) {
card = CardColorSort[j] + CardNum[i];
}
cardlistsort.add(card);
}
}
//System.out.println(cardlistsort);
//玩家最大的手牌
//玩家1:
for(int n=0;n<playercardlist1.size();n++){
int index=cardlistsort.lastIndexOf(playercardlist1.get(n));
indexlist1.add(index);
Collections.sort(indexlist1);
}
int localnum1=indexlist1.get(indexlist1.size()-1);
String max1=cardlistsort.get(localnum1);
System.out.println("玩家:"+playerlist.get(1)+"最大的手牌为:"+max1);
//玩家2:
for(int n=0;n<playercardlist2.size();n++){
int index=cardlistsort.lastIndexOf(playercardlist2.get(n));
indexlist2.add(index);
Collections.sort(indexlist2);
}
int localnum2=indexlist2.get(indexlist2.size()-1);
String max2=cardlistsort.get(localnum2);
System.out.println("玩家:"+playerlist.get(2)+"最大的手牌为:"+max2);
//比大点
for(int n=0;n<playercardlist.size();n++){
int index=cardlistsort.lastIndexOf(playercardlist.get(n));
indexlist.add(index);
}
Collections.sort(indexlist);
//System.out.println(indexlist);
int localnum=indexlist.get(indexlist.size()-1);
//System.out.println(localnum);
String max=cardlistsort.get(localnum);
//System.out.println(max);
if(playercardlist1.contains(max)){
System.out.println("-------------玩家:"+playerlist.get(1)+"获胜!-------------");
}else{
System.out.println("-------------玩家:"+playerlist.get(2)+"获胜!-------------");
}
}
//游戏结束:玩家亮出各自的手牌
public void OpenCards() {
System.out.println("玩家各自的手牌为:");
//System.out.println(playercardlist);
System.out.println(playerlist.get(1) + ":" + playercardlist1);
System.out.println(playerlist.get(2) + ":" + playercardlist2);
}
}
2)Main程序
public class Main {
/**
* 一、创建一副扑克牌
* 包括四种花色:黑桃、红桃、梅花、方片
* 十三中点数:2-10,J、Q、K、A,不考虑大小王
* 二、创建两名玩家
* 玩家至少要有ID、姓名、手牌等属性,手牌为扑克牌的集合
* 三、洗牌
* 将之前创建的"一副扑克牌"打乱顺序
* 四、发牌
* 将洗牌之后的扑克牌集合,从第一张开始,
* 发给两名玩家按照依人一张的方式,没人发两张
* 五、游戏
* 比较两名玩家手中的扑克牌,规则为:取两人各自手中
* 点数最大的牌进行比较,店数大的赢;若两人各自的店数最大的牌相等则再按花色比较。
*/
/**
* @param args
*/
public static void main(String[] args) {
Card card=new Card();
card.CreateCard();
card.MixCard();
card.CreatePlayer();
card.ShareCards();
card.BeginCardGame();
card.OpenCards();
}
}