如何用Java写一个斗地主(一)

  • 序言
  • 正文
    • 创建卡牌
    • 打乱牌序
    • 发牌
  • 课后吐槽

序言

作为一名大三的普普通通大学生,被实习老师(?)强迫下,第一次开始写CSDN的博客,如果写的不好,请多多包涵咯。

正文

因为今天老师讲的是面向过程的方法,那就根据老师的过程一步步走下去,从创建卡牌,创建人物到洗牌发牌。

创建卡牌

创建卡牌主要需要确定斗地主的卡牌组成,根据目前斗地主的规则,每一副斗地主都需要有54张牌,除去大小王,剩下的还有各个花色的牌各13张,我们将每一张卡牌可以看作是花色与数字 的组合。因此我们创建三个动态数组。

List<String> pokes=new ArrayList<>();
List<String> colors=new ArrayList<>();
List<String> number=new ArrayList<>();

同时将花色与数字写入相应的数组。

     colors.add("♥");colors.add("♦");colors.add("♠");colors.add("♣");number.add("A");for (int i=2;i<11;i++){number.add(i+"");}number.add("J");number.add("Q");number.add("K");

最后利用两次循环将卡牌写入卡牌池,并增加大小王牌。

     for(String c:colors){for (String i:number){String card=c+i;pokes.add(card);}}pokes.add("Joker");pokes.add("The Joker");

打乱牌序

打乱牌序只需要用到很短的一行命令。

Collections.shuffle(pokes);

shuffle()是Collections下的静态方法,其中所有置换发生的可能性都是大致相等的,与现实的洗牌基本相同。

发牌

最后就是发牌及底牌的保留,每轮斗地主都拥有三名玩家,54张牌中最后三张作为底牌保留给地主,所以我们通过循环的方法将每一张牌发给玩家,以3张牌为发一轮。

     ArrayList<String> first=new ArrayList<>();ArrayList<String> second=new ArrayList<>();ArrayList<String> third=new ArrayList<>();ArrayList<String> cover=new ArrayList<>();for(int i=0;i<pokes.size();i++){String card=pokes.get(i);if(i>=51){cover.add(card);}else {if(i%3==0){first.add(card);}else if(i%3==1){second.add(card);}else {third.add(card);}}}

课后吐槽

下一次开始就正式自己做,用面向对象的方法来完成整个作业的制作咯。
学校安排的课,自己做的选择,含着泪也要做完。
槽点不多:
1.众所周知,JetBrains在最近终于推出了官方中文,作为JetBrains对本土开发的支持,这本来是一件好事,而且中文也在不断改善,不知道为啥老师硬要觉得英文版好,并diss中文版,这只是个人选择和习惯的问题。
2.快捷键问题:
因为快捷键的不同,导致老师一些操作使用的快捷键和我们的快捷键设置不一样,但老师想要通过远程操作我们的电脑来查看我们Idea版本的快捷键,而不知道使用帮助——快捷键参考来查看快捷键。(可能因为英文版老师不知道功能?)
最后附上Idea2020.1.2的快捷键表,希望老师这次能看到咯

