首页 > 编程语言 >Java小白初探斗地主

Java小白初探斗地主

时间:2024-10-17 23:20:23浏览次数:3  
标签:Java String 斗地主 int People AllCards 初探 public Card

一、前言

本人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

相关文章

  • JavaScript初级课程 variables
    下载node。1.申明变量variables.jsletmessage="Hello!";message="World";console.log(message);nodevariables.js2.申明不会变的变量constCOLOR_GREEN="green";console.log(COLOR_GREEN)3.数据类型DataTypes=[number,BigInt,string......
  • Java之Lambda表达式详解
    一、Lambda表达式的概念与特点Lambda表达式是Java8引入的一个重要特性,它提供了一种简洁、优雅的方式来处理集合、过滤、映射等操作。Lambda表达式可以看做是匿名函数,它允许开发者以更简洁的方式声明匿名函数。Lambda表达式的基本语法由箭头指示符“->”表示,它将参数与函数......
  • 每日OJ题_牛客_连续子数组最大和_线性dp_C++_Java
    目录牛客_连续子数组最大和_线性dp题目解析C++代码Java代码牛客_连续子数组最大和_线性dp连续子数组最大和_牛客题霸_牛客网(nowcoder.com)描述:        给定一个长度为 n的数组,数组中的数为整数。请你选择一个非空连续子数组,使该子数组所有数之和尽可能大,......
  • java 第10天 String创建以及各类常用方法
    一.String创建的两种形式1.通过new的当时Stringstr=newString();2.不new的方式 Strings1="";二.new和不new的方式的区别是什么不new创建的字符串首先是拿着值去常量池中查找,是否有该内容,有就用常量池该字符串的地址,没有的话在常量池中创建并使用new的方式创建的字......
  • java学习10.17
    今天继续Java图形化页面的学习窗口的分别显示importjava.awt.;importjava.awt.event.;publicclass_1016{publicstaticvoidmain(String[]args){Frameframe=newFrame();frame.setBounds(500,500,300,300);frame.setAlwaysOnTop(true);//设置GridLay......
  • springboot+vue基于Java的高校学生请假系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景在信息化高速发展的今天,高校教育管理方式正逐步向智能化、便捷化转变。传统的学生请假流程,往往需要学生填写纸质申请表,经过辅导员、院系多级审批,过程繁琐且效率低下。此外,纸质记录也不利于信息的长期保存与查询,易导致信息丢失或管理混......
  • Java 一维数组作为函数参数
    //一维数组的引用#defineSIZE5voidinput(inta[],intlen);voidoutput(inta[],intlen);//函数的声明intmain(void){   inti=0;   intarr[SIZE]={86,85,85,896,45};//同理五个数据只是偶然,可能会更多   //输入   input(arr,SIZE);......
  • 详细介绍java中的锁机制
    Java中的锁机制是并发编程中用来确保多个线程在访问共享资源时不发生数据竞争的关键工具。Java提供了多种锁机制来帮助开发者管理线程同步,主要包括以下几种:1.synchronized锁synchronized是Java中最基本的锁机制,它可以用来修饰方法或者代码块,从而确保同一时间只有一个线程可以......
  • Java常用类和基础API
    目录一、String1.1String的理解1.1.1类的声明1.1.2内部声明的属性:1.2String的实例与连接1.2.1字符串常量的存储位置1.2.2 Strinq的不可变性的理解1.2.3String的连接操作:+1.3String的构造器与常用方法1.3.1常用方法1.4String的课后练习题目1题目2题目......
  • Java-三种线程的实现方式
    1.继承Thread类可以通过创建一个新的类继承Thread类,并重写其run方法来实现线程。classMyThreadextendsThread{@Overridepublicvoidrun(){System.out.println("线程运行中:"+Thread.currentThread().getName());//线程要执行的代码......