Java实现斗地主与猜数字游戏详细流程

目录
  • 斗地主小游戏之洗牌发牌
    • 任务描述
    • 运行结果
    • 任务目标
    • 实现思路
    • 实现代码
  • 猜数字游戏
    • 任务描述
    • 运行结果
    • 任务目标
    • 实现思路
    • 实现代码
  • 总结

斗地主小游戏之洗牌发牌

任务描述

编写一个斗地主发牌洗牌的程序,要求按照斗地主的规则完成洗牌发牌的过程,牌面由花色色和数字(包括J,Q,K,A字母)组成,花色有红桃,黑桃,方块,梅花组成。还设有大王和小王。将这54张牌的顺序打乱,有三位玩家参与游戏,每人轮流一次摸一张牌,剩余的三张作为底牌,程序结束,打印出每人手中的纸牌和底牌。

运行结果

任务目标

  • 学会分析"斗地主小游戏之洗牌发牌"程序的实现思路。
  • 能够根据思路独立完成"斗地主小游戏之洗牌发牌"程序的代码编写,编译及运行。
  • 掌握ArrayList和HashMap集合的特点以及增强for循环的使用。

实现思路

①要实现纸牌程序,首先要在程序中添加54张牌,这些牌包括红桃,黑桃,梅花,方块各13张,加上大王和小王。

②将花色集合和数字集合这两个集合进行嵌套循环,将花色与数字组合,形成52张牌,并且赋予编号,将组合后的牌放入HashMap集合中,集合的key值是编号,value值是组装完成的纸牌,还有大王和小王,由于组装规则不一致,需要单独使用add()方法将这两张纸牌加入到HashMap集合中。

③创建一个数字集合,用这个数字集合来替代纸牌完成洗牌和发牌的操作,由于一共有54张牌,所以创建集合的范围为0-53。

④可以使用Collections类的shuffle()方法完成打乱数字集合的操作,实现洗牌的效果。由于只有三个人,所以可以使用for循环,通过将数字与3取余的方法,将代表不同纸牌的数字分配给不同的人和底牌,实现发牌效果。

⑤洗牌发牌完成之后,可通过Collections类的sort()方法完成排序,之后通过增强for循环HashMap集合,根据数字查找对应的纸牌字符串,并存入新创建的字符串集合中,最后展示字符串集合。

实现代码

package Swing;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 public class DoudiZhu {
     public static void main(String[]args) {
         //准备花色
         ArrayList<String>color=new ArrayList<String >();
         color.add("黑桃");
         color.add("红桃");
         color.add("方块");
         color.add("梅花");
         //准备数字,用列表将纸牌从大到小排列
         ArrayList<String >number=new ArrayList<String >();
         for(int i=3;i<=10;i++){
             number.add(i+"");
         }
         number.add("J");
         number.add("Q");
         number.add("K");
         number.add("A");
         number.add("2");
         //定义一个map集合,用来将数字与每一张纸牌进行对应
         HashMap<Integer,String>map=new HashMap<Integer,String>();
         //纸牌编号
         int index=0;
         //循环纸牌数字
         for(String thisNumber:number){
             //循环纸牌花色
             for(String thisColor:color){
                 //将花色与数字组合,形成52张牌,并赋予编号
                 map.put(index++,thisColor+thisNumber);
             }
         }
         map.put(index++,"小王");
         map.put(index++,"大王");
         //创建0-53的数字集合代表54张牌
         ArrayList<Integer>cards=new ArrayList<Integer>();
         for(int i=0;i<=53;i++){
             cards.add(i);
         }
         //洗牌,使用Collections工具类的shuffle()方法
         Collections.shuffle(cards);
         //创建三个玩家和底牌
         ArrayList<Integer>iPlayer=new ArrayList<Integer>();
         ArrayList<Integer>iPlayer2=new ArrayList<Integer>();
         ArrayList<Integer>iPlayer3=new ArrayList<Integer>();
         ArrayList<Integer>iSecretCards=new ArrayList<Integer>();
         //遍历这副洗好的牌,遍历的过程中,将牌发到三个玩家和底牌中
         for(int i=0;i<cards.size();i++){
             if(i>=51){
                 //留取三个底牌
                 iSecretCards.add(cards.get(i));
 ​
             }else{
                 if(i%3==0){//与3取余为0的发给玩家1
                     iPlayer.add(cards.get(i));
                 }else if(i%3==1){//与3取余为1的发给玩家2
                     iPlayer2.add(cards.get(i));
                 }else {//剩余的牌发给玩家3
                     iPlayer3.add(cards.get(i));
                 }
             }
         }
         //对每个人手中的牌进行排序,使用的使Collections工具类中的sort()方法
         Collections.sort(iPlayer);
         Collections.sort(iPlayer2);
         Collections.sort(iPlayer3);
         ArrayList<String>sPlayer=new ArrayList<String>();
         ArrayList<String>sPlayer2=new ArrayList<String>();
         ArrayList<String>sPlayer3=new ArrayList<String>();
         ArrayList<String>sSectCards=new ArrayList<String>();
         //循环主键,从map中获取纸牌
         for (Integer key:iPlayer){
             sPlayer.add(map.get(key));
         }
         for (Integer key:iPlayer2){
             sPlayer2.add(map.get(key));
         }
         for (Integer key:iPlayer3){
             sPlayer3.add(map.get(key));
         }
         for (Integer key:iSecretCards){
             sSectCards.add(map.get(key));
         }
         //将分发的牌显示出来
         System.out.println("玩家1:"+sPlayer);
         System.out.println("玩家2:"+sPlayer2);
         System.out.println("玩家3:"+sPlayer3);
         System.out.println("底牌:"+sSectCards);
     }
 }

