集合练习(五)【十点半游戏】

集合练习(五)【十点半游戏】你先摸牌 如果觉得有胜算 就不必补牌

大家好,欢迎来到IT知识分享网。

十点半游戏

十点半是一种扑克游戏,这种游戏老少皆宜。游戏技巧在于如何收集成“十点半”,但若超过半点,也算失败。

A等于1点、2等于2点,如此累推10就是10点,J、Q、K都是半点。

十点半-顾名思义就是摸的牌不能超出十点半。最后谁的牌之和最接近十点半谁胜。

游戏呢分为两个玩家,一个电脑(bot)和玩家(你)。

流程:

你先摸牌,如果觉得有胜算,就不必补牌。否则可以继续补牌。 也就是说每次有两个选择: 1. 继续补牌 2. 不补牌

特殊情况:

  1. 玩家手牌到 5 张时,直接胜利
  2. 玩家手牌点数超过十点半直接输

接下来由电脑摸牌,电脑有以下规则:

  1. 十点半就不补牌了
  2. 当没玩家点数大时,必须补牌
  3. 当比玩家点数大后不补牌

升级玩法:机器人不作弊(不知道玩家点数), 通过概率来决定是否补牌

import java.util.*; public class TenThirty { 
    private Poker poker; public TenThirty() { 
    this.poker = new Poker(); } / 打乱牌 */ public void start(){ 
    List<Card> poker = this.poker.getPoker(); for(int i = 0;i < 10;i++){ 
    Collections.shuffle(poker); } player(poker); } public void player(List<Card> poker){ 
    List<String> player = new ArrayList<>(); //玩家手里的牌数 int count = 0; //玩家牌数的值 double value =0.0; while (count < 5){ 
    Card card = poker.get(count); player.add(card.toString()); System.out.println(player); value += card.getValue(); System.out.println("你的点数和是" + value); count++; if (value < 10.5) { 
    Scanner sc = new Scanner(System.in); System.out.println("请输入是否继续发牌,0:是,1:否"); int isContinue = sc.nextInt(); // 玩家继续发牌,并且牌数小于5 if (isContinue == 0) { 
    continue; } else { 
    bot(value,poker,count); break; } } else if(value > 10.5) { 
    System.out.println("你输了"); return; } } if(count == 5 && value <10.5){ 
    System.out.println("你赢了"); } if (count > 5) { 
    System.out.println("你输了"); } } private void bot(double value , List<Card> poker, int count) { 
    //机器人的牌值 Double botValue =0.0; //机器人的牌数 int botCount = 0; //机器人的牌 List<String> botCards = new ArrayList<>(); while (botValue <= value) { 
    Card card = poker.get(count +(++botCount)); botValue += card.getValue(); botCards.add(card.toString()); System.out.println("机器人的牌:" + botCards); if (botValue>10.5) { 
    System.out.println("机器人炸了"); System.exit(0); } if(botCards.size() > 5){ 
    System.out.println("机器人输了"); System.exit(0); } if (botCards.size() == 5) { 
    System.out.println("机器人赢了"); System.exit(0); } } System.out.println("机器人的点数和是:" + botValue); System.out.println("机器人赢了"); } } class Poker{ 
    private List<Card> poker; private static final List<String> points = List.of("A","2","3","4","5","6","7","8","9","10","J","Q","K"); public Poker(){ 
    this.poker = new ArrayList<>(); for (int i = 0;i < points.size(); i++) { 
    if(i <= 9){ 
    poker.add(new Card(points.get(i),i+1)); } else{ 
    poker.add(new Card(points.get(i),0.5)); } } } public List<Card> getPoker() { 
    return poker; } public void setPoker(List<Card> poker) { 
    this.poker = poker; } } class Card{ 
    private String point; private double value; public Card(String point, double value) { 
    this.point = point; this.value = value; } @Override public String toString() { 
    return point; } public double getValue() { 
    return value; } public void setValue(double value) { 
    this.value = value; } } 
public class TenThirtyTest { 
    public static void main(String[] args) { 
    TenThirty game = new TenThirty(); game.start(); } } 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/146773.html

(0)
上一篇 2025-04-12 14:45
下一篇 2025-04-12 15:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信