答案 石头剪刀布 编码过程 0912

答案 石头剪刀布 编码过程 0912答案 石头剪刀布 编码过程 0912 效果 下载 脑图 https cloud 189 cn t VJzu6jRvQ7Rb 01 根据脑图创建类 需要有的类 玩家 player 电脑 computer 裁判 referee 创建类 三个类 一个测试文件

大家好,我是讯享网,很高兴认识大家。

答案 石头剪刀布 编码过程 0912

效果

在这里插入图片描述
讯享网

下载 脑图

https://cloud.189.cn/t/VJzu6jRvQ7Rb

在这里插入图片描述

01根据脑图创建类

需要有的类

  • 玩家,player
  • 电脑,computer
  • 裁判,referee

创建类

在这里插入图片描述

三个类

一个测试文件

编写玩家类的属性与方法

玩家类

public class Player { 
    // 名字 String name; // 得分 int score; / * 出拳方法 */ public void punches() { 
    System.out.println("玩家出了一个拳"); } } 

讯享网

测试一下

讯享网public class test { 
    public static void main(String[] args) { 
    // 测试开始 // 玩家对象 Player zs = new Player(); zs.punches(); } } 

结果

玩家出了一个拳 

编写计算机类的属性与方法

代码与玩家类的代码差不太多,所以直接复制

讯享网public class Computer { 
    // 名字 String name; // 得分 int score; / * 出拳方法 */ public void punches() { 
    System.out.println("计算机出了一个拳"); } } 

测试

public class test { 
    public static void main(String[] args) { 
    // 测试开始 // 玩家对象 Player zs = new Player(); zs.punches(); // 计算机对象 Computer pc = new Computer(); pc.punches(); } } 

结果

讯享网玩家出了一个拳 计算机出了一个拳 

裁判类

定义

public class Referee { 
    / * 开始游戏 * 用途:控制游戏流程 */ public void start() { 
    System.out.println("让游戏开始吧"); } } 

测试

讯享网public class test { 
    public static void main(String[] args) { 
    // 测试开始 // 玩家对象 Player zs = new Player(); zs.punches(); // 计算机对象 Computer pc = new Computer(); pc.punches(); // caipan对象 Referee cp = new Referee(); cp.start(); } } 

结果

玩家出了一个拳 计算机出了一个拳 让游戏开始吧 

源码 01

https://cloud.189.cn/t/7VRnyaMvMvAj

视频 01

https://www.ixigua.com/?logTag=1kWy5BjWbX2BTRb5vH5d2

02 实现裁判的开始方法

脑图
在这里插入图片描述

清除测试类中的杂乱代码

只保留裁判断的实例化与开始方法的调用

测试能否正常输出结果

在start方法中编写执行过程

先写占位代码

讯享网/ * 裁判类 */ public class Referee { 
    / * 开始游戏 * 用途:控制游戏流程 */ public void start() { 
    // 初始化选手 System.out.println("玩家对象登场"); System.out.println("电脑对象登场"); // 获取出拳 System.out.println("玩家出拳"); System.out.println("电脑出拳"); // 计数器变化 System.out.println("计数器变化"); // 胜负判断 System.out.println("胜负判断"); // 是否要继续 System.out.println("要继续吗?"); } } 

效果

玩家对象登场 电脑对象登场 玩家出拳 电脑出拳 计数器变化 胜负判断 要继续吗? 

视频 02

https://www.ixigua.com/?logTag=DP0I_im3_7KDCTTaWt3OD

03 实现玩家与电脑的出拳-玩家

玩家出拳

讯享网 / * 出拳方法 */ public String punches() { 
    System.out.println("请出拳:1-剪刀,2-石头,3-布(输入相应数字):"); String quan = ipt.next(); System.out.println("你出拳" + quan); return quan; } 

玩家通过键盘输入,出拳

quan变量接收键盘的输入

字符串类型

return 这个录入的结果

测试一下

可以正常的收到数据

在这里插入图片描述

然而需求为

在这里插入图片描述

输入2,提示出石头

所以还缺一个数字转字符串的打印操作

考虑使用分支语句可以完成

视频 03

04 实现玩家与电脑的出拳-电脑

电脑的出拳办法

电脑利用随机数出拳

随机出1 2 3 三个数据

先写一个随机小功能

测测能否实现1 2 3 的数据生成

在这里插入图片描述

在电脑出拳方法中生成一个数

 public int punches() { 
    Random random = new Random(); int randNum = random.nextInt(3) + 1; return randNum; } 

修正一下玩家出拳的数据类型

电脑出的是整数

玩家出的是字符串

应该统一数据类型

所以把,玩家出拳的返回值变成整数返回

视频 04

https://www.ixigua.com/?logTag=-GFlBc25qOnbCxvX8jHd3

05 数字转字符串

思考,这里如何进行输出?

如果出拳是2,就输出石头, 如果出拳是1,就输出剪刀

可以考虑:

多路分支

简单粗暴的写法

讯享网 // 需要,把1转换成剪刀,2转换成石头,3转换成布进行输出 // 使用一个粗旷的方法来实现 // 玩家出拳的转换 if (player1Quan == 1) { 
    System.out.println("你出拳:剪刀"); } else if (player1Quan == 2) { 
    System.out.println("你出拳:石头"); } else if (player1Quan == 3) { 
    System.out.println("你出拳:布"); } // 电脑出拳的转换 if (computer1Quan == 1) { 
    System.out.println("电脑出拳:剪刀"); } else if (computer1Quan == 2) { 
    System.out.println("电脑出拳:石头"); } else if (computer1Quan == 3) { 
    System.out.println("电脑出拳:布"); } System.out.println("虽然功能实现了,但是代码太罗嗦了,可以优化"); 

视频 05

https://www.ixigua.com/?logTag=Zf5bwygPjJUJlZ8W5p4cS

06 胜负判断

在这里插入图片描述

利用分支进行三种情况的处理

  • 平局情况
  • 胜利情况
  • 其它就是失败情况

视频 06

https://www.ixigua.com/0?logTag=m7mTVIFUSjvOZ85QnXhoK

07 游戏循环起来

在这里插入图片描述
一局游戏后,问询是否下一局

如果用户输入y,就继续游戏

do{ 
   反复的游戏}while(键盘输入是否是y); 

视频 07

https://www.ixigua.com/?logTag=fBvij9VaaSASNdbjoKzKj

08 调整显示

  • 计数器变化
  • 玩家固定名字
  • 选择电脑姓名
  • 在出拳前显示 玩家vs电脑
  • do…while循环转while循环
  • 计分处理

代码

讯享网import java.util.Scanner; / * 裁判类 */ public class Referee { 
    / * 开始游戏 * 用途:控制游戏流程 */ public void start() { 
    // scanner Scanner ipt = new Scanner(System.in); // 初始化选手 Player player1 = new Player(); // 玩家名字默认为王子 player1.name = "王子"; // 初始化电脑 Computer computer1 = new Computer(); // 给电脑起名字 System.out.println("请选择对方角色(1 刘备,2 孙权,3 曹操)"); int nameNum = ipt.nextInt(); String computer1Name = ""; switch (nameNum) { 
    case 1: computer1Name = "刘备"; break; case 2: computer1Name = "孙权"; break; case 3: computer1Name = "曹操"; break; } computer1.name = computer1Name; // scanner对象 // 是否继续 String is_continue; // 计数器 int counter = 0; // 宣布对战 System.out.println(player1.name + " VS " + computer1.name + " 对战"); // 游戏循环:出拳,评判,是否再玩,再出拳,再评判,再问是否玩,do...while // do...while 转while.... // 是否要继续 System.out.println("要继续吗?y-继续"); is_continue = ipt.next(); while ("y".equals(is_continue)) { 
    // 获取出拳,需要有返回值,用于提供裁判进行比较 int player1Quan = player1.punches(); int computer1Quan = computer1.punches(); // 需要,把1转换成剪刀,2转换成石头,3转换成布进行输出 // 使用一个粗旷的方法来实现 // 玩家出拳的转换 if (player1Quan == 1) { 
    System.out.println("你出拳:剪刀"); } else if (player1Quan == 2) { 
    System.out.println("你出拳:石头"); } else if (player1Quan == 3) { 
    System.out.println("你出拳:布"); } // 电脑出拳的转换 if (computer1Quan == 1) { 
    System.out.println("电脑出拳:剪刀"); } else if (computer1Quan == 2) { 
    System.out.println("电脑出拳:石头"); } else if (computer1Quan == 3) { 
    System.out.println("电脑出拳:布"); } // 计数器变化 counter++; // 胜负判断 if (computer1Quan == player1Quan) { 
    // 平局情况 System.out.println("天哪,平局了"); } else if (player1Quan == 2 && computer1Quan == 1 || player1Quan == 1 && computer1Quan == 3 || player1Quan == 3 && computer1Quan == 2) { 
    // 胜利情况 System.out.println("玩家胜利,电脑失败"); player1.score += 1; } else { 
    // 失败情况 System.out.println("电脑胜利,玩家失败"); computer1.score += 1; } // 是否要继续 System.out.println("要继续吗?y-继续"); is_continue = ipt.next(); // 换行 System.out.println(); System.out.println(); } ; System.out.println("一共比赛的次数:" + counter); System.out.println("玩家得分:" + player1.score); System.out.println("电脑得分:" + computer1.score); } } 

视频 08

https://www.ixigua.com/?logTag=0CaNWCd2OZz_j0uU9iiSk

源文件 08

https://cloud.189.cn/t/iYfI3iyQzi63

说明

此法并不是最优的写法

为了便于理解,拆的很细

当编码流程理解透后

可以有更好的写法出来

小结

本项目主要演练如何让一个复杂的项目充实起来

看见这么麻烦的一个项目,脑头有可能会很大

不过要学会,先分析,再拆解,再填空,这样的思路

再难的东西,都可以分而治之

编码过程中有遇到过结构设计错误的情况

例如应该用while循环的结构,结果用了do…while…结构

但是并不影响

我们只需要把那附近的代码进行一个调整即可

小讯
上一篇 2025-03-10 20:41
下一篇 2025-02-25 13:43

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/43372.html