日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础--用程序模拟打怪游戏

發布時間:2024/3/26 java 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础--用程序模拟打怪游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模擬回合制打怪游戲

文章目錄

  • 一、問題具體描述
  • 二、分析
  • 三、代碼編寫

注:這是隨機數的提升練習,不會生成隨機數的 點這里。

一、問題具體描述

打怪游戲:玩家、怪物

玩家:血量值315

怪物:血量值500

玩家和怪物互砍。

玩家每次攻擊怪物產生5~8點傷害,怪物每次攻擊玩家產生3~5點傷害。

采用回合制(玩家和怪物互砍一刀為一個回合)。

一方掛掉,游戲結束。

要求:用程序模擬戰斗過程。

二、分析

(1)可以定義兩個變量,分別代表玩家(315)和怪物(500)。

(2)打斗過程是反復執行的,就要用到循環。

循環成立的條件:玩家和怪物都活著。

循環里面執行:玩家和怪物互砍。

(3)玩家攻擊怪物

①生成玩家攻擊力(5~8)。

②怪物血量值對應減少。

③輸出:玩家攻擊怪物,怪物掉了多少血量,還剩多少血量。

(4)怪物攻擊玩家

①生成怪物攻擊力(3~5)。

②玩家血量值對應減少。

③輸出:怪物攻擊玩家,玩家掉了多少血量,還剩多少血量。

(5)循環之后,判斷玩家和怪物是否都活著,若都活著,就再循環,否則結束循環。

(6)游戲結束。

三、代碼編寫

(1)根據上面的分析,我們不難寫出代碼:

package Test1;public class demo2 {public static void main(String[] args) {/* 打怪游戲 *///1、定義兩個變量,分別賦值相應的血量值int w=315; //玩家int g=500; //怪物int i=1;//回合計數變量//2、用循環模擬打斗回合while(w>0 && g>0){ //循環條件是兩者都活著//循環里面執行兩者互砍System.out.println("----------第"+i+"回合----------");i++;//每一次回合之后,讓回合計數變量加一//3、玩家攻擊怪物//生成玩家攻擊力(5~8)int wg=(int)(Math.random()*4)+5;//減少怪物血量值g-=wg;//輸出結果System.out.println("玩家攻擊怪物,怪物掉了"+wg+"點血量值,"+"還剩"+g+"點血量值");//4、怪物攻擊玩家//生成怪物攻擊力(3~5)int gw=(int)(Math.random()*3+3);//減少玩家血量值w-=gw;//輸出結果System.out.println("怪物攻擊玩家,玩家掉了"+gw+"點血量值,"+"還剩"+w+"點血量值");}} }

看一下執行結果,會出一點小意外:

我們會發現,最后一個回合中,怪物血量已經減少為負值了,即已經掛掉了。

但是最后還是攻擊了玩家,“詐尸”了?

按照道理,本不應該再攻擊玩家了。

(2)那剛才編寫的代碼究竟哪里出錯了呢?

🌩 當我們減少怪物血量值之后,如果怪物已經掛了,此時,若并沒有讓循環停止,下面**“怪物攻擊玩家”**的代碼將繼續執行。

我們可以在**“玩家攻擊怪物”之后的代碼添加一個判斷“怪物是否已經掛掉”**。

//判斷怪物是否已經掛掉if(g<=0){//讓循環停止,并輸出結果System.out.println("怪物掛掉,玩家勝利!");break; //可以在循環中使用哦。在此處作用:停止循環繼續執行}

同理,在**“怪物攻擊玩家”之后的代碼添加一個判斷“玩家是否已經掛掉”**。

//判斷玩家是否已經掛掉if(w<=0){//讓循環停止,并輸出結果System.out.println("玩家掛掉,怪物勝利!");break; }

整體代碼:

package Test1;public class demo2 {public static void main(String[] args) {/* 打怪游戲 *///1、定義兩個變量,分別賦值相應的血量值int w=315; //玩家int g=500; //怪物int i=1;//回合計數變量//2、用循環模擬打斗回合while(w>0 && g>0){ //循環條件是兩者都活著//循環里面執行兩者互砍System.out.println("----------第"+i+"回合----------");i++;//每一次回合之后,讓回合計數變量加一//3、玩家攻擊怪物//生成玩家攻擊力(5~8)int wg=(int)(Math.random()*4)+5;//減少怪物血量值g-=wg;//輸出結果System.out.println("玩家攻擊怪物,怪物掉了"+wg+"點血量值,"+"還剩"+g+"點血量值");//判斷怪物是否已經掛掉if(g<=0){//讓循環停止,并輸出結果System.out.println("怪物掛掉,玩家勝利!");break; //可以在循環中使用哦。在此處作用:停止循環繼續執行}//4、怪物攻擊玩家//生成怪物攻擊力(3~5)int gw=(int)(Math.random()*3+3);//減少玩家血量值w-=gw;//輸出結果System.out.println("怪物攻擊玩家,玩家掉了"+gw+"點血量值,"+"還剩"+w+"點血量值");//判斷玩家是否已經掛掉if(w<=0){//讓循環停止,并輸出結果System.out.println("玩家掛掉,怪物勝利!");break;}}} }

運行結果:

可以看到,怪物沒有“詐尸”了!

顯示結果正常。

(3)代碼調整。

此時**“break”**有調整循環的作用。

當怪物或玩家的血量值<=0的時候,循環就會停止。

那么此時while中的條件判斷就沒有意義了。

可以寫一個恒成立的條件:true

最終代碼:

package Test1;public class demo2 {public static void main(String[] args) {/* 打怪游戲 *///1、定義兩個變量,分別賦值相應的血量值int w=315; //玩家int g=500; //怪物int i=1;//回合計數變量//2、用循環模擬打斗回合while(true){ //循環條件是兩者都活著//循環里面執行兩者互砍System.out.println("----------第"+i+"回合----------");i++;//每一次回合之后,讓回合計數變量加一//3、玩家攻擊怪物//生成玩家攻擊力(5~8)int wg=(int)(Math.random()*4)+5;//減少怪物血量值g-=wg;//輸出結果System.out.println("玩家攻擊怪物,怪物掉了"+wg+"點血量值,"+"還剩"+g+"點血量值");//判斷怪物是否已經掛掉if(g<=0){//讓循環停止,并輸出結果System.out.println("怪物掛掉,玩家勝利!");break; //可以在循環中使用哦。在此處作用:停止循環繼續執行}//4、怪物攻擊玩家//生成怪物攻擊力(3~5)int gw=(int)(Math.random()*3+3);//減少玩家血量值w-=gw;//輸出結果System.out.println("怪物攻擊玩家,玩家掉了"+gw+"點血量值,"+"還剩"+w+"點血量值");//判斷玩家是否已經掛掉if(w<=0){//讓循環停止,并輸出結果System.out.println("玩家掛掉,怪物勝利!");break;}}} }

運行結果展示(每個人每次運行結果不同很正常,因為是隨機生成):

總結

以上是生活随笔為你收集整理的Java基础--用程序模拟打怪游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。