栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java】斗地主和斗牛游戏

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java】斗地主和斗牛游戏

目录

一、前言

1.斗地主: 

1.1运行结果: 

2.斗地主升级版

2.1原理:

2.2运行结果:

3.斗牛游戏:

3.1运行结果:


一、前言

练一个斗地主小游戏,只能发看牌

1.斗地主: 
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class PokerPlay2 {
    public static void main(String[] args) {
        ArrayList array=new ArrayList();
        String []colors={"♣","♥","♠","♦"};
        String[] numbers = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
        for (String color:colors){
            for (String number:numbers){
                array.add(color+number);
            }
        }int count=1;
        array.add("大");
        array.add("小");
        while(true){
            System.out.println("第"+count+++"局");
        Collections.shuffle(array);
        ArrayList poker1=new ArrayList();
        ArrayList poker2=new ArrayList();
        ArrayList poker3=new ArrayList();
        ArrayList poker4=new ArrayList();
        for (int i=0;i=array.size()-3){
                poker4.add(poker);
            }else if(i%3==0){
                poker1.add(poker);
            }else if(i%3==1){
                poker2.add(poker);
            }else if(i%3==2){
                poker3.add(poker);
            }
        }
            Scanner sc=new Scanner(System.in);
        String name1=sc.nextLine();
        lookPoker("1", poker1);
        lookPoker("2", poker2);
        lookPoker("3", poker3);
        lookPoker("底牌", poker4);

    }}
    public static void lookPoker(String name,ArrayList arrayList){
        System.out.print(name+"的牌:");
        for (String s:arrayList){
            System.out.print(" "+s);
        }
        System.out.println();


    }
}

1.1运行结果: 

 

2.斗地主升级版

增加了对牌的排序和地主牌的加入,后续可能会增加玩牌的功能

2.1原理:

斗地主升级版的原理就是,创建HashMap用来后续键找值,然后创建ArrayList

集合(创建其他集合也是可以的)ArrayList集合的作用是用来存储和HashMap

对应的键值,通过两个for进行组合每产生一个就将键值加一,产生不同的键值,

所对应的牌是唯一,  这样为后续排列打下了坚实的前提,然后再创建TreeSet集

合(TreeSet集合可以进行自然排序),然后将ArrayList集合中的元素(其实就是

一些数子,这些数字是HashMap中的键值),分配到三个人上,里面的已经被

TreeSet排序完成,调用方法是通过HashMap将每个人的键值来得到对应的牌。

import java.util.*;
public class PokerPuls {
    public static void main(String[] args) {
        //定义HashMap集合
        HashMap hm=new HashMap();
        //定义ArrayList集合用来存储编号
        ArrayList array=new ArrayList();
        //定义花色和底数数组
        String []colors={"♣","♥","♠","♦"};
        String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A","2"};
        int index=0;
        //注意需要将数字for在外头,否则是按花色排序的
        for (String number:numbers){
            for (String color:colors){
                hm.put(index, color+number);
                array.add(index);
                index++;
            }
        }
        hm.put(index, "小");
        array.add(index);
        index++;
        hm.put(index, "大");
        array.add(index);
        int count=1;
       while(true){
           System.out.println("**********第"+count+++"局斗地主**********");
        //洗牌
        Collections.shuffle(array);
        //创建四个牌位分别用来存储三个玩家和三张底牌,因要排序所以用TreeSet集合
        TreeSet play1=new TreeSet();
        TreeSet play2=new TreeSet();
        TreeSet play3=new TreeSet();
        TreeSet play4=new TreeSet();
        for (int i=0;i=array.size()-3){
                play4.add(index1);
            }else if (i%3==0){
                play1.add(index1);
            }else if (i%3==1){
                play2.add(index1);
            }else if (i%3==2){
                    play3.add(index1);
            }
        }
Scanner sc=new Scanner(System.in);
    System.out.print("第一位玩家:");
    String name1=sc.nextLine();
    System.out.print("第二位玩家:");
    String name2=sc.nextLine();
    System.out.print("第三位玩家:");
    String name3=sc.nextLine();
    lookerPoker("1号:"+name1, play1,hm);
    lookerPoker("2号:"+name2, play2,hm);
    lookerPoker("3号:"+name3, play3,hm );
        lookerPoker("底牌", play4,hm);
    int i=0; int num=0;
    while(true){
    System.out.print("几号是地主:");
  num=sc.nextInt();
   switch(num){
       case 1:{i++;
           play1.addAll(play4);break;
       }
       case 2:{i++;
           play2.addAll(play4);break;
       }
       case 3:{i++;
          play3.addAll(play4);break;
       }
       default:{
           System.out.println("输入有误,重新输入");break;
       }
   }
        lookerPoker("1号:"+name1, play1,hm);
        lookerPoker("2号:"+name2, play2,hm);
        lookerPoker("3号:"+name3, play3,hm );
        if (i!=0){
            break;
        }
        System.out.println("-------游戏结束-------");
    } } }
    //定义遍历方法,并通过存储的index1的键来获取对应的值
    public static void lookerPoker(String name,TreeSet  ts,HashMap  hm){
        System.out.print(name+"的牌:");
        for (Integer key:ts){
            String value=hm.get(key);
            System.out.print(value+" ");
        }
        System.out.println();
    }

2.2运行结果:

3.斗牛游戏:
import java.util.*;

public class PokerPlay {
    public static void main(String[] args) {
        //定义一个ArrayList集合用来存放排盒
        //分别用来给玩家和庄家的两副牌
        ArrayList array = new ArrayList();
        ArrayList array1 = new ArrayList();
        //定义花色、点数数组
        String[] color = {"♣", "♦", "♠", "♥"};
        String[] numbers = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
        //封装组合成牌放入集合中
        for (String s1 : color) {
            for (String s2 : numbers) {
                array.add(s1 + s2);
            }
        }

        //定义庄家的牌盒
        String[] color1 = {"♣", "♦", "♠", "♥"};
        String[] number1 = {"10", "J", "Q", "K",};
        for (String s1 : color1) {
            for (String s2 : number1) {
                array1.add(s1 + s2);
            }
        }
        int count = 1;//定义局数
        while (true) {
            int sum1 = 0, sum2 = 0, sum3 = 0;  int sum4 = 0, sum5 = 0;
            //打乱牌的顺序
            Collections.shuffle(array);
            Collections.shuffle(array1);
            //定义五个牌位
            ArrayList poker1 = new ArrayList();
            ArrayList poker2 = new ArrayList();
            ArrayList poker3 = new ArrayList();
            ArrayList poker4 = new ArrayList();
            ArrayList poker5 = new ArrayList();
           // 为了防止玩家崩溃,随机数给庄家无敌牌或普通牌
            Random r=new Random();
            int 换位=r.nextInt(100);
            //给庄家的无敌牌
            for (int i=0;i arrayList){
        //遍历牌
        System.out.print(name + "的牌:");
        for (String poker : arrayList) {
            System.out.print(" " + poker);
        }
        System.out.println();
    }}

其中 在用random,用if是控制庄家的牌

       Random r=new Random();
            int 换位=r.nextInt(100);
            //给庄家的无敌牌
            for (int i=0;i
3.1运行结果:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/458385.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号