面向对象发牌Java_面向对象思路的斗地主发牌小程序
一共54張牌 除了大小王之外,每個點數(A-K)分為四種花色:紅心 黑桃 梅花 方塊
Card類(id,字面點數,大小)
NormalCard(花色)
BossCard
2.一共三名玩家,每個玩家具備id,昵稱,牌集合,是否地主,籌碼*
Player(id,nickname,List,isBoss)
*3.洗牌(Collections.shuffle())
*
4.發牌
4.1.隨機一名地主
4.2.發牌(按順序)
4.3.剩下最后三張牌給地主
*5.顯示發牌結果(根據點數大小排序顯示)
Player類(玩家類)
public class Player {
private String name;
private ArrayList handCard;
private String role;
{
role = "農民";
}
public Player() {
}
public Player(String name, ArrayList handCard) {
this.name = name;
this.handCard = handCard;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ArrayList getHandCard() {
return handCard;
}
public void setHandCard(ArrayList handCard) {
this.handCard = handCard;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
@Override
public String toString() {
handCard.sort((h1,h2)->h1.compareTo(h2));
return getName()+"{" + handCard + '}'+"\n"
+"身份:"+getRole();
}
}
卡牌類Poke
public class Poke implements Comparable{
private int pid;
private String cardName;
private int point;
public Poke() {
}
public Poke(int pid, String cardName, int point) {
this.pid = pid;
this.cardName = cardName;
this.point = point;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
@Override
public String toString() {
return cardName;
}
@Override
public int compareTo(Poke o) {
return this.getPoint() - o.getPoint();
}
}
實現功能類Manage
public class Manage {
ArrayList APoke;
Player p1,p2,p3;
private Poke poke;
private int id = 1;
//創建一副撲克牌對象
public void makePoke(){
//先創建點數
String point[] = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
//生成黑桃牌
for (int i = 0; i < point.length ; i++) {
poke = new Poke(id++,"?"+point[i],i);
APoke.add(poke);
}
//生成紅桃牌
for (int i = 0; i < point.length ; i++) {
poke = new Poke(id++,"?"+point[i],i);
APoke.add(poke);
}
//生成梅花牌
for (int i = 0; i < point.length ; i++) {
poke = new Poke(id++,"?"+point[i],i);
APoke.add(poke);
}
//生成方塊牌
for (int i = 0; i < point.length ; i++) {
poke = new Poke(id++,"?"+point[i],i);
APoke.add(poke);
}
poke = new Poke(id++,"JokerQueen",13);
APoke.add(poke);
poke = new Poke(id++,"JokerKing",14);
APoke.add(poke);
}
//洗牌
public void rePoke(){
Collections.shuffle(APoke);
}
//發牌
public void deal(String name){
APoke = new ArrayList<>();
makePoke();
rePoke();
ArrayList card1 = new ArrayList();
ArrayList card2 = new ArrayList();
ArrayList card3 = new ArrayList();
for (int i = 0; i <17 ; i++) {
card1.add(APoke.get(0));
APoke.remove(0);
card2.add(APoke.get(0));
APoke.remove(0);
card3.add(APoke.get(0));
APoke.remove(0);
}
p1 = new Player("p1",card1);
p2 = new Player("p2",card2);
p3 = new Player("p3",card3);
if(p1.getName().equals(name)){
card1.addAll(APoke);
p1.setHandCard(card1);
p1.setRole("地主");
}
if(p2.getName().equals(name)){
card2.addAll(APoke);
p2.setHandCard(card2);
p2.setRole("地主");
}
if(p3.getName().equals(name)){
card1.addAll(APoke);
p3.setHandCard(card3);
p3.setRole("地主");
}
}
}
游戲測試類GameTest
public class GameTest {
public static void main(String[] args) {
Manage m = new Manage();
System.out.println("請輸入地主玩家名字:");
Scanner scan = new Scanner(System.in);
String boss = scan.nextLine();
m.deal(boss);
System.out.println(m.p1.toString());
System.out.println(m.p2.toString());
System.out.println(m.p3.toString());
System.out.println("底牌:" + m.APoke);
}
}
總結
以上是生活随笔為你收集整理的面向对象发牌Java_面向对象思路的斗地主发牌小程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 死磕java并发cas_死磕 java并
- 下一篇: webrtc 语音流java_通过Web