游戏中先创建扑克牌对象,然后创建玩家,并给玩家发牌,然后显示玩家手中的牌,最后对玩家手中的牌比较大小。
定义了一个玩家类Gamer
package com.payingCard;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
//为游戏创建玩家
public class Gamer {
public int Id ;
public String Name;
List<String> myCards;
public Gamer(){
}
public Gamer(int Id,String Name){
this.Id = Id;
this.Name = Name;
this.myCards =new ArrayList<String>();
}
}
主函数
package com.payingCard;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
public class TwoPlayCard {
static String[] Cards = new String[52];
int[] flag = new int[52];
Scanner scan = new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
TwoPlayCard playcard = new TwoPlayCard();
playcard.CreatCard(); //创建扑克牌
playcard.showCard();
System.out.println("需要创建两位玩家:");
Gamer[] gamer = new Gamer[2]; //创建两个玩家
System.out.println("创建第一位玩家:");
gamer[0]=playcard.CreatGamerAndRuffle(gamer[0]); //玩家实例化,并给他们发牌
System.out.println("创建第二位玩家:");
gamer[1]=playcard.CreatGamerAndRuffle(gamer[1]);
System.out.println("————————————————正在洗牌——————————————");
System.out.println("————————————————洗牌完毕,正在给玩家发牌——————————————");
playcard.ShowGamerCards(gamer[0]);
System.out.println();
playcard.ShowGamerCards(gamer[1]);
playcard.compareGamer(gamer[0],gamer[1]);
}
/*
* 比较两个玩家手中牌的大小
*
*/
public void compareGamer(Gamer gamer1,Gamer gamer2){
String gamer1One = gamer1.myCards.get(0);
String gamer1Two = gamer1.myCards.get(1);
String gamer1Max;
String gamer2One = gamer2.myCards.get(0);
String gamer2Two = gamer2.myCards.get(1);
String gamer2Max;
if(compareCard(gamer1One,gamer1Two)>0){
System.out.println("玩家"+gamer1.Name+"手中最大的牌是:"+gamer1One);
gamer1Max=gamer1One;
}
else{
System.out.println("玩家"+gamer1.Name+"手中最大的牌是:"+gamer1Two);
gamer1Max=gamer1Two;
}
if(compareCard(gamer2One,gamer2Two)>0){
System.out.println("玩家"+gamer2.Name+"手中最大的牌是:"+gamer2One);
gamer2Max=gamer2One;
}
else{
System.out.println("玩家"+gamer2.Name+"手中最大的牌是:"+gamer2Two);
gamer2Max=gamer2Two;
}
if(compareCard(gamer1Max,gamer2Max)>0){
System.out.println("玩家"+gamer1.Name+"获胜!");
}
else
System.out.println("玩家"+gamer2.Name+"获胜!");
}
/*
* compareCard,比较玩家牌的大小。若大小相同则按照 黑桃>红桃>梅花>方块的顺序比较
*
*/
public int compareCard(String card1,String card2 ){
//System.out.println(gamer1.myCards.);
Map<String,Integer> colorSame = new HashMap<String,Integer>() ;
Map<String,Integer> numberSort = new HashMap<String,Integer>() ;
colorSame.put("黑桃", 4);
colorSame.put("红桃", 3);
colorSame.put("梅花", 2);
colorSame.put("方块", 1);
numberSort.put("A", 15);numberSort.put("1", 2);numberSort.put("2", 3);
numberSort.put("3", 4);numberSort.put("4", 5);numberSort.put("5", 6);
numberSort.put("6", 7);numberSort.put("7", 8);numberSort.put("8", 9);
numberSort.put("9", 10);numberSort.put("10", 11);numberSort.put("J", 12);
numberSort.put("Q", 13);numberSort.put("K", 14);
String numb1 =card1.substring(2);
String numb2 =card2.substring(2);
String string1 = card1.substring(0, 2);
String string2 = card2.substring(0, 2);
int number1 = numberSort.get(numb1);
int number2 = numberSort.get(numb2);
if(number1>number2){
return 1;
}
else if(number1<number2)
return -1;
else{ //若字数相等
int value1 = colorSame.get(string1);
int value2 = colorSame.get(string2);
return Integer.compare(value1,value2);
}
}
/*
* 显示玩家手中所持的牌
*/
public void ShowGamerCards(Gamer gamer){
System.out.println("玩家"+gamer.Name+"所持的牌是:");
for (String string : gamer.myCards) {
System.out.print(string+" ");
}
System.out.println();
}
/*
* CreatGamerAndRuffle,创建玩家并给玩家发牌
*/
public Gamer CreatGamerAndRuffle(Gamer gamer){
gamer = new Gamer(1,"sd");
System.out.println("输入玩家的ID:");
int Ids = scan.nextInt();
System.out.println("输入玩家的姓名:");
String Names = scan.next();
gamer.Id = Ids;
gamer.Name = Names;
//给玩家分配牌
// String tempCard=null;
int Random_Int;
for(int i=0;i<2;i++){ //每个玩家发两张卡
do{
Random rd = new Random();
Random_Int = rd.nextInt(52);
}while(flag[Random_Int]==1); //等于1,说明牌发出去了,那么就重新发
flag[Random_Int]=1;
gamer.myCards.add(Cards[Random_Int]);
}
return gamer;
}
//第一步 创建扑克牌
public void CreatCard(){
String[] FlowerColor={"黑桃","红桃","梅花","方块"};
// String[] Cards = new String[52] ; //要创建52张扑克牌
int CardNumber =0;
for(int i=0;i<13;i++){
for(int j=0;j<4;j++){
if(i==0){
Cards[CardNumber]=FlowerColor[j]+'A';
CardNumber++;
}
else if(i<10){
Cards[CardNumber]=FlowerColor[j]+(i+1);
CardNumber++;
}
else if(i==10){
Cards[CardNumber]=FlowerColor[j]+'J';
CardNumber++;
}
else if(i==11){
Cards[CardNumber]=FlowerColor[j]+'Q';
CardNumber++;
}
else if(i==12){
Cards[CardNumber]=FlowerColor[j]+'K';
CardNumber++;
}
}
}
}
public void showCard(){
System.out.println("所创建的扑克牌有:");
int i=0;
for (String string : Cards) {
System.out.print(string+" ");
i++;
if(i%8==0)
System.out.println();
}
System.out.println();
}
}
很简单的游戏,而且游戏的健壮性也很一般。
点击查看更多内容
6人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