猜数字游戏

任务描述

编写一个猜数字游戏,这个游戏就是"你出个数字,我来猜",程序后台预先生成一个0-9的随机数,用户键盘录入一个所猜的数字,如果输入的数字与后台预先生成的数字相同,则表示猜对了,这时,程序会打印出"恭喜,答对了",如果不相同,则比较输入的数字和后台预先生成的数字的大小,如果大了,打印"sorry,你猜大了!";如果小了,会打印"sorry,你猜小了";如果一直猜错,则游戏一直进行下去,直到数字猜对为止。

运行结果

任务目标

  • 学会分析"猜数字游戏"程序的实现思路。
  • 根据思路独立完成"猜数字游戏"的源代码编写,编译和运行。
  • 掌握在程序中使用if选择结构和while循环结构语句进行运算操作。

实现思路

①要实现这个功能,首先程序要在后台预先生成一个0-9的随机数,生成随机数可以使用Random类中的nextInt(int n)方法,其具体的定义如下:

 public int nextInt(int n)

②要使用键盘输入所猜的数字,可以使用Scanner类,可以让用户从键盘中输入数字。

 Scanner sc=new Scanner(System.in);
 int i=sc.nextInt();

③输入数字后,需要比较键盘输入的数字和后台预先生成的数字,由于猜数字并非一定一次成功,很可能是多次进行,因此可以通过while循环使程序能够多次从键盘输入,每次输入都进行猜数字对错判断。如果猜对了,跳出循环,输出"恭喜,你答对了!",游戏结束。

④如果猜错,这时使用if....else语句判断,将错误分为猜大了和猜小了两种结果。如果猜大了,打印"sorry,你猜大了!"继续下一次循环;如果猜小了,打印"sorry,你猜小了!"继续下一次循环。根据结果,给出提示,接着继续猜数字,游戏继续。

实现代码

 package math;
 import java.util.Random;
 import java.util.Scanner;
 public class CaishuZi {
     public static void main(String[] args) {
         int randomNumber = new Random().nextInt(10);
         System.out.println("随机数已经生成");
         System.out.println("请输入你所猜的数字");
         Scanner sc =new Scanner(System.in);
         int enterNumber =sc.nextInt();
         //通过while循环,进行猜数字对错判断
         //猜对,跳出循环,游戏结束
         while(enterNumber!=randomNumber){
             //猜错了,根据结果,给出提示,接着猜数字,游戏继续
             if(enterNumber>randomNumber){
                 //猜大了给出的提示
                 System.out.println("sorry,你猜大了");
             }else{
                 //猜小了,给出的提示
                 System.out.println("sorry,你猜小了");
             }
             //输入猜的数字
             System.out.println("请输入你猜的数字");
             enterNumber = sc.nextInt();
         }
         System.out.println("恭喜你,答对了!");
     }
 }

总结

通过这两个实例让我们学习了如何去分析一个小的项目,如何划分实现项目步骤以及如何用代码去实现这个项目,并且通过演练一些比较有趣的小游戏可以增加我们对开发语言的兴趣,为我们以后大的项目开发积累经验,提升自身竞争力。

