[Java教程]8.運算符(上節遊戲完成)

Java教程專欄:https://blog.csdn.net/qq_41806966/category_9929686.html

本節完成上節留下的練習 和 學習 Java 裏的運算符


完成上節留下的練習

上一節博客(題目文本內容從此獲取): https://blog.csdn.net/qq_41806966/article/details/105915782


開始製作

在之前的目錄新建一個文件夾,並新建一個Java文件(名稱隨意)

打開,先將 main 寫好

 

創建玩家有的屬性(健康值 和 金幣)

通過觀察題意可得 玩家擁有健康值 和 金幣

通過上面這句可得出,有一個變量(健康值),默認爲100 所以我們定義一個變量 health(因爲是數字 所以類型爲整形 這裏使用int)20

健康值爲0 遊戲結束,所以我們需要添加一個判斷,在執行完操作後(循環的最後)判斷健康值是否小於0(< 小於號),爲0我們跳出循環並提示失敗.

執行每一個操作健康值減10,判斷結果

第二句規則是

通過此句,得出,我們不止一次操作(使用循環),並且每次操作都會消耗10健康值(循環裏執行 health-10 操作)

這裏就使用 while 死循環(因爲 實際上此遊戲可以一直運行)

在執行操作之前,我們需要獲取到用戶的操作,所以需要使用 Scanner,在頂部導入Scanner,並創建Scanner

此條操作應放在循環的最底部 在判斷是否結束的上方.

完成家的部分

現在我們已經做完了 判斷遊戲結果和每次操作-10健康值,接下來就是開始做遊戲功能部分

在家裏有兩個選項,出門 和 去往大街.我們需要從鍵盤接收到做什麼操作,並且定義兩個不同的地點的結果

去往大街則又有不同的選項,睡覺則恢復健康值(不能超過最大健康值 100),所以代碼如下

import java.util.Scanner;

public class ShopGame {
	public static void main(String[] args) {
		//健康值 默認100 滿值
		int health = 100;
		//金幣 默認爲 0
		int money = 0;
		//創建Scanner
		Scanner input = new Scanner(System.in);
		//輸出提醒一下,人性化一點
		System.out.println("開始遊戲");
		while (true) {
			//當前的場景 家
			//提醒用戶當前場景以及操作的內容
			//0 爲睡覺,1 爲去大街
			System.out.println("**********************");
			System.out.println("當前的場景: 家");
			//玩家有兩個屬性 我們每執行一次操作就給輸出方便見到結果
			System.out.println("你當前的健康值:" + health);
			System.out.println("你當前的:" + money);
			System.out.println("請輸入編號,你可以選擇:");
			System.out.println("0.睡覺");
			System.out.println("1.去往大街");
			System.out.println("**********************");
			//接收用戶的目的
			int home = input.nextInt();
			//執行目的
			if (home == 0) {
				//睡覺 加20點健康值
				health = health + 20;
				//健康值不能超過100
				//大於號在鍵盤的 M 的右邊的右邊也就是點. 要同時按下shift鍵
				if (health > 100) {
					health = 100;
				}
				System.out.println("Zzzzz...");
			} else if (home == 1) {
				//去往大街
			} else {
				System.out.println("沒有此操作,請重新輸入!");
				//因爲是輸入錯誤(並沒有執行操作) 所以不需要減健康值
				//使用continue(繼續) 就直接從頭開始執行了
				continue;
			}
			//執行一次操作,健康值減去10(放在代碼的最下面,在判斷結果的上面)
			//減號 - 在鍵盤上面一排小數字0的右邊
			health = health - 10;
			//判斷結果 健康值小於0則失敗了 在循環的最下方
			//小於號 < 在鍵盤M的右邊 也就是逗號,要同時按下Shift鍵
			if (health < 0) {
				//提示遊戲失敗
				System.out.println("很遺憾,你的挑戰失敗!");
				//跳出循環 不跳出則又會繼續執行循環裏的代碼
				break;
			}
		}
		//跳出循環後就會執行到這裏來了 這裏沒有語句 所以程序直接結束
	}
}

現在,我們的程序已經可以執行睡覺了,並且你可以看到健康值的改變.每當看到自己操作數據的改變會是那麼的愉快.

完成大街場景

大街上有三個選項,商店,打工,吃飯

商店又是一個場景,所以大街中,實際要實現的只有 打工,和吃飯功能

