需求:在启动游戏房间的时候,应该提前准备好54张牌,完成洗牌、发牌、牌排序、逻辑。
前言
例如:本文就Java基础写出的斗地主游戏的部分功能
一、分析
当系统启动的同时需要准备好数据的时候,就可以用静态代码块了。
洗牌就是打乱牌的顺序。
定义三个玩家、依次发出51张牌 。
给玩家的牌进行排序(拓展) 。
输出每个玩家的牌数据。
二、使用步骤
1.代码展示
定义牌类的变量及方法,代码如下:
package com.atwuliyuan.d3_test;
public class cardon {
private String color;
private String size;
private int index;
public cardon() {
}
public cardon(String color, String size,int index) {
this.color = color;
this.size = size;
this.index=index;
}
public cardon(String s, String s1) {
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
@Override
public String toString() {
return color+size;
}
}
1.做牌 2.洗牌 3.定义三个玩家 4.发牌 5.看牌,代码如下:
package com.atwuliyuan.d3_test;
import java.security.AllPermission;
import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
/**
* @Author: Yuan
* @Description: 在启动游戏房间的时候,应该提前准备好54张牌,完成洗牌、发牌、牌排序、逻辑。
* @Param:
* 功能:1.做牌2.洗牌3.定义三个玩家4.发牌5.排序(拓展,了解,作业)6.看牌
* @return:
*/
public class card {
//定义一个存储54张牌的对象
public static List<cardon> cards=new ArrayList<>();
static {
String[] sizes={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
String[] colors={"♠","♥","♣","♦"};
int index=0;//记录牌的大小
//结合点数和花色
for (String size : sizes) {
for (String color : colors) {
//封装成一个牌对象
cardon ca = new cardon(color, size,index);
//存入到集合容器中去
cards.add(ca);
}
}
//大小王存入到集合容器
cardon ca1=new cardon("🃏","",++index);
cardon ca2=new cardon("🃏","",++index);
Collections.addAll(cards,ca1,ca2);
System.out.println(cards);
System.out.println("***********************");
}
public static void main(String[] args) {
//洗牌
Collections.shuffle(cards);
System.out.println(cards);
//发牌
List<cardon> wanjiayi=new ArrayList<>();
List<cardon> wanjiaer=new ArrayList<>();
List<cardon> wanjiasan=new ArrayList<>();
//开始发牌--从牌中取51张牌发给三个玩家,剩余三张作为底牌
for (int i = 0; i < cards.size()-3; i++) {
//取牌对象
cardon c=cards.get(i);
if(i%3==0){
wanjiayi.add(c);
}else if(i%3==1){
wanjiaer.add(c);
}else if(i%3==2){
wanjiasan.add(c);
}
}
//拿到最后三张底牌(把最后三张底牌取成一个集合)
List<cardon> lastThreeCard =cards.subList(cards.size()-3,cards.size() );
//给玩家的牌排序(从大到小)
System.out.println("玩家一"+wanjiayi);
System.out.println("玩家二"+wanjiaer);
System.out.println("玩家三"+wanjiasan);
System.out.println("底牌"+lastThreeCard);
}
}
2.结果展示
总结
这里对文章进行总结:
以上就是今天做的内容,本文仅仅简单介绍了斗地主游戏的做牌、洗牌、发牌、看牌的过程,还有部分功能之后会更新。