您的位置:首页 > 编程语言 > Java开发

java 小项目:简单扑克牌游戏

2015-05-27 05:44 387 查看
项目要求

1>新建两个玩家

2>创建扑克牌,洗牌

3>发牌,每个玩家没人拿两张,比较大小

4>比较规则:两个玩家选出各种最大的牌,进行游戏,先比较点数大小,点数大的获胜,点数相同则比较花色:黑桃>红心>梅花>方块

5>输出要求:结束时分别输出玩家的手牌情况。

运行结果截图:



Java源码:

Card类:

package com.card;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;

public class Card {
private String number;
private String color;

/**
* Create a pair of new cards
* @return
*/
public ArrayList<Card> createCard(){
String[] carNumber = new String[]{"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
String[] carColor = new String[]{"方块","红心","梅花","黑桃"};
ArrayList<Card> newCards = new ArrayList<Card>();

//Create a pair of new cards
for(int i = 0;i < carColor.length;i ++){
for(int j = 0;j < carNumber.length;j ++){
//  card.id = i;
Card card = new Card();
card.color = carColor[i];
card.number = carNumber[j];
newCards.add(card);
}
}
return newCards;
}

/**
* show the new cards
* @return
*/
public String[] getNewCards(){
String[] newCardGroup = new String[createCard().size()];
for(int i = 0;i < createCard().size();i ++){
newCardGroup[i] =  createCard().get(i).color +createCard().get(i).number ;
}
return newCardGroup;
}

/**
* Create random cards
* @return
*/
public String[] RandomCard(){
Random random = new Random();
String[] cardsArray = getNewCards();
String swapCard = null;
for(int i = 0;i < cardsArray.length;i ++){
int index = random.nextInt(cardsArray.length);
swapCard = cardsArray[i];
cardsArray[i] = cardsArray[index];
cardsArray[index] = swapCard;

}
return cardsArray;
}
}


Game类:

package com.game;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;

import com.card.Card;
import com.player.Player;

public class Game {
public static void main(String[] args) {
// Create new Card class
Card card = new Card();
Player[] player = new Player[2];

Scanner input = new Scanner(System.in);
System.out.println("**********开始创建扑克牌**********");
System.out.println("**********扑克牌创建成功**********");
System.out.println(Arrays.toString(card.getNewCards()));
System.out.println("**********开始洗牌**********");
String[] cardsRandom = card.RandomCard();
System.out.println("**********洗牌结束**********");
System.out.println("**********创建玩家**********");

//Create players
for(int i = 0; i < player.length;i ++){
System.out.println("请输入第" + (i+1) + "玩家的ID和姓名");
System.out.println("请输入ID:");
int id = input.nextInt();
System.out.println("请输入姓名:");
String name = input.next();
Player player1 = new Player(id,name);
player[i] = player1;
}

//Show players' name
for(int i = 0;i < player.length;i ++)
System.out.println("*****欢迎玩家:" + player[i].getName());

System.out.println("**********开始发牌**********");
Random random = new Random();
int index;
for(int i = 0;i < 4;i ++){
System.out.println("*****玩家: " + player[i % 2].getName() + " 拿牌");
index = random.nextInt(cardsRandom.length);
player[i % 2].setCardInfo(cardsRandom[index]);
}

System.out.println("**********发牌结束**********");
System.out.println("**********开始游戏**********");

String[] cardsComp = new String[2];
for(int i = 0;i < player.length;i ++){
cardsComp[i] = player[i].maxCard();
System.out.println("玩家:" + player[i].getName() + "最大的手牌为: " + player[i].maxCard());
}

int result  = maxCard(cardsComp);

if(result == 1)
System.out.println("********玩家 " + player[0].getName() + "获胜");
else if(result == -1)
System.out.println("********玩家 " + player[1].getName() + "获胜");
else
System.out.println("********玩家 " + player[1].getName() + "和玩家 " + "手牌一样大,没有输赢");

System.out.println("**********玩家的手牌为:");
for(int i = 0;i < player.length;i ++)
System.out.println(player[i].getName() + ":[ " + player[i].getCardInfo().get(0) + " , "+ player[i].getCardInfo().get(1) + " ]");

}

public static int maxCard(String[] cards){
Map<String, Integer> cardCompare = new HashMap<String, Integer>();
cardCompare.put("梅花", 4);
cardCompare.put("黑桃", 3);
cardCompare.put("红心", 2);
cardCompare.put("方片", 1);

int winer;
int a = 0;
int b = 0;

a = transfer(cards[0]);
b = transfer(cards[1]);

if(a > b)
winer = 1;
else if(a < b)
winer = -1;
else{
String card1 = cards[0].substring(0,2);
String card2 = cards[1].substring(0,2);

if(cardCompare.get(card1) > cardCompare.get(card2))
winer = 1;
else if(cardCompare.get(card1) < cardCompare.get(card2))
winer = -1;
else
winer = 0;
}
return winer;
}

public static int transfer(String str){
int a = 0;
if(str.substring(2).equals("J"))
a = 11;
else if(str.substring(2).equals("Q"))
a = 12;
else if(str.substring(2).equals("K"))
a = 13;
else if(str.substring(2).equals("A"))
a = 1;
else
a = Integer.parseInt(str.substring(2));
return a;

}

}


Player类:

package com.player;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Player {
private int id;
private String name;
ArrayList<String> cardInfo = new ArrayList<String>();
public Player(int id, String name){
this.id = id;
this.name = name;
}

public ArrayList<String> getCardInfo() {
return cardInfo;
}

public void setCardInfo(String cardInfo) {
this.cardInfo.add(cardInfo);
}

public String maxCard(){
Map<String, Integer> cardCompare = new HashMap<String, Integer>();
cardCompare.put("梅花", 4);
cardCompare.put("黑桃", 3);
cardCompare.put("红心", 2);
cardCompare.put("方片", 1);

ArrayList<String> cards = getCardInfo();
String maxCard = null;
int a ;
int b ;

a = transfer(cards.get(0));
b = transfer(cards.get(1));

if(a > b)
maxCard = cards.get(0);
else if(a < b)
maxCard = cards.get(1);

else{
String card1 = cards.get(0).substring(0,2);
String card2 = cards.get(1).substring(0,2);

if(cardCompare.get(card1) > cardCompare.get(card2))
maxCard = cards.get(0);
else if(cardCompare.get(card1) < cardCompare.get(card2))
maxCard = cards.get(1);
else
maxCard = cards.get(0);
}
return maxCard;
}

public int transfer(String str){
int a;
if(str.substring(2).equals("J"))
a = 11;
else if(str.substring(2).equals("Q"))
a = 12;
else if(str.substring(2).equals("K"))
a = 13;
else if(str.substring(2).equals("A"))
a = 1;
else
a = Integer.parseInt(str.substring(2));
return a;

}
public String getName() {
return name;
}
}


体会:主要应用Java泛型解决,使用Random类和泛型生成随机扑克牌以及实现随机发牌以及手牌比较

项目源码:https://github.com/gannyee/Easy-Game-Cards-Compare
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息