如何用Java写一个斗地主(一)相关推荐

  1. 如何用java写一个年日历

    如何用java写一个年日历 没啥难的,话不多说上代码

  2. 用java写一个斗地主

    写一个斗地主游戏是一个不错的编程练习,需要您掌握的技能包括对 Java 语言的熟练使用,以及对游戏规则.算法.图形界面设计等的理解. 下面是一些关于如何使用 Java 编写斗地主游戏的指导: 设计游戏 ...

  3. 手机java做贪吃蛇_如何用Java写一个贪吃蛇游戏

    这是一位拓胜学员用Java写贪吃蛇游戏的心得:今天课程设计终于结束了自己学java没以前学C+那么用功了觉得我学习在哪里都是个开口向上的抛物线,现在应该在右半边吧,好了进入正题. 写java贪吃蛇也是 ...

  4. 如何用java写一个九九乘法表。

    在java中写一个九九乘法表,我们只需要用一个for循环嵌套就可以了,我们先写一个for循环嵌套格式, for(;;){for(;;) 然后我们知道内循环和外循环所控制行和列,我们可以看出来九九乘法表 ...

  5. 如何用Java写一个聊天机器人

    文章目录 建议结合新版教程看 写在前面的的话 免责声明 你需要提前会的东西 我们要使用的框架 首先我们先下载一个Demo 文件配置 Demo里面的的目录结构 在配置文件中加上你小号的QQ名字和密码 我 ...

  6. 如何用JAVA写一个简单的电脑客户端应用

    前言: 我们学习了JAVA的application和applet,其中applet是需要打开编译软件或命令行才能弹出的那种窗口,和我们平时可以下载的软件不太一样.如何开发一个.exe文件? 其实和写正 ...

  7. 生活中日历随处可见,如何用java写一个简单的日历呢?

    如果我们想要制作一个从1900年到当前年份的日历,并且打印当前年份, 首先我们要知道计算日历需要用到那些数据和知识? 目录 一.获取信息 二.代码实现 三.内容分析 四.学习总结 一.获取信息 1.闰 ...

  8. 5分钟学会Java写一个接口

    今天学习了如何用Java写一个简单的接口,方法简单好用(本人是前端,后端小白) 用的软件是idea,框架是spring boot,在spring boot中创建我们需要的项目就可以开始了. 注:开始运 ...

  9. 面试题之如何用Java设计一个自动售货机

    如何用Java设计一个自动售货机程序是一个非常好的Java面试题.大多数情况会在面试比较senior的Java开发者的时候出现.在一个典型的代码面试中,你需要在一定的时间内根据对应的条件完成相关的代码 ...

最新文章

  1. 二维码Data Matrix编码、解码使用举例
  2. [Usaco2007 Dec]穿越泥地[bfs][水]
  3. 做excel的时候要快速按照纬度的角度来分析构建:一个词语“纬度”
  4. 如何利用ESP8266模块实现远程控制
  5. PowerSploit-CodeExecution(代码执行)脚本渗透实战
  6. spring-junit4_基于Spring的应用程序-迁移到Junit 5
  7. Django model 字段类型及选项解析(一)
  8. html5怎么跟安卓交互,html5怎么与android交互
  9. python 爬虫代理_python 爬虫 使用代理 的问题
  10. Spring Boot(7)---构建系统和依赖管理
  11. OpenJDK和Java API区别_Linux下的JDK和OpenJDK有什么具体的区别
  12. Java 发展简史:初生遇低谷,崛起于互联网
  13. 大文件数据导出(后台执行,自动生成)
  14. ML.NET 发布0.11版本:.NET中的机器学习,具有TensorFlow和ONNX的新功能
  15. Python读取Access数据库基本操作
  16. ibatis学习(一)--ibatis介绍以及用例 [转]
  17. 微信小程序上传图片和文件
  18. iPhone13如何设置卡1和卡2收发信息
  19. dcp-9020cdn复印位置有_兄弟DCP-9020CDN打印机驱动下载
  20. 小学信息技术信息与计算机课件,小学信息技术ppt课件

热门文章

  1. CSS中的BFC规范(块级格式化上下文)
  2. 网络对抗技术——实验四:恶意代码技术
  3. 报警器——基于arduino
  4. Labeled Faces in the Wild
  5. usb一致性测试软件,USB 3.0一致性测试方法
  6. 视频中的声音如何处理,如何添加背景音乐?
  7. nodejs+koa2实现微信小程序签名和请求支付(二)
  8. 吴恩达机器学习入门笔记12/13-聚类与降维
  9. 获取字符串被分割后的总数组长度 java 类似UBound()方法
  10. 大陆引进《火影忍者》角色中文译名雷人出炉