[Java教程]12.注释(上节游戏完成)

Java教程专栏:https://blog.csdn.net/qq_41806966/category_9929686.html

这节内容为完成上一节的练习和 学习类 与认识对象.


目录

 

上节游戏(练习)制作过程和思路

题目

整理思路

开始制作 

游戏逻辑.

 创建程序核心,游戏结束条件判断

提示用户输入

完成掷骰子部分(生成随机数)

处理操作

所有代码

测试结果

本节正题-注释

单行注释

多行注释

文档注释

总结


上节游戏(练习)制作过程和思路

上一节博客链接: https://blog.csdn.net/qq_41806966/article/details/106201402

题目

游戏开始,主角可以轻松看到自己的 金额 信息(使用输出 + 变量),默认有 100 金币.

主角可以掷骰子,并进行对应功能.

主角掷骰子后,人机开始掷骰子(回合制)

胜利条件

  • 简单的
    • 玩家和人机 哪个金币先超过1000就算胜利
  • 增加趣味性的(对于新手难度比较大,下面的骰子功能自己思考添加)
    • 玩家和人机都有对应血量,掷骰子有功能可以消耗金币攻击对方,或者直接攻击,谁血量先少于0则谁输

骰子有 1,2,3,4,5,6 六个点数,每一个点数对应一个功能.

  1. 增加80金币
  2. 交给对方30金币(金币 - 30)
  3. 休息(不做操作)
    1. 这个实现其实就是没有这个选项(不需要判断随机数是否为3,或者随机数为3里面不写代码)
  4. 挖对方墙角(金币持续三回合减少,每回合-20)
    1. 这个实现 使用一个变量用来计数,在每回合执行操作前判断这个变量是否不为0(为0则代表没有这个效果),不为0则减少金币,并提示.(执行完后记得将变量的值 - 1)
  5. 都增加 50 金币
  6.  
  7. 都减少 50 金币

整理思路

我提供了两种玩法,第一种比较简单

  • 根据上面的题目我们可以获取主角只有一个属性(金币),以及一个人机的金币数量
  • 利用之前所学的随机数,制作掷骰子事件,并通过 if...else(或者switch)来执行对应操作.
  • 每次执行完操作后判断玩家金币 或者 人机金币是否大于1000来执行操作

我们要做的是第二种,

  • 相比第一种,增加了两个属性,玩家和人机的血量
  • 掷骰子的功能会有一些改变(这里为了能够对应第一种玩法,所以我就直接在原来玩法上进行增加)
  • 胜利的条件改变了,从谁钱多谁赢变为了 谁把对方血搞没谁赢.

开始制作 

我们制作的是第二种玩法

在之前的文件夹内新建一个文件夹,并新建一个java文件.

首先,我们把属性都定义好(玩家和人机金币,玩家和人机血量)


游戏逻辑.

玩家可以执行掷骰子操作(也就是简单地输入 1 我们用随机数执行掷骰子)

玩家执行了掷骰子操作后,进行对应处理,然后人机执行掷骰子操作,进行对应处理

(感觉有点重复对不对? 玩家和人机都可以掷骰子,并且都可以处理操作,而且都是相同的代码(后面学习到面向对象,就可以很好的处理这些重复部分了.))

我们的游戏有结束条件--谁先把对方血量弄没就赢,应该在哪判断呢?

在游戏中,能减少血量的地方就只有 掷骰子 部分了,我们只需要在 玩家和人机掷骰子完后判断一下就可以了.

因为有游戏胜利条件,所以我们的游戏是一个死循环(通过胜利来进行跳出)li


 创建程序核心,游戏结束条件判断

 代码如下


提示用户输入

使用到了 Scanner(相信各位对Scanner的使用已经非常熟悉了),别忘了导入

为了好一点的体验感我们需要在开头显示用户和人机的血量,金币信息

代码如下


完成掷骰子部分(生成随机数)

使用 Random,与Scanner一样,Random也只需要一个

骰子只有六个点数,所以我们只需要生成六个数字即可(nextInt(6))

代码如下


处理操作

剩下的就是对应的操作了

  1. 增加80金币
  2. 交给对方30金币(金币 - 30),并减少对方10生命值
  3. 休息(不做操作)
  4. 花费现有所有金币来对对方造成对应伤害(除以10) 注: 金币为负数就是给对方加血了66
  5. 都增加 50 金币,恢复20点生命值
  6. 都减少 50 金币 减少10生命值

 代码如下


所有代码

import java.util.Scanner;
import java.util.Random;

