首页 > IT职业 > IT职场 > 学习三季JAVA入门基础,完成的扑克牌课程代码
学习完JAVA入门三季,按课程要求完成扑克牌代码的编写。其中的游戏玩家的人数和可得到的手牌张数,均从键盘输入来确定。因为是初学JAVA,希望多指点。谢谢。 1、首先建一人物类。属性有姓名和 ID。用于游戏人物继承。
package cn.davisli.carddemo;
/**
* 用于继承的人物类。
* @author Administrator
*
*/
public class Person {
private String id;
private String name;
public Person() {
}
public Person(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
} 2、创建扑克牌类。属性有花色和数字字符。用于生成一副扑克牌。
package cn.davisli.carddemo;
/**
* 扑克牌类。
*
* @author Administrator
*
*/
public class Card {
// 花色属性。
private String suit;
// 牌面点数属性。
private String numberOfChar;
public String getSuit() {
return suit;
}
public String getNumberOfChar() {
return numberOfChar;
}
// 构造方法。
public Card(String suit, String numberOfChar) {
this.suit = suit;
this.numberOfChar = numberOfChar;
}
}
3、创建游戏玩家类。继承自person类。其中增加手牌集合HashSet属性Hands,用于存放所得到的牌,游戏人物创建后加入HashMap集合中保存。
类中有创建玩家的方法,发牌的方法和打印玩家信息的方法。
package cn.davisli.carddemo;
/**
* 游戏玩家类。
*/
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
//继承Person类.
public class PlayerGenerator extends Person {
// 手牌属性。因为手牌不止一张,且不能重复,所以用HashSet集合来存放玩家的牌。
private HashSet hands;
// 玩家用HashMap集合存放,
private static Map gamePlayer;
public PlayerGenerator() {
gamePlayer = new HashMap();
}
public PlayerGenerator(String id, String name) {
super(id, name);
this.hands = new HashSet();
}
public HashSet getHands() {
return hands;
}
public static Map getGamePlayer() {
return gamePlayer;
}
public void playCard() {
// 取牌。
ArrayList card = CardGenerator.getCard();
// 键盘输入,确定玩家的手牌数量。
Scanner input = new Scanner(System.in);
System.out.println();
System.out.print("请输入每个玩家可取得的手牌张数:");
int count = input.nextInt();
// 定位发牌指针。
int cardNumber = 0;
// 开始循环发牌。
for (int i = 0; i person = gamePlayer.values();
// 迭代玩家信息。
Iterator it = person.iterator();
while (it.hasNext()) {
PlayerGenerator p = (PlayerGenerator) it.next();
// 取出一张牌。
Card c = card.get(cardNumber);
// 玩家获得牌。
p.hands.add(c);
System.out.println("玩家:" + p.getName() + " 拿牌 ");
// 发牌指针指向下一张。
cardNumber++;
}
}
}
public void addPlayer() {
System.out.println();
// 自定义键盘输入玩家人数。
Scanner input = new Scanner(System.in);
System.out.print("请输入游戏人数:");
int crew = input.nextInt();
int i = 1;
// 根据人数创建玩家对象属性。
while (i gamePlayer) {
System.out.println();
// 从Map中取出玩家信息。
Collection ps = gamePlayer.values();
System.out.println("创建游戏人物如下:");
// 循环输出信息。
for (Person person : ps) {
System.out.println("游戏者ID号:" + person.getId() + " 姓名:"
+ person.getName());
}
}
// 获取创建的游戏玩家Map集合方法。
public static Map getPlayer() {
return gamePlayer;
}
} 4、创建生成一副扑克牌的类。扑克牌生成后,存放于Arraylist数组中。
类中有扑克牌的创建方法和洗牌方法。
package cn.davisli.carddemo;
/**
* 扑克牌生成类。
*/
import java.util.ArrayList;
import java.util.Collections;
public class CardGenerator {
// 此属性是为了扑克牌生成后,放入有序的ArrayList集合中。
private static ArrayList setCard;
// 初始化ArrayList.
public CardGenerator() {
setCard = new ArrayList();
}
// 生成扑克牌的方法。
public void cardList() {
String[] suit = { "黑桃", "红心", "梅花", "方块" };
String[] numberOfChar = { "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K", "A" };
for (int i = 0; i getCard() {
return setCard;
}
// 打印一副牌中的所有张数。(共52张).
public static void printCard(ArrayList setCard) {
System.out.println();
for (int i = 0; i shuffle(ArrayList setCard) {
Collections.shuffle(setCard);
return setCard;
}
}
5、创建一个手牌比较排序类,并输出。实现Comparator接口。
package cn.davisli.carddemo;
/**
* 排序类。
*/
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class ComparatorCard implements Comparator {
public static void compare() {
System.out.println();
// 获取玩家。
Map person = new HashMap();
person = PlayerGenerator.getPlayer();
Collection p = person.values();
List listcard = new ArrayList();
for (PlayerGenerator playerGenerator : p) {
Set c = playerGenerator.getHands();
for (Card card : c) {
listcard.add(card);
System.out.println(playerGenerator.getName() + " "
+ card.getSuit() + card.getNumberOfChar());
}
}
// 各玩家手牌排序后输出。
System.out.println();
Collections.sort(listcard, new ComparatorCard());
for (int i = 0; i 0) {
return -1;
} else if (resultNum 0) {
return 1;
} else if (resultSuit 6、执行程序,Main方法。
package cn.davisli.carddemo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class GameTest {
public static void main(String[] args) {
//创建一副牌。
CardGenerator creatCard = new CardGenerator();
creatCard.cardList();
//获取创建的牌并打印输出。
ArrayList pairCard = new ArrayList();
pairCard = CardGenerator.getCard();
CardGenerator.printCard(pairCard);
//洗牌。
CardGenerator.shuffle(pairCard);
//创建游戏玩家.
PlayerGenerator creatPlayer=new PlayerGenerator();
creatPlayer.addPlayer();
//获取并打印输出创建的游戏玩家。
Map playerInfo=new HashMap();
playerInfo=PlayerGenerator.getPlayer();
PlayerGenerator.printUser(playerInfo);
//开始发牌。
creatPlayer.playCard();
//排序输出玩家手牌.
ComparatorCard.compare();
}
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/930/viewspace-2798469/ ,如需转载,请注明出处,否则将追究法律责任。