到此这篇关于Java实现斗地主与猜数字游戏详细流程的文章就介绍到这了,更多相关Java游戏内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 利用Java实现简单的猜数字小游戏

    目录 实现思路 代码实现 实现思路 由计算机随机产生1~100的整数.用户猜测计算机产生的数字,并输入数字,当输入的数字与计算机产生的数字相同时输出恭喜你,猜对了.当输入的数字小于计算机产生的数字输出太小了,当输入的数字大于计算机产生的数字输出太大了 可以用for循环设定游戏猜的次数,增加代码的可玩性 代码实现 import java.util.Random; import java.util.Scanner; public class User { public static void mai

  • Java超详细教你写一个斗地主洗牌发牌系统

    目录 一.斗地主 1.前言 2.介绍 3.图解 二.准备牌 1.代码示例 2.数据展示 三.洗发牌与排序 代码示例 四.看牌(打印到控制台) 1.代码示例 2.展示 六.总结 一.斗地主 1.前言 相信每位看过<赌神>的同学都知道,里面有一种神奇的类似于魔术的力量. 没错!我们今天要说的这个神奇的东西就是:特异功能(不是) 就是:斗地主的洗牌发牌系统!!! 2.介绍 扑克牌经典游戏"斗地主"相信很多人都会玩,这次就用Java语言来编写一个斗地主的洗牌发牌程序,要求按照斗地主

  • Java模拟实现斗地主的洗牌和发牌

    本文实例为大家分享了Java实现斗地主的洗牌和发牌的具体代码,供大家参考,具体内容如下 案例分析: 我们需要模拟斗地主过程中的洗牌.发牌和看牌.而且要求牌是排好序的. 1.每张扑克牌都有花色和点数,所以我们可以先把花色和点数存进两个字符串数组,然后再存进集合里,而因为我们后面涉及到对牌进行洗牌还有排序等等,所以我们选择TreeMap集合来存储,键是扑克牌的编号,值是扑克牌的花色和点数(把花色和点数拼接成一个字符串). 2.洗牌洗的是编号,我们再用ArrayList集合来存储牌的编号,调用Coll

  • java集合模拟实现斗地主洗牌和发牌

    本文实例为大家分享了java实现斗地主洗牌和发牌的具体代码,供大家参考,具体内容如下 1:用ArrayList集合实现 案例分析: 我们现在要做的是模拟斗地主小游戏来进行洗牌和发牌. 具体步骤: A:首先,创建一个ArrayList集合来存储牌,将牌的花色和点数存储在俩个字符串数组中中,然后用for循环加强遍历将每张牌的花色点数及大王小王存储在集合中. B:进行洗牌,调用collectionas的shuffle方法. C:进行发牌,创建四个ArrayList集合,分别用来存储玩家一,玩家二,玩家

  • Java模拟实现斗地主发牌

    本文实例为大家分享了Java模拟实现斗地主发牌的具体代码,供大家参考,具体内容如下 题目: 模拟斗地主的发牌实现,54张牌,每张牌不同的花色(红心,黑桃,方块,梅花),牌的点数(3,4,5,6,7,8,9,10,J,Q,K,A,2,King,Queen),另有三名玩家,要求(使用面向对象的方式实现): 1.随机产生一名地主 2.随机向三名玩家发牌,最后的底牌自动发给地主 3.显示出每名玩家手中的牌 4.要求根据点数自动对玩家手中的牌排序实现(*) 提示:玩家类,牌类,游戏类(算法) 步骤分析:

  • Java实现猜数字小游戏代码

    目录 ▲游戏规则: ▲实现思路: 实验结果: 总结 ▲游戏规则: 系统随机生成一个范围0——100的数,用户输入数字,判断该数字是大于,小于,还是等于随机生成的数字,等于的时候退出程序. ▲实现思路: 我们首先要解决的的是随机数,若这个数是我们人为设置的就没有意思了.在Java中的java.util包中提供了一个Random类,可以实现系统输入.随机数解决之后就成功了一半了,接下来看代码如何执行吧. import java.util.Random; import java.util.Scanne

  • 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) { Array

  • Java实现斗地主与猜数字游戏详细流程

    目录 斗地主小游戏之洗牌发牌 任务描述 运行结果 任务目标 实现思路 实现代码 猜数字游戏 任务描述 运行结果 任务目标 实现思路 实现代码 总结 斗地主小游戏之洗牌发牌 任务描述 编写一个斗地主发牌洗牌的程序,要求按照斗地主的规则完成洗牌发牌的过程,牌面由花色色和数字(包括J,Q,K,A字母)组成,花色有红桃,黑桃,方块,梅花组成.还设有大王和小王.将这54张牌的顺序打乱,有三位玩家参与游戏,每人轮流一次摸一张牌,剩余的三张作为底牌,程序结束,打印出每人手中的纸牌和底牌. 运行结果 任务目标

  • java实现的简单猜数字游戏代码

    本文实例讲述了java实现的简单猜数字游戏代码.分享给大家供大家参考. 具体代码如下: 复制代码 代码如下: import java.util.InputMismatchException; import java.util.Scanner; public class Main {         public static void main(String[] args) {                 // 产生一个随机数                 int number = (in

  • java版简单的猜数字游戏实例代码

    游戏简述 游戏涉及到game和player两个对象,game会产生介于0-9之间的随机数,下面看看详细的实现过程. 程序逻辑: 1.GameLauncher这个类带有main()方法,是应用程序的入口点 2.main()中会创建出GuessGame对象,并调用她的startGame()方法 3.startGame()方法是游戏的起点,它会创建3个player,然后挑出猜测的随即数字,它会要求player猜测并检查结果,过程会被列出来 类: •GameLauncher.class •GuessGa

  • Go Java算法猜数字游戏示例详解

    目录 猜数字游戏 方法一:遍历(Java) 方法一:遍历(Go) 猜数字游戏 你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下: 写出一个秘密数字,并请朋友猜这个数字是多少.朋友每猜测一次,你就会给他一个包含下述信息的提示: 猜测数字中有多少位属于数字和确切位置都猜对了(称为 "Bulls",公牛), 有多少位属于数字猜对了但是位置不对(称为 "Cows",奶牛).也就是说,这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字. 给

  • Java实现的猜数字游戏示例

    本文实例讲述了Java实现的猜数字游戏.分享给大家供大家参考,具体如下: 这里演示一段java语言猜数字代码,流程如下: 系统随机生成0-9中的不重复四位数字. 然后用户输入四个数字 如果数字对了,位置不对 则显示 nB,n是有几个是位置对的. 如果数字对了,位置也是对的 则显示mA,m代表有几个数字是正确位置上的. 例如:  生成的是0369    用户输入的是0396 则显示2A2B,两个位置是正确并且数字正确的,另外两个是数字正确,位置不正确的. Java代码: package com.e

  • java实现简单猜数字游戏

    本文实例为大家分享了java实现猜数字游戏的具体代码,供大家参考,具体内容如下 1.游戏分析: 游戏第一步:需要一个随机数,并且该随机数有范围:(java的包中有一个Random类可产生随机数,需要导入这个包,如下) 游戏第二步:猜数字的设计,猜的次数为5次 2.编程实现: import java.util.Random; import java.util.Scanner; public class Guess_num { public static void main(String[] arg

  • Java的带GUI界面猜数字游戏的实现示例

    先导包 import java.util.*; import javax.swing.*; 再写主方法 public static void main(String[] args) { } 新声明一个Scanner和随机数 public static void main(String[] args) { Scanner in = new Scanner(System.in); Random r = new Random(); } 让UIManager爬取系统窗口样式 try { UIManage

  • java语言实现猜数字游戏

    本文实例为大家分享了java实现猜数字游戏的具体代码,供大家参考,具体内容如下 随机生成0~100的数字,通过控制台输入猜测数字,输出进行提示,知道猜测正确后,结束本次猜数字游戏,从而决定是否需要重新玩 代码如下: import java.util.Random; import java.util.Scanner; public class GuessNumber1{ public static Scanner scanner = new Scanner(System.in);//输入 publ

  • java实现猜数字游戏

    本文实例为大家分享了java实现猜数字游戏的具体代码,供大家参考,具体内容如下 游戏规则: 通常由两个人玩,一方出数字,一方猜.出数字的人要想好一个没有重复数字的4位数,不能让猜的人知道.猜的人就可以开始猜.每猜一个数字,出数者就要根据这个数字给出几A几B,其中A前面的数字表示数字正确位置也正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数. 如正确答案为 5234,而猜的人猜 5346,则是 1A2B,其中有一个5的位置对了,记为1A,而3和4这两个数字对了,而位置没对,因此记为 2

  • java使用JOptionPane猜数字游戏

    本文实例为大家分享了java实现猜数字游戏的具体代码,供大家参考,具体内容如下 一.我猜数字 import java.util.Random; import javax.swing.JOptionPane; public class MyRandom { public static void main(String[] args) { //生成随机数 Random randomNumber = new Random(); int myNum = randomNumber.nextInt(10);

随机推荐