当前位置:网站首页>慕课网-简易扑克牌游戏 思路清晰 简易版
慕课网-简易扑克牌游戏 思路清晰 简易版
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等接口。
如有建议,欢迎评论区交流~
边栏推荐
猜你喜欢
随机推荐
Ontology Development Diary 03-Understanding Code
Lecture 4 SVN
Sweet alert
自动化测试框架有哪几种?搭建的思路是什么?一篇文章让你彻底了解自动化
接口测试的概念、目的、流程、测试方法有哪些?
pycharm在创建py文件时如何自动注释
Do you know the basic process and use case design method of interface testing?
RPC服务远程漏洞
7.Collections工具类
latex中复杂公式换行等号对齐
seata处理分布式事务
A first look at the code to start, Go lang1.18 introductory refining tutorial, from Bai Ding to Hongru, the first time to run the golang program EP01
软件测试面试常见问题及答案(发散思维、接口、性能、概念、)
常用命令之思科常用基础配置
try catch 对性能影响
批量修改Shapefile属性表的一种方法(使用gdal.jar)
常用功能测试的检查点与用例设计思路
缓存击穿,缓存穿透,缓存雪崩的解释和对应的一些解决方案
Ontology development diary 02 - simple sparql query
白盒测试的概念、目的是什么?及主要方法有哪些?