当前位置:网站首页>慕课网-简易扑克牌游戏 思路清晰 简易版
慕课网-简易扑克牌游戏 思路清晰 简易版
2022-08-09 09:29:00 【农场主er】
游戏流程
- 创建一副全新的扑克牌;
- 加入两名玩家;
- 两位玩家各自随机抽取一张扑克牌;
- 比较点数大小,分出胜负。
对象
- 卡牌类
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class Cards {
private final String[] suit = {
"黑桃", "红桃", "方块", "梅花"};
private final String[] points = {
"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
private String[][] cards;
//便于后续排序
private Map<String,Integer> compare;
//构造函数
public Cards() {
cards = new String[suit.length][points.length];
compare=new HashMap<>();
for(int i=0;i<points.length;i++){
compare.put(points[i],i);
}
}
//创建扑克牌
public void CreatCards() {
for (int i = 0; i < suit.length; i++) {
for (int j = 0; j < points.length; j++) {
cards[i][j] = suit[i] + points[j];
}
}
}
//得到扑克牌
public String[][] getCards(){
return this.cards;
}
public Map<String,Integer> getMap(){
return this.compare;
}
//打印扑克牌
public void printCards() {
for (String[] each : cards) {
System.out.println(Arrays.toString(each));
}
}
}
2.玩家类
public class Players {
private final int cardsNumber=1;
private String name;
private String card;
//构造函数
public Players(String name){
this.name=name;
}
//得到名字
public String getName(){
return this.name;
}
得到卡牌
public String getCard(){
return this.card;
}
}
游戏
import java.util.Map;
import java.util.Scanner;
public class TestCards {
public static void main(String[] args) {
//新的扑克牌
System.out.println("---创建扑克牌---");
Cards aCards = new Cards();
aCards.CreatCards();
aCards.printCards();
String[][] cards = aCards.getCards();
//客户1
Scanner in = new Scanner(System.in);
System.out.print("请输入第一位玩家姓名:");
String name1 = in.nextLine();
Players player1 = new Players(name1);
//客户2
System.out.print("请输入第二位玩家姓名:");
String name2 = in.nextLine();
Players player2 = new Players(name2);
//发牌
System.out.println("---随机抽牌---");
//玩家1的牌
System.out.print(player1.getName() + "的牌:");
String card1 = cards[(int) (Math.random() * (cards.length - 1))][(int) (Math.random() * (cards[0].length - 1))];
System.out.println(card1);
//玩家2的牌
System.out.print(player1.getName() + "的牌:");
String card2 = cards[(int) (Math.random() * (cards.length - 1))][(int) (Math.random() * (cards[0].length - 1))];
while(card2.equals(card1))
card2 = cards[(int) (Math.random() * (cards.length - 1))][(int) (Math.random() * (cards[0].length - 1))];
System.out.println(card2);
//比较大小
System.out.println("---一决胜负---");
Map<String,Integer> map=aCards.getMap();
int condition=map.get(card1.substring(2,3)).compareTo(map.get(card2.substring(2,3)));
switch(condition){
case 1:
System.out.println(player1.getName()+"胜利!");
break;
case 0:
System.out.println(player1.getName()+"和"+player2.getName()+"打平");
break;
case -1:
System.out.println(player2.getName()+"胜利!");
break;
}
}
}
精简(不足)之处
- 用随机抽牌代替洗牌过程;
- 每人只抽了一张牌;
- 输入姓名缺少了异常捕捉;
- 比较大小没有利用Comparable等接口。
如有建议,欢迎评论区交流~
边栏推荐
- 【机器学习】数据科学基础——机器学习基础实践(二)
- 真·鸡汤文
- 批量修改Shapefile属性表的一种方法(使用gdal.jar)
- 缓存击穿,缓存穿透,缓存雪崩的解释和对应的一些解决方案
- 5.转换流
- 你一定要看的安装及卸载测试用例的步骤及方法总结
- 年薪40W测试工程师成长之路,你在哪个阶段?
- A Practical Guide to Building OWL Ontologies using Protege4 and CO-ODE Tools - Version 1.3 (7.4 Annotation Properties - Annotation Properties)
- 白盒测试的概念、目的是什么?及主要方法有哪些?
- 安装torch_sparse失败解决方法
猜你喜欢
随机推荐
5.Set interface and implementation class
本体开发日记05-努力理解SWRL(下)
2.字节流
手机APP测试流程规范和方法你知道多少?
命令行查询数据库
7.Collections tool class
Tigase插件编写——注册用户批量查询
6.Map接口与实现类
软件测试外包公司怎么样?有什么好处和坏处?为什么没人去?
Max Flow P
软件测试面试思路技巧和方法分享,学到就是赚到
try catch 对性能影响
makefile学习-解决目标文件输出路径问题
五个不同事物隔离级别,七个事物传播行为
Sweet alert
软件测试面试常见问题及答案(发散思维、接口、性能、概念、)
3. Coding method
WAVE SUMMIT 2022深度学习开发者峰会
白盒测试的概念、目的是什么?及主要方法有哪些?
2. Byte stream






![[Personal study summary] CRC verification principle and implementation](/img/99/ae0862522cd0d1c8f45604b9cd88c5.png)

