JAVA钓鱼游戏_java如何实现纸牌游戏之小猫钓鱼算法
java如何实现纸牌游戏之小猫钓鱼算法
发布时间:2020-07-30 14:50:48
来源:亿速云
阅读:57
作者:小猪
这篇文章主要为大家展示了java如何实现纸牌游戏之小猫钓鱼算法,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。
星期天小哼和小哈约在一起玩桌游,他们正在玩一个非常古怪的扑克游戏——“小猫钓鱼”。游戏的规则是这样的:将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张扑克牌,并放在小哼刚打出的扑克牌的上面,就像这样两人交替出牌。出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即可将两张相同的牌及其中间所夹的牌全部取走,并依次放到自己手中牌的末尾。当任意一人手中的牌全部出完时,游戏结束,对手获胜。
假如游戏开始时,小哼手中有 6 张牌,顺序为 2 4 1 2 5 6,小哈手中也有 6 张牌,顺序为 3 1 3 5 6 4,最终谁会获胜呢?现在你可以拿出纸牌来试一试。接下来请你写一个程序来自动判断谁将获胜。这里我们做一个约定,小哼和小哈手中牌的牌面只有 1~9。
输入2 4 1 2 5 6
3 1 3 5 6 4
输出小哼win
小哼当前手中的牌是 5 6 2 3 1 4 6 5 桌上的牌是 2 1 3 4
这道题目完全考察栈跟队列的应用,桌面上的牌是栈,个人手中的牌是队列。
附上JAVA实现的源码:
import java.util.LinkedList;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
LinkedList a = new LinkedList();//A手中的牌
LinkedList b = new LinkedList();//B手中的牌
Stack stack = new Stack<>();//记录桌面上的牌
int[] book = new int[10];//用来标记哪些牌已经在桌上
int n,t,s;
for(int i = 0; i < 10; i++){
book[i] = 0;
}
System.out.println("输入手中牌的个数");
n = scanner.nextInt();
System.out.println("输入A君手中牌的大小");
for(int i = 1; i<=n; i++){
a.addLast(scanner.nextInt());
}
System.out.println("输入B君手中牌的大小");
for(int i = 1; i<=n; i++){
b.addLast(scanner.nextInt());
}
System.out.println("输入完毕开始游戏");
while (!a.isEmpty() && !b.isEmpty()) {//当有人手中没牌游戏结束
t = a.removeFirst();
if (book[t] == 0) {//A没有赢
stack.push(t);//桌面上加一张牌
book[t] = 1;//记录桌面上已经有这张牌了
}else {//A赢了
a.addLast(t);//将打出的牌到到末尾
while (!stack.peek().equals(t)) {//将桌面上的牌按顺序放到A的末尾
s = stack.pop();
a.addLast(s);
book[s] = 0;
}
}
//同上B取出牌
t = b.removeFirst();
if (book[t] == 0) {
stack.push(t);
book[t] = 1;
} else {
b.addLast(t);
while (!stack.peek().equals(t)) {
s = stack.pop();
b.addLast(s);
book[s]= 0;
}
}
}
if (!a.isEmpty()) {//A胜利
System.out.println("A君胜利!A手中的牌是");
while (!a.isEmpty()) {
System.out.print(a.removeFirst()+ " ");
}
System.out.println();
if (!stack.isEmpty()) {//桌面上有牌
System.out.println("桌面上的牌是");
for (Integer x : stack) {
System.out.print(x + " ");
}
} else {
System.out.println("桌面没有牌了");
}
} else {//B胜利
System.out.println("B君胜利!B手中的牌是");
while (!b.isEmpty()) {
System.out.print(b.removeFirst()+ " ");
}
System.out.println();
if (!stack.isEmpty()) {//桌面上有牌
System.out.println("桌面上的牌是");
for (Integer x : stack) {
System.out.print(x + " ");
}
} else {
System.out.println("桌面没有牌了");
}
}
return;//结束
}
}
结果:输入手中牌的个数
6
输入A君手中牌的大小
2 4 1 2 5 6
输入B君手中牌的大小
3 1 3 5 6 4
输入完毕开始游戏
A君胜利!A手中的牌是
5 6 2 3 1 4 6 5
桌面上的牌是
2 1 3 4
以上就是关于java如何实现纸牌游戏之小猫钓鱼算法的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看到。
JAVA钓鱼游戏_java如何实现纸牌游戏之小猫钓鱼算法相关推荐
- java中的纸牌游戏_JAVA课程设计纸牌游戏
<JAVA课程设计纸牌游戏>由会员分享,可在线阅读,更多相关<JAVA课程设计纸牌游戏(16页珍藏版)>请在人人文库网上搜索. 1.一.问题分析和任务定义1.题目:纸牌游戏:编 ...
- 蜘蛛纸牌 java代码_java实现蜘蛛纸牌游戏
[实例简介] 用java技术实现windows自带的蜘蛛纸牌游戏 [实例截图] [核心代码] CardsGame └── CardsGame ├── bin │ └── com │ └── g ...
- java 拼图游戏_Java学员作品-拼图游戏
由于大多数的手机都内置了Java的运行环境,加上Java语言自身的跨平台特性,Java成为了编写手机游戏时最常使用的语言之一. 拼图游戏很多人都玩过,它的游戏规则是将图片进行分割,然后将顺序打乱,要求 ...
- java d打字游戏_java实现快速打字游戏
本文实例为大家分享了java实现打字游戏的具体代码,供大家参考,具体内容如下 import java.util.Random; import java.util.Scanner; public cla ...
- 蜘蛛纸牌java注释_自己摸索的纸牌游戏代码,感觉还有很多知识不懂,任重道远啊!...
package com.poker; /* * 定义一个纸牌的实体类 */ public class Poker implements Comparable{ String color ;//定义花色 ...
- java扫雷教程_java实现简单扫雷游戏
本文实例为大家分享了java实现简单扫雷游戏的具体代码,供大家参考,具体内容如下 package com.test.swing; import java.awt.event.ActionEvent; ...
- 用java雷电游戏_Java实现仿雷电游戏
[实例简介]Java实现仿雷电游戏 [实例截图] [核心代码] package cqu; import java.awt.BorderLayout; import javax.swing.JFrame ...
- java applet 游戏_Java Applet实现五子棋游戏
从谷歌的AlphaGo到腾讯的绝艺,从人脸识别到无人驾驶,从谷歌眼镜到VR的兴起,人工智能领域在不断的向前迈进,也在不断深入的探索.但背后错综复杂的技术和利益成本也是很多企业亟待解决的难题.对于人工智 ...
- java 扫雷游戏_java的扫雷小游戏(超简单)
这学期的专业选修课选了java,由于之前已经学过了C++,数据结构和操作系统的原因吧!所以感觉上手还是比较容易的-- 于是,实验课老师并没有要求那样一次次的做实验交实验报告,而是在最后一次实验课上,利 ...
- java赛马游戏_Java小程序赛马游戏实现过程详解
这是当时做的一个小游戏,大概就是程序开始后,会进入用户登录界面,用户输入自己的姓名和密码后,选择登录会进入到赛马比赛的界面,这时可以看见赛马场和马匹的编号,用户可以选择任何一个编号的马进行投注,输入有 ...
最新文章
- openStack 租户控制台修改虚拟机账户密码
- java中ThreadPool的介绍和使用
- LeetCode 39. 组合总和(排列组合 回溯)
- ajax正确返回数据,却进入了error分支
- 百度自动驾驶出租车服务在北京开放:无需预约免费试乘
- F - Wormholes(判断是否存在负环)
- Sublime Text3插件管理
- 联想万全服务器系列,联想服务器万全系列慧眼高级版操作快速入门
- ITSS服务管理体系建立流程(四个阶段)附:广东软件行业协会ITSS评估
- html设置线条颜色渐变,CSS3 - 设置渐变颜色背景,线性/放射性/循环(附在线渐变生成工具)...
- PCB多层电路板终于不再神秘
- VMware虚拟机中安装的系统共享主机无线网络的方法
- leetcode174.地下城游戏
- 爬梯:MongoDB入门到高级到SpringBoot-API
- 描写油菜花的好句好段
- Redis中的Lua脚本怎么玩
- 2021J - Circular Billiard Table
- 物联网ARM开发- 5协议 FSMC控制器外扩SRAM存储器
- Android编程红外编程——红外码详析
- 雨落竹轩(来自好友)