此游戏是一个简单的并且很基础的java控制台程序。这个扑克牌游戏主要的游戏过程是:首先创建一副扑克牌,创建好了后要进行洗牌,牌洗好了,需要玩家来玩,接下来就创建玩家。有洗好的牌,也有玩家了,那么就开始发牌,发完牌后,比较玩家中手牌的大小,大的那一位获胜。下面是代码:
首先创建一个扑克牌类,扑克牌主要有两个属性,一个是点数,一个是花色。给点数和花色生成getter和setter。然后重载构造函数,一个无参的,一个有参的。在最后还重写了equals方法,判断两个扑克牌是否相等。
public class Poker {
private String point;
private String color;
public Poker(){
}
public Poker(String point,String color){
this.point = point;
this.color = color;
}
public String getPoint() {
return point;
}
public void setPoint(String point) {
this.point = point;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Poker poker = (Poker) o;
return Objects.equals(point, poker.point) &&
Objects.equals(color, poker.color);
}
}
接下来我们创建玩家类,玩家拥有三个属性,一个是id,一个name,另一个是手牌。在这个游戏中,我们给每名玩家会发两张牌,所以用List来存放手牌。同样是创建无参构造方法和有参构造方法。然后就是这三个属性的getter和setter。
import java.util.ArrayList;
import java.util.List;
public class Player {
private String id;
private String name;
private List pokers;
public Player(){
}
public Player(String id,String name){
this.id = id;
this.name = name;
this.pokers = new ArrayList();
}
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;
}
public List getPokers() {
return pokers;
}
public void setPokers(List pokers) {
this.pokers = pokers;
}
}
有了玩家类和扑克类,剩下的就是游戏的主类了。主要的方法有三个,一个是创建玩家createPlayer,一个是洗牌shuffle,另一个是开始游戏的方法play。这个类需要实现Comparator接口,用于比较引用对象的大小。
import java.util.*;
public class Main implements Comparator {
private List playerList; //玩家列表
private List pokerList ; //原始扑克牌列表
private List pokerListAfterShuffle; //洗牌后的扑克牌列表
private Scanner console; //输入控制
private String id; //用户输入的id
private String name; //用户输入的name
private Poker getPoker; //存放发的那张牌
public static void main(String[] args) {
Main game = new Main();
game.createPlayer();
game.shuffle();
game.play();
}
/**
* 在方法的初始化中,给成员变量初始化
*/
public Main(){
playerList = new ArrayList();
pokerList = new ArrayList();
pokerListAfterShuffle = new ArrayList();
console = new Scanner(System.in);
//创建扑克牌,有序的
String[] points = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
String[] colors = {"方块","梅花","红桃","黑桃"}; //同花色的扑克牌大小遵循“黑红梅方”的规定
for (String point : points){
for (String color : colors){
Poker poker = new Poker(point,color);
pokerList.add(poker);
}
}
}
/**
* 创建玩家,一共两个玩家
*/
public void createPlayer(){
System.out.println("----------创建玩家----------");
for (int i = 1; i<3;i++){
System.out.println("请输入第" + i + "位玩家信息:");
System.out.println("请输入玩家id:");
id = console.next();
System.out.println("请输入玩家name:");
name = console.next();
playerList.add(new Player(id,name));
}
for (Player player : playerList){
System.out.println("欢迎玩家:" + player.getName());
}
}
/**
* 因为实现了接口Comparator,所以需要重写compare方法,
* 在后面给扑克牌排序的时候,会调用
* @param o1
* @param o2
* @return
*/
@Override
public int compare(Poker o1, Poker o2) {
if (pokerList.indexOf(o1)>pokerList.indexOf(o2)){
return 1;
}
return -1;
}
/**
* 洗牌
* 洗牌的方式是:将生成的有序的扑克牌,利用随机数,一张一张的抽取出来
* 放在pokerListAfterShuffle列表中
*/
public void shuffle(){
//创建一个随机数
Random random = new Random();
Poker poker = new Poker();
System.out.println("----------开始洗牌----------");
for (int i = 0;ipokerList.indexOf(playerList.get(1)
.getPokers().get(1))){
System.out.println("玩家" + playerList.get(0).getName() + "获胜");
}else
System.out.println("玩家" + playerList.get(1).getName() + "获胜");
System.out.println("----------游戏结束----------");
}
}
下面是游戏的运行结果
以上就是全部内容,如果发现问题,请指出,谢谢。