public class Game {
	public static void main(String[] args) {
		//定义玩家和人机的属性
		//可以一次定义多个变量,使用逗号隔开
		//第一个为玩家金币,第二个为人机金币 默认有100金币
		int money = 100,robotMoney = 100;
		//玩家血量和人机血量,默认血量也是 100
		int health = 100,robotHealth = 100;
		//创建 Scanner 不要在循环里创建,我们只需要用到一个Scanner就行
		Scanner sc= new Scanner(System.in);
		//创建随机器 Random(别忘了导入)
		Random r = new Random();
		//程序核心
		while (true) {
			//提示用户
			System.out.println("-------人机大战--------");
			System.out.println("*****玩家信息*****");
			System.out.println("血量: " + health);
			System.out.println("金币: " + money);
			System.out.println("*****人机信息*****");
			System.out.println("血量: " + robotHealth);
			System.out.println("金币: " + robotMoney);
			System.out.println("******************");
			System.out.println("请输入编号:");
			System.out.println("1.掷骰子");
			System.out.println("0.退出");
			System.out.println("-----------------------");
			//获取玩家要执行的操作 掷骰子/退出
			int operation = sc.nextInt();
			if (operation == 1) {
				//掷骰子,这里就不执行操作,不然要把下面的代码复制到这里
				//会显得很乱 所以执行完这个就会自动往下执行
				//退出和乱输入都不会执行下面的代码
			} else if (operation == 0) {
				System.out.println("下次再见~");
				break;
			} else {
				System.out.println("你输入的是啥?重新输入吧!");
				continue;
			}
			//玩家掷骰子
			int num = r.nextInt(6);
			//玩家的操作
			switch (num) {
			case 0:
				//增加80金币 这里的+=其实就是 money = money + 80
				money += 80;
				break;
			case 1:
				//交给对方30金币,减少对方10生命值
				money -= 30;
				robotMoney += 30;
				//-=和+=一致 这里等于 robotHealth = robotHealth - 10
				robotHealth -= 10;
				break;
			case 2:
				//休息
				break;
			case 3:
				//花费所有金币对对方造成伤害(负数则是增加血量)
				robotHealth += money / 10;
				money = 0;
				break;
			case 4:
				//都增加50金币 恢复20生命值
				money += 50; robotMoney += 50;
				health += 20; robotHealth += 20;
				break;
			case 5:
				//都减少50金币,减少10生命值
				money -= 50; robotMoney -= 50;
				health -= 10; robotHealth -= 10;
				break;
			}
			//操作完成判断结果
			if (health <= 0) {
				//玩家失败
				System.out.println("你居然被机器人打败了!");
				break;
			} else if (robotHealth <= 0) {
				//玩家胜利
				System.out.println("恭喜你 胜利!");
				break;				
			}
			//人机掷骰子
			num = r.nextInt(6);
			//人机的操作
			switch (num) {
			case 0:
				//增加80金币 这里的+=其实就是 robotMoney = robotMoney + 80
				robotMoney += 80;
				break;
			case 1:
				//交给对方30金币,减少对方10生命值
				robotMoney -= 30;
				money += 30;
				//-=和+=一致 这里等于 health = health - 10
				health -= 10;
				break;
			case 2:
				//休息
				break;
			case 3:
				//花费所有金币对对方造成伤害(负数则是增加血量)
				health += robotMoney / 10;
				money = 0;
				break;
			case 4:
				//都增加50金币 恢复20生命值
				money += 50; robotMoney += 50;
				health += 20; robotHealth += 20;
				break;
			case 5:
				//都减少50金币,减少10生命值
				money -= 50; robotMoney -= 50;
				health -= 10; robotHealth -= 10;
				break;
			}
			//操作完成判断结果
			if (health <= 0) {
				//玩家失败
				System.out.println("你居然被机器人打败了!");
				break;
			} else if (robotHealth <= 0) {
				//玩家胜利
				System.out.println("恭喜你 胜利!");
				break;				
			}
		}

	}
}

测试结果


本节正题-注释

在之前我们接触过注释,也就是我经常在代码里写的文字信息

为什么需要注释呢? 如果我不加注释的话,你们能看懂我代码吗?(如果你不懂的话)

这就是需要注释的原因,注释,不是给计算机用的,是给程序员看的.

注释会被编译器过滤掉,所以不用担心性能什么的问题.

当然,一个好的注释可以让别人快速理解(注意 是好的注释),请勿滥用 

注释有几种,在Java中有以下几种注释

  • 单行注释 (我之前用的大多都是单行注释)
  • 多行注释
  • 文档注释

单行注释

 注释某一行,也就是这一行的内容被编译器不管直接跳过

语法: // 在双斜杠后面的都是注释 必须是双斜杠 像 /*/ /1/ 都是无效的

这个我们之前接触的挺多的.就不过多讲述了

多行注释

 有的时候我们需要注释的文字是很多行(而不是单行),如果我们用单行注释虽然可以实现效果,

但是每一行你都要写上双斜杠,这时就可以用到多行注释.

语法: /* 斜杠加星号开头,星号加斜杠结尾,包含在这个里面的为多行注释,可以随便多少行,只要在这个里面 */

例子

/*
我是多行注释.
下面这一个代码作用是调用系统输出(废话)
我们最终结果会在控制台打印 [哈哈](废话)
*/
System.out.println("哈哈");

文档注释

我们写的注释更多的时候希望生成一个文档,而不是仅仅在java代码中,我们可以把文档给别人看,别人可以轻松知道我们干了什么...

语法: /** 文档注释的开头比多行注释多了一个星号 与多行注释一致 可以多行 */

文档注释包含很多内容,我们后面详细讲解.


总结

注释可以让别人快速理解我们的代码.

Java中的注释分为单行注释,多行注释,文档注释

文档注释可以把注释的内容生成为文档给别人观看

--------------------

思想的升华.

下一节学习类与对象.

猜你喜欢

转载自blog.csdn.net/qq_41806966/article/details/106331401
今日推荐