一、前言
本人Java小白,一直想做一个斗地主游戏,正好最近学习到了集合。我们都知道集合分为(Collection(单列集合)家族和Map(双列/映射集合)家族)有着长度可变的特性,用来存储斗地主的卡牌再适合不过了。于是今天从下午五点多写到了晚上,主要是中间有几个地方把我卡住了很长时间。
二、代码
1、创建需要用到的类
按照Java面向对象的设计思想,我首先创建了三个类,People类——用于实例化为玩家、Card类——用于实例化为不同的牌、Room类———模拟斗地主的房间窗口.
1、People类
package com.xiaoxaio.www;
import java.net.IDN;
import java.util.ArrayList;
import java.util.List;
public class People {
private String name; // 用户名
private String ID;
private int HappyBeanNum; // 欢乐豆数量
public List<Card> MyCard;
public People(){
this.MyCard=new ArrayList<>();
};
public People(String name,String ID,int HappyBeanNum){
this.name=name;
this.ID=ID;
this.HappyBeanNum=HappyBeanNum;
this.MyCard=new ArrayList<>();// 引用数据类型,一定要进行初始化,分配内存空间
}
public void setMyCard(Card myCard) {
MyCard.add(myCard);
}
public List<Card> getMyCard() {
return MyCard;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getID(){
return this.ID;
}
public void setID(String ID){
this.ID= ID;
}
public int getHappyBeanNum(){
return HappyBeanNum;
}
public void setHappyBeanNum(int HappyBeanNum){
this.HappyBeanNum=HappyBeanNum;
}
@Override
public String toString(){
return "用户名:"+name+"\t"+"欢乐豆:"+HappyBeanNum+"\n";
}
}
2、Card类
package com.xiaoxaio.www;
// 每一张牌都是一个Card对象
public class Card implements Comparable<Card>{
private String color;
private String number;
private int BigSmall;
public Card(){};
public Card(String color,String number,int BigSmall){
this.number=number;
this.color=color;
this.BigSmall=BigSmall;
}
@Override
public String toString(){
return color+number;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public int getBigSmall() {
return BigSmall;
}
public void setBigSmall(int bigSmall) {
BigSmall = bigSmall;
}
@Override
public int compareTo(Card card_next) {
return this.BigSmall-card_next.BigSmall;
}
}
3、Room类
注意:1、创建一个AllCards数组,用来存放一副完整的扑克牌
2、创建一个arrays数组用来存放玩家
package com.xiaoxaio.www;
import java.util.*;
public class Room {
private List<Card> AllCards =new ArrayList<>(); // 首先存放一个能放一副扑克的列表容器,可以存放多个Card类型的对象
private ArrayList<People> arrays = new ArrayList<>(); // 创建一个用来装People(玩家)的数组
}
里面有很多细节后面会再回头来分析。
三、做一副扑克牌并洗牌
我们在Card类里面定义了number属性和color花色属性,结合数组即可做出一副扑克牌
步骤:1、创建一个numbers数组用来存放所有的数;一个colors数组用来存放四种花色
2、通过for/foreach循环将花色和数值组合在一起,最后别忘了加上大小王!
public class Room {
private List<Card> AllCards =new ArrayList<>(); // 首先存放一个能放一副扑克的列表容器,可以存放多个Card类型的对象
private ArrayList<People> arrays = new ArrayList<>(); // 创建一个用来装People(玩家)的数组
//用实例代码快来实现,每次实例化一个对象的时候就会创建
{ //首先要制作一副扑克牌
String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
String[] colors={"♣","♦","♥","♠"};
int count=1;
for(String number:numbers)
{count++;
for(String color:colors) {
AllCards.add(new Card(color,number,count));
}}
Collections.addAll(AllCards,new Card("
标签:Java,String,斗地主,int,People,AllCards,初探,public,Card
From: https://blog.csdn.net/2303_79532367/article/details/143029056