代碼如下(if中的大街部分的代碼(代碼太多 貼出來影響觀看))

            } else if (home == 1) {
				//去往大街 將最後的代碼複製上來
				//因爲去往大街 和 在大街是兩次操作
				health = health - 10;
				if (health < 0) {
					System.out.println("很遺憾,你的挑戰失敗!");
					break;
				}
				//提醒用戶當前的場景操作
				//0商店 1打工 2吃飯
				System.out.println("**********************");
				System.out.println("當前的場景: 大街");
				System.out.println("你當前的健康值:" + health);
				System.out.println("你當前的:" + money);
				System.out.println("請輸入編號,你可以選擇:");
				System.out.println("0.去往商店");
				System.out.println("1.打工");
				System.out.println("2.吃飯");
				System.out.println("**********************");
				//接收用戶的目的 這裏變量名爲street 中文意思爲街道
				int street = input.nextInt();
				//這裏使用 switch,熟悉一下
				switch (street) {
				case 0:
					//去往商店
					
					break;
				case 1:
					//打工 消耗20健康值換取100金幣
					//健康值不夠腫麼辦? 當然是把你趕走(你只能回家)
					if (health > 20) {
						//打工 消耗健康值換取金幣
						health = health - 20;
						money = money + 100;
					} else {
						//健康值不夠 把你趕走 使用continue 直接從頭開始(家裏)
						System.out.println("就你這體能還想打工?回家洗洗睡吧!");
						continue;
					}
					break;
				case 2:
					//吃飯 消耗50金幣 恢復30健康值
					//金幣不夠怎麼辦? 你去吃自助餐沒帶夠錢,當然是把你趕走.
					if (money > 50) {
						money = money - 50;
						health = health + 30;
					} else {
						//金幣不夠 把你趕走 使用continue 直接從頭開始(家裏)
						System.out.println("想吃霸王餐?回家洗洗睡吧!");
						continue;
					}
					break;
				//default 類似於if的 else,也就是上面所有條件不成立執行此
				default:
					System.out.println("你來到了大街,但是沒有你要的東西,你回家了.");
				break;
				}
			}

 目前的程度已經可以玩一玩了,但是沒有通關.

完成商店場景

這是最後一個場景,也是最後一步了

與寫大街的場景類似

結果演示

通關輸入順序: 4個1 6個0 4個1 8個0 4個1...

所有的代碼如下

import java.util.Scanner;

public class ShopGame {
	public static void main(String[] args) {
		//健康值 默認100 滿值
		int health = 100;
		//金幣 默認爲 0
		int money = 0;
		//創建Scanner
		Scanner input = new Scanner(System.in);
		//輸出提醒一下,人性化一點
		System.out.println("開始遊戲");
		//這裏的 W: 是給循環命名 因爲商店購買了通關藥水跳出的是switch
		//所以需要使用名稱來指定跳出哪個
		W:while (true) {
			//當前的場景 家
			//提醒用戶當前場景以及操作的內容
			//0 爲睡覺,1 爲去大街
			System.out.println("**********************");
			System.out.println("當前的場景: 家");
			//玩家有兩個屬性 我們每執行一次操作就給輸出方便見到結果
			System.out.println("你當前的健康值:" + health);
			System.out.println("你當前的金幣:" + money);
			System.out.println("請輸入編號,你可以選擇:");
			System.out.println("0.睡覺");
			System.out.println("1.去往大街");
			System.out.println("**********************");
			//接收用戶的目的
			int home = input.nextInt();
			//執行目的
			if (home == 0) {
				//睡覺 加20點健康值
				health = health + 20;
				//健康值不能超過100
				//大於號在鍵盤的 M 的右邊的右邊也就是點. 要同時按下shift鍵
				if (health > 100) {
					health = 100;
				}
				System.out.println("Zzzzz...");
			} else if (home == 1) {
				//去往大街 將最後的代碼複製上來
				//因爲去往大街 和 在大街是兩次操作
				health = health - 10;
				if (health < 0) {
					System.out.println("很遺憾,你的挑戰失敗!");
					break;
				}
				//提醒用戶當前的場景操作
				//0商店 1打工 2吃飯
				System.out.println("**********************");
				System.out.println("當前的場景: 大街");
				System.out.println("你當前的健康值:" + health);
				System.out.println("你當前的金幣:" + money);
				System.out.println("請輸入編號,你可以選擇:");
				System.out.println("0.去往商店");
				System.out.println("1.打工");
				System.out.println("2.吃飯");
				System.out.println("**********************");
				//接收用戶的目的 這裏變量名爲street 中文意思爲街道
				int street = input.nextInt();
				//這裏使用 switch,熟悉一下
				switch (street) {
				case 0:
					//去往商店 和 在商店是兩個操作
					health = health - 10;
					if (health < 0) {
						System.out.println("很遺憾,你的挑戰失敗!");
						break;
					}
					//提醒用戶當前的場景操作
					//0健康藥水 1通關藥水 其餘都爲回家
					System.out.println("**********************");
					System.out.println("當前的場景: 商店");
					System.out.println("你當前的健康值:" + health);
					System.out.println("你當前的金幣:" + money);
					System.out.println("請輸入編號,你可以選擇:");
					System.out.println("0.健康藥水 200金幣");
					System.out.println("1.通關藥水 1000金幣");
					System.out.println("其餘編號都爲回家");
					System.out.println("**********************");
					//接收用戶的目的 這裏變量名爲shop 中文意思爲商店
					int shop = input.nextInt();
					if (shop == 0) {
						//健康藥水 金幣不夠直接趕回家
						if (money < 200) {
							System.out.println("這位客官,出口這邊請.");
						} else {
							health = 100;
							money = money - 200;
							System.out.println("健康值加滿了");
						}
					} else if (shop == 1) {
						//通關藥水,金幣不夠直接回家
						if (money < 1000) {
							System.out.println("這位客官,出口這邊請.");
						} else {
							money = money - 1000;
							System.out.println("恭喜你取得了最終的勝利!");
							//跳出最外層循環 而不是switch,W是命名的
							break W;
						}
					}
					break;
				case 1:
					//打工 消耗20健康值換取100金幣
					//健康值不夠腫麼辦? 當然是把你趕走(你只能回家)
					if (health > 20) {
						//打工 消耗健康值換取金幣
						health = health - 20;
						money = money + 100;
					} else {
						//健康值不夠 把你趕走 使用continue 直接從頭開始(家裏)
						System.out.println("就你這體能還想打工?回家洗洗睡吧!");
						continue;
					}
					break;
				case 2:
					//吃飯 消耗50金幣 恢復30健康值
					//金幣不夠怎麼辦? 你去吃自助餐沒帶夠錢,當然是把你趕走.
					if (money > 50) {
						money = money - 50;
						health = health + 30;
					} else {
						//金幣不夠 把你趕走 使用continue 直接從頭開始(家裏)
						System.out.println("想吃霸王餐?回家洗洗睡吧!");
						continue;
					}
					break;
				//default 類似於if的 else,也就是上面所有條件不成立執行此
				default:
					System.out.println("你來到了大街,但是沒有你要的東西,你回家了.");
				break;
				}
			} else {
				System.out.println("沒有此操作,請重新輸入!");
				//因爲是輸入錯誤(並沒有執行操作) 所以不需要減健康值
				//使用continue(繼續) 就直接從頭開始執行了
				continue;
			}
			//執行一次操作,健康值減去10(放在代碼的最下面,在判斷結果的上面)
			//減號 - 在鍵盤上面一排小數字0的右邊
			health = health - 10;
			//判斷結果 健康值小於0則失敗了 在循環的最下方
			//小於號 < 在鍵盤M的右邊 也就是逗號,要同時按下Shift鍵
			if (health < 0) {
				//提示遊戲失敗
				System.out.println("很遺憾,你的挑戰失敗!");
				//跳出循環 不跳出則又會繼續執行循環裏的代碼
				break;
			}
		}
		//跳出循環後就會執行到這裏來了 這裏沒有語句 所以程序直接結束
	}
}

