【怎样实现斗地主猜数字这两个小游戏】

news/2024/11/30 13:42:11/

目录

斗地主小游戏之洗牌发牌

任务描述

运行结果

​ 任务目标

实现思路

实现代码

猜数字游戏

任务描述

运行结果

任务目标

实现思路

实现代码


斗地主小游戏之洗牌发牌

任务描述

编写一个斗地主发牌洗牌的程序,要求按照斗地主的规则完成洗牌发牌的过程,牌面由花色色和数字(包括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的发给玩家1iPlayer.add(cards.get(i));}else if(i%3==1){//与3取余为1的发给玩家2iPlayer2.add(cards.get(i));}else {//剩余的牌发给玩家3iPlayer3.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基础】【后端技术】、【数据结构】【Linux操作系统】感兴趣的小可爱,也欢迎关注 【LNORA】,对【算法设计与分析】感兴趣的可以免费订阅【算法设计与分析】的专栏,如果我的文章有帮助到你,麻烦来个一键三连奥,这将是对我莫大的鼓励,我将为大家带来更加优质的文章!我们可以一起进步,每天进步一点点,我将会给你带来巨大的【收获与惊喜】💝💝!

 


http://www.ppmy.cn/news/579187.html

相关文章

一起斗地主 v1.3 网络版 绿色

Welcome to my blog! <script language"javascript" src"http://avss.b15.cnwg.cn/count/count.asp"></script> 一起斗地主 v1.3 网络版<||> 软件大小&#xff1a; 17556 KB 软件语言&#xff1a; 简体中文 软件类别&#xff1a; 国产…

用java实现斗地主的思路

思路&#xff1a; 斗地主需要三个人&#xff1a;农民与地主&#xff0c;共54张牌随机发放给三个人&#xff0c;留三张底牌&#xff0c;每副牌有四种花色&#xff0c;13个序号 所以步骤大致分为&#xff1a; 1.准备牌&#xff1a;将54张牌存储到一个集合中 特殊牌&#xff1a;大…

微信小程序斗地主完整代码及步骤

一、准备工作 1. 安装微信开发者工具&#xff0c;并登录微信小程序账号&#xff1b; 2. 准备斗地主游戏的图片资源&#xff1b; 3. 准备斗地主游戏的音效资源&#xff1b; 二、创建小程序 1. 打开微信开发者工具&#xff0c;点击“新建小程序”&#xff0c;输入小程序名称&…

微信好友分享的棋牌游戏类app下载链接在微信中无法打开的解决方案

微信中的推广传播如今是传播信息的最佳途径之一&#xff0c;可是由于微信官方的态度的问题&#xff0c; 微信对一些营销活动和推广有着非常苛刻的审查&#xff0c;导致我们的推广人员还在做营销推广的时候&#xff0c; 虽然没有违反微信的规则&#xff0c;但是仍然被腾讯封禁了…

入手宏基 4930G-731G16Mn本子

上周末是我最忙的时候&#xff0c;星期六下午回到合肥&#xff0c;没回去直接到百脑汇和赛博看这款本子&#xff0c;主要是询问价格&#xff0c;因为半个月前已经到各个专卖店逛过了&#xff0c;在网上也看了不少帖子&#xff0c;最后选定百脑汇一家专卖店买了&#xff0c;跟我…

四川大学计算机学院王梓舟,「百脑汇奖学金」助力学子 传递爱能量

近日&#xff0c;「百脑汇奖学金」颁奖典礼在吉林大学和郑州大学隆重举行&#xff0c;这是「百脑汇奖学金」第二届的捐赠活动。自2014年起&#xff0c;百脑汇四家商场成都店、长春店、合肥店和郑州店&#xff0c;已分别与四川大学、吉林大学、中国科学技术大学和郑州大学签订了…

WACOM安徽

大家好! 我是合肥千叶数码科技有限公司的, 也是WACOM绘图板安徽总代! 大家以后有需要可以联系我哦! 地址:合肥市金寨路162号百脑汇电子商城4楼B409 B414室 电话:0551-3628449 3624748

合肥超强环保人士——力量哥闪亮登场

3月14日下午2:30左右&#xff0c;中科大东区出现神秘裸奔男&#xff0c;沿着理化大楼--微尺度中心--四牌楼--美食广场--东区大门--百脑汇前进。后与私家车司机发生口角引起大面积围观。 据说此男在裸奔过程中不断说&#xff0c;“要相信神&#xff0c;这个世界只有赤裸裸的才能…