[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中的註釋分爲單行註釋,多行註釋,文檔註釋

文檔註釋可以把註釋的內容生成爲文檔給別人觀看

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

思想的昇華.

下一節學習類與對象.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章