進入今日正題,運算符

運算符

什麼是運算符? 可以這麼理解,運算符就是用於運算的符號

運算符又分爲 一元運算符,二元運算符,三元運算符

一元運算符就是隻有一個操作數. 例如 i++這種

二元運算符是有兩個操作數 比如 1 + 1

三元運算符有三個操作數,例如 1+1==2 ? 1 : 2;這種

一元運算符

++,--

++就是讓變量+1,--就是讓變量-1

有兩種寫法,一種是運算符在前,一種是在後,當然也有區別,一個是先執行,後加減,另一個就是先加減,後執行

int i = 0;
System.out.println(i++);
i=0;
System.out.println(++i);

最後的結果爲 0,1,因爲 ++i 是先執行+1在進行操作,i++是先進行操作後執行加減,所以第一個爲0,第二個爲1

 二元運算符

 +,-,*,/,% 以及擴展的 +=.-=,*=,/=

+,-,*,/就是我們認爲的加減乘除; %(百分號 鍵盤上方數字5那) 取餘操作,(就是小學學的 除以一個東西的餘數)

int i = 1 + 1;//i = 2

需要注意的是,整形進行除法最終結果也是整形而不是小數

+=,-=...是簡寫操作

例如

int i = 0;
i += 1;//這裏等價於 i = i + 1;

對於取餘來說,可以簡單理解,比如 i % 10,這個式字的結果不會大於10,因爲任何數除以 x 的餘數都不會大於x

 三元運算符

語法 條件 ? true 返回的結果 : false返回的結果;

例如 int i = 1+1==1 ? 111 : 222;//最終 i = 222. 因爲 1+1==1 是false,一加一不等於1

 邏輯運算符

&&,||,!

邏輯運算符經常用到.

&&是 並且的意思

只有當 && 前後兩個式子都爲 true 的時候,表達式纔會爲 true

例如 1==1 && 2==2 這條語句爲true 像 1==1 && 1==2 的結果爲false

 

||是 或者的意思

||前後兩個式字有一個爲 true 整個表達式爲true

例如 1==1 || 1==2 這條語句爲true 因爲1==1爲true, 1==2 || 2==1 這條語句爲false

 

!(感嘆號)是取反的意思,用作boolean變量或者結果上

作用就是 將true變爲false,false變爲true

例如 !(1==1) 這個結果爲false,1=1爲true,取反後就爲false

還有我們之前經常用到的 賦值運算符 =

=是賦值運算符,將右邊的值賦給左邊的變量

關係運算符

>,<,>=,<=,==,!=

> 大於號,<小於號,之前已經用過了 1 > 2返回true 1是大於2的,1 > 1則爲false,1不大於1

>= 大於等於,<=小於等於,1 >= 1返回true,1大於等於1是正確的

==等於

!=不等於,1!=2 返回true,1的確不等於2

 以及還有一些位運算符,涉及到原碼反碼補碼,後面講解.

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