JAVA钓鱼游戏_java实现小猫钓鱼游戏

题目要求:

两人比赛,A,B,每人最开始分得6张手牌,手牌大小为从1到9

A先出牌,B后出牌,若出牌在桌面上存在,在出牌人获得两张相同牌中间的所有牌(包括两张相同牌),放入出牌人手中。

最后谁手中无牌判为负

import java.util.LinkedList;

import java.util.Queue;

import java.util.Scanner;

import java.util.Stack;

/**

* 模拟实现两人玩小猫钓鱼游戏

* 判断谁先出完谁获胜

* @author zyk

*

*/

public class PlayGame {

public static void main(String[] args) {

Stack deskStack = new Stack<>();//桌子上的牌,用栈进行管理

Queue playerA = new LinkedList();//用队列管理每个选手的牌

Queue playerB = new LinkedList();

int book[] = new int[10];

Scanner scanner = new Scanner(System.in);

//发牌,每人6张

for (int i = 0; i < 6; i++) {

playerA.add(scanner.nextInt());

}

for (int i = 0; i < 6; i++) {

playerB.add(scanner.nextInt());

}

//当两个队列都不为空,表示游戏没有结束

while (!playerA.isEmpty() && !playerB.isEmpty()) {

int ta = playerA.peek();//A出一张牌

//判断A出的牌能不能赢牌

if (book[ta] == 0) {//桌子上没有这张牌

//A不能赢牌

playerA.remove();//打出的牌出队列

deskStack.add(ta);//打出的牌入栈

book[ta]=1;//标记打出的牌出现在桌子上

}else {//A能赢牌

playerA.remove();//打出的牌出队列

playerA.add(ta);//打出的牌入队列

while (deskStack.lastElement()!=ta) {

book[deskStack.lastElement()] = 0;

playerA.add(deskStack.lastElement());

deskStack.pop();

}

}

int tb = playerB.peek();//B出一张牌

//判断B出的牌能不能赢牌

if (book[tb] == 0) {//桌子上没有这张牌

//B不能赢牌

playerB.remove();//打出的牌出队列

deskStack.add(tb);//打出的牌入栈

book[tb]=1;//标记打出的牌出现在桌子上

}else {//B能赢牌

playerB.remove();//打出的牌出队列

playerB.add(tb);//打出的牌入队列

while (deskStack.lastElement()!=tb) {

book[deskStack.lastElement()] = 0;

playerB.add(deskStack.lastElement());

deskStack.pop();

}

}

}

if (playerA.isEmpty()) {

System.out.println("B赢了");

System.out.print("B手中的牌为:");

while (!playerB.isEmpty()) {

System.out.print(playerB.peek()+" ");

playerB.remove();

}

}else {

System.out.println("A赢了");

System.out.print("A手中的牌为:");

while (!playerA.isEmpty()) {

System.out.print(playerA.peek()+" ");

playerA.remove();

}

}

System.out.println("");

System.out.print("桌子上的牌为:");

while (!deskStack.isEmpty()) {

System.out.print(deskStack.lastElement()+" ");

deskStack.pop();

}

}

}

实例:

输入:

2 4 1 2 5 6

3 1 3 5 6 4

输出:

A赢了

A手中的牌为:5 6 2 3 1 4 6 5

参考: 《啊哈算法》第二章 栈,队列,链表

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值