用java设计一个21点小游戏毕业答辩

时间: 2024-03-24 16:40:13 浏览: 16
好的,我可以为您提供一个基本的21点小游戏的Java代码实现。具体实现方式如下: 1.首先,我们需要定义一个Card类作为扑克牌,它具有点数和花色两种属性,代码如下: ``` public class Card { private int point; // 点数 private String suit; // 花色 public Card(int point, String suit) { this.point = point; this.suit = suit; } public int getPoint() { return point; } public String getSuit() { return suit; } } ``` 2.然后,我们需要设计一个Deck类,用于存储一副扑克牌。Deck类具有洗牌和发牌两种行为,代码如下: ``` import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Deck { private List<Card> cards; public Deck() { cards = new ArrayList<>(); for (int i = 1; i <= 13; i++) { cards.add(new Card(i, "Spade")); cards.add(new Card(i, "Heart")); cards.add(new Card(i, "Diamond")); cards.add(new Card(i, "Club")); } } public void shuffle() { Collections.shuffle(cards); } public Card deal() { if (cards.isEmpty()) { return null; } return cards.remove(0); } } ``` 3.接下来,我们需要设计一个Player类,用于表示玩家,在游戏中具有抽牌和计算点数的功能,代码如下: ``` import java.util.ArrayList; import java.util.List; public class Player { private List<Card> hand; public Player() { hand = new ArrayList<>(); } public void addCard(Card card) { hand.add(card); } public int getTotalPoint() { int total = 0; boolean hasAce = false; for (Card card : hand) { if (card.getPoint() == 1) { hasAce = true; } total += Math.min(card.getPoint(), 10); } if (hasAce && total + 10 <= 21) { total += 10; } return total; } } ``` 4.最后,我们需要设计一个Game类,用于控制游戏流程和计算胜负。在Game类中,我们需要创建一副扑克牌和两个玩家对象,然后通过控制抽牌和计算点数的顺序来实现游戏的流程,代码如下: ``` import java.util.Scanner; public class Game { private Deck deck; private Player player; private Player dealer; public Game() { deck = new Deck(); player = new Player(); dealer = new Player(); } public void start() { deck.shuffle(); player.addCard(deck.deal()); dealer.addCard(deck.deal()); player.addCard(deck.deal()); dealer.addCard(deck.deal()); System.out.println("Player: " + player.getTotalPoint()); System.out.println("Dealer: " + dealer.getTotalPoint()); while (true) { Scanner scanner = new Scanner(System.in); System.out.print("Do you want to hit or stand? "); String input = scanner.nextLine(); if (input.equalsIgnoreCase("hit")) { player.addCard(deck.deal()); System.out.println("Player: " + player.getTotalPoint()); if (player.getTotalPoint() > 21) { System.out.println("Player busts."); System.out.println("Dealer wins."); return; } } else if (input.equalsIgnoreCase("stand")) { break; } else { System.out.println("Invalid input. Please try again."); } } while (dealer.getTotalPoint() < 17) { dealer.addCard(deck.deal()); } System.out.println("Player: " + player.getTotalPoint()); System.out.println("Dealer: " + dealer.getTotalPoint()); if (dealer.getTotalPoint() > 21) { System.out.println("Dealer busts."); System.out.println("Player wins."); } else if (player.getTotalPoint() > dealer.getTotalPoint()) { System.out.println("Player wins."); } else if (player.getTotalPoint() < dealer.getTotalPoint()) { System.out.println("Dealer wins."); } else { System.out.println("Push."); } } } ``` 以上就是一个基本的21点小游戏的Java代码实现。您可以根据自己的需要进行修改和扩展。

相关推荐

最新推荐

recommend-type

计算机应用技术专业毕业设计及答辩

计算机应用技术专业毕业设计及答辩,面向毕业生的一个资源,提供一个范例。有意者下!
recommend-type

计算机毕业设计答辩PPT

计算机毕业设计答辩PPT 计算机毕业设计答辩PPT 计算机毕业设计答辩PPT 仅限参考哇
recommend-type

毕业设计答辩PPT 适用

绝对值得一看的PPT模板,是我找了很久找到的算不错的毕业答辩的模板,好多网站上下载的都太难看要么是骗人的,这个是我答辩准备用的,不错的 。
recommend-type

计算机专业毕业设计开题答辩模板

计算机专业毕业设计时需要做一个毕业设计,毕业设计前要写开题报告,这是一个计算机系办公自动化OA系统的开题报告模板
recommend-type

毕业论文-网上花店系统-真实毕业设计答辩PPT

毕业论文-网上花店系统-真实毕业设计答辩PPT,我的毕业答辩材料,全部资料包括:JSP源码;开发文档;和PP答辩材料。更多毕业资料信息请登录www.elone.info或www.qixii.info进行下载咨询。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。