java練習-任務1.2-對戰遊戲
實現:
角色情況:
戰士,生命值:120,攻擊力:45,防禦力:30,命中率:%80
騎兵,生命值:110,攻擊力:55,防禦力:30,命中率:%85
法師,生命值:90,攻擊力:60,防禦力:25,命中率:%70
角色特效:
戰士,勇猛:恢復35生命值
騎士,追擊:追加30傷害
法師,魔力:恢復自身20生命,追擊20傷害
特效激發概率均為40%
遊戲開始後,根據提示資訊輸入編號進行戰鬥
20個回合遊戲結束或一方全體角色陣亡遊戲結束
若某個角色陣亡,則無法使用切無法被攻擊
遊戲開始
有特效
20回合,遊戲結束
程式碼:
import java.util.*;
class Combater//戰鬥基礎類
{
public String name;//名稱
public int live;//生命值
public int attack;//戰鬥力
public int defense;//防禦力
public int rate;//命中率
public String addtion;//特效
public String state;//狀態
public Combater()//無引數的建構函式
{
}
public void base_echo()//基本資訊顯示函式
{
System.out.print(name+",");
System.out.print("生命值:"+live+",");
System.out.print("攻擊力:"+attack+",");
System.out.print("防禦力:"+defense+",");
System.out.print("命中率:"+"%"+rate+",");
System.out.print("特效:"+addtion+",");
if(live>=0)
{
System.out.println("存活");
}
else
{
System.out.println("已陣亡");
}
}
}
class Soldier extends Combater//子類 戰士
{
public Soldier()
{
name="戰士";
live=120;
attack=45;
defense=30;
rate=80;
addtion="不屈戰士";
}
}
class Cavalry extends Combater//子類 騎兵
{
public Cavalry()
{
name="騎兵";
live=110;
attack=55;
defense=30;
rate=85;
addtion="勇猛騎士";
}
}
class Master extends Combater//子類 法師
{
public Master()
{
name="法師";
live=90;
attack=60;
defense=25;
rate=70;
addtion="法師藥水";
}
}
public class mainSet
{
public static void main(String[] args)//主函式
{ int i;
Soldier srole1=new Soldier();
Cavalry crole1=new Cavalry();
Master mrole1=new Master();//建立成員
Soldier srole2=new Soldier();
Cavalry crole2=new Cavalry();
Master mrole2=new Master();//建立成員
System.out.println("角色詳情:");
System.out.println("戰士,生命值:120,攻擊力:45,防禦力:30,命中率:%80,特效:不屈戰士");
System.out.println("騎兵,生命值:110,攻擊力:55,防禦力:30,命中率:%85,特效:勇猛騎士");
System.out.println("法師,生命值:90,攻擊力:60,防禦力:25,命中率:%70,特效:法師藥水");
System.out.println("使用說明:");
System.out.println("角色陣亡後,無法使用該角色,且無法被攻擊,否則操作無效");
Random random1 = new Random();//生成隨機數,用於玩家1攻擊成功概率
Random random2 = new Random();//生成隨機數,用於玩家1攻擊成功概率
Random addtion1 = new Random();//生成隨機數,用於戰士加成產生概率
Random addtion2 = new Random();//生成隨機數,用於騎士加成產生概率
Random addtion3 = new Random();//生成隨機數,用於法師加成產生概率
for(i=1;i<=20;i++)//用於對戰回合進行
{
System.out.println("回合"+i);
if(i%2==1)//角色1模組
{//if
System.out.println("玩家1發動攻擊");
int choice1;//輸入編號進行戰鬥
Scanner reader=new Scanner(System.in);
System.out.println("1、戰士攻擊對方戰士,2、戰士攻擊對方騎士,3、戰士攻擊對方法師,");
System.out.println("4、騎士攻擊對方戰士,5、騎士攻擊對方騎士,6、騎士攻擊對方法師,");
System.out.println("7、法師攻擊對方戰士,8、法師攻擊對方戰士,9、法師攻擊對方法師,");
System.out.print("請輸入:");
choice1=reader.nextInt();//從鍵盤輸入攻擊情形
if(choice1==1&srole1.live>=0&srole2.live>=0)//輸入1,戰士攻擊對方戰士,若戰士生命值<0,則無法攻擊
{
System.out.println("戰士攻擊對方戰士");
if(random1.nextInt(20)<=16)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家2戰士生命值減45");
srole2.live=srole2.live-srole1.attack;//血量計算
if(addtion1.nextInt(10)<=4)//設定加成產生
{
srole2.live=srole2.live+35;//戰士恢復生命值
System.out.println("不屈戰士,玩家2戰士生命值恢復35");
}
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice1==2&srole1.live>=0&crole2.live>=0)//輸入2,戰士攻擊對方騎士,若戰士生命值<0,則無法攻擊
{
System.out.println("戰士攻擊對方騎士");
if(random1.nextInt(20)<=16)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家2騎士生命值減45");
crole2.live=crole2.live-srole1.attack;//血量計算
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice1==3&srole1.live>=0&mrole2.live>=0)//輸入3,戰士攻擊對方法師,若戰士生命值<0,則無法攻擊
{
System.out.println("戰士攻擊對方法師");
if(random1.nextInt(20)<=16)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家2法師生命值減45");
mrole2.live=mrole2.live-srole1.attack;//血量計算
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice1==4&crole1.live>=0&srole2.live>=0)//輸入4,騎士攻擊對方戰士,若騎士生命值<0,則無法攻擊
{
System.out.println("騎士攻擊對方戰士");
if(random1.nextInt(20)<=17)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家2戰士生命值減55");
srole2.live=srole2.live-crole1.attack;//血量計算
if(addtion1.nextInt(10)<=4)//設定戰士加成產生
{
srole2.live=srole2.live+35;//戰士恢復生命值
System.out.println("不屈戰士,玩家2戰士生命值恢復35");
}
if(addtion2.nextInt(10)<=4)//設定騎士加成產生
{
srole2.live=srole2.live-30;//騎士追擊
System.out.println("勇猛騎士,玩家1追加30傷害");
}
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice1==5&crole1.live>=0&crole2.live>=0)//輸入5,騎士攻擊對方騎士,若騎士生命值<0,則無法攻擊
{
System.out.println("騎士攻擊對方騎士");
if(random1.nextInt(20)<=17)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家2騎士生命值減55");
crole2.live=crole2.live-crole1.attack;//血量計算
if(addtion2.nextInt(10)<=4)//設定騎士加成產生
{
crole2.live=crole2.live-30;//騎士追擊
System.out.println("勇猛騎士,玩家1追加30傷害");
}
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice1==6&&crole1.live>=0&mrole2.live>=0)//輸入6,騎士攻擊對方法師,若騎士生命值<0,則無法攻擊
{
System.out.println("騎士攻擊對方法師");
if(random1.nextInt(20)<=17)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家2法師生命值減55");
mrole2.live=mrole2.live-crole1.attack;//血量計算
if(addtion2.nextInt(10)<=4)//設定騎士加成產生
{
mrole2.live=mrole2.live-30;//騎士追擊
System.out.println("勇猛騎士,玩家1追加30傷害");
}
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice1==7&mrole1.live>=0&srole2.live>=0)//輸入7,法師攻擊對方戰士,若法師生命值<0,則無法攻擊
{
System.out.println("法師攻擊對方戰士");
if(random1.nextInt(20)<=14)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家2戰士生命值減60");
srole2.live=srole2.live-mrole1.attack;//血量計算
if(addtion1.nextInt(10)<=4)//設定加成產生
{
srole2.live=srole2.live+35;//戰士恢復生命值
System.out.println("不屈戰士,玩家2戰士生命值恢復35");
}
if(addtion3.nextInt(10)<=4)//設定法師加成產生
{
srole2.live=srole2.live-20;//法師追擊
mrole1.live=mrole1.live+20;//法師恢復
System.out.println("法師魔法,玩家1自身恢復20生命,追擊20傷害");
}
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice1==8&mrole1.live>=0&crole2.live>=0)//輸入8,法師攻擊對方騎士,若法師生命值<0,則無法攻擊
{
System.out.println("法師攻擊對方騎士");
if(random1.nextInt(20)<=14)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家2騎士生命值減60");
crole2.live=crole2.live-mrole1.attack;//血量計算
if(addtion3.nextInt(10)<=4)//設定法師加成產生
{
crole2.live=crole2.live-20;//法師追擊
mrole1.live=mrole1.live+20;//法師恢復
System.out.println("法師魔法,玩家1自身恢復20生命,追擊20傷害");
}
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice1==9&mrole1.live>=0&mrole2.live>=0)//輸入9,法師攻擊對方法師,若法師生命值<0,則無法攻擊
{
System.out.println("法師攻擊對方法師");
if(random1.nextInt(20)<=14)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家2法師生命值減60");
mrole2.live=mrole2.live-mrole1.attack;//血量計算
if(addtion3.nextInt(10)<=4)//設定法師加成產生
{
mrole2.live=mrole2.live-20;//法師追擊
mrole1.live=mrole1.live+20;//法師恢復
System.out.println("法師魔法,玩家1自身恢復20生命,追擊20傷害");
}
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else
{
System.out.println("無效攻擊");
}
if(srole2.live<=0&crole2.live<=0&mrole2.live<=0)
{i=i+100;
System.out.println("玩家2所有角色陣亡,玩家1勝利");
//如果血量為零跳出迴圈
}
}//if
else //角色2模組
{ //else括號
System.out.println("玩家2發動攻擊");
int choice2;//輸入編號進行戰鬥
Scanner reader=new Scanner(System.in);
System.out.println("1、戰士攻擊對方戰士,2、戰士攻擊對方騎士,3、戰士攻擊對方法師,");
System.out.println("4、騎士攻擊對方戰士,5、騎士攻擊對方騎士,6、騎士攻擊對方法師,");
System.out.println("7、法師攻擊對方戰士,8、法師攻擊對方戰士,9、法師攻擊對方法師,");
System.out.print("請輸入:");
choice2=reader.nextInt();//從鍵盤輸入攻擊情形
if(choice2==1&srole2.live>=0&srole1.live>=0)//輸入1,戰士攻擊對方戰士,若戰士生命值<0,則無法攻擊
{
System.out.println("戰士攻擊對方戰士");
if(random2.nextInt(20)<=16)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家1戰士生命值減45");
srole1.live=srole1.live-srole2.attack;//血量計算
if(addtion1.nextInt(10)<=4)//設定加成產生
{
srole1.live=srole1.live+35;//戰士恢復生命值
System.out.println("不屈戰士,玩家1戰士生命值恢復35");
}
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice2==2&srole2.live>=0&crole1.live>=0)//輸入2,戰士攻擊對方騎士,若戰士生命值<0,則無法攻擊
{
System.out.println("戰士攻擊對方騎士");
if(random2.nextInt(20)<=16)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家1騎士生命值減45");
crole1.live=crole1.live-srole2.attack;//血量計算
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice2==3&srole2.live>=0&mrole1.live>=0)//輸入3,戰士攻擊對方法師,若戰士生命值<0,則無法攻擊
{
System.out.println("戰士攻擊對方法師");
if(random2.nextInt(20)<=16)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家1法師生命值減45");
mrole1.live=mrole1.live-srole2.attack;//血量計算
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice2==4&crole2.live>=0&srole1.live>=0)//輸入4,騎士攻擊對方戰士,若騎士生命值<0,則無法攻擊
{
System.out.println("騎士攻擊對方戰士");
if(random2.nextInt(20)<=17)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家1戰士生命值減55");
srole1.live=srole1.live-crole2.attack;//血量計算
if(addtion1.nextInt(10)<=4)//設定加成產生
{
srole1.live=srole1.live+35;//戰士恢復生命值
System.out.println("不屈戰士,玩家1戰士生命值恢復35");
}
if(addtion2.nextInt(10)<=4)//設定騎士加成產生
{
srole1.live=srole1.live-30;//騎士追擊
System.out.println("勇猛騎士,玩家2追加30傷害");
}
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice2==5&crole2.live>=0&crole1.live>=0)//輸入5,騎士攻擊對方騎士,若騎士生命值<0,則無法攻擊
{
System.out.println("騎士攻擊對方騎士");
if(random1.nextInt(20)<=17)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家1騎士生命值減55");
crole1.live=crole1.live-crole2.attack;//血量計算
if(addtion2.nextInt(10)<=4)//設定騎士加成產生
{
crole1.live=crole1.live-30;//騎士追擊
System.out.println("勇猛騎士,玩家2追加30傷害");
}
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice2==6&crole2.live>=0&mrole1.live>=0)//輸入6,騎士攻擊對方法師,若騎士生命值<0,則無法攻擊
{
System.out.println("騎士攻擊對方法師");
if(random1.nextInt(20)<=17)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家1法師生命值減55");
mrole1.live=mrole1.live-crole2.attack;//血量計算
if(addtion2.nextInt(10)<=4)//設定騎士加成產生
{
mrole1.live=mrole1.live-30;//騎士追擊
System.out.println("勇猛騎士,玩家2追加30傷害");
}
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice2==7&mrole2.live>=0&srole1.live>=0)//輸入7,法師攻擊對方戰士,若法師生命值<0,則無法攻擊
{
System.out.println("法師攻擊對方戰士");
if(random1.nextInt(20)<=14)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家1戰士生命值減60");
srole1.live=srole1.live-mrole2.attack;//血量計算
if(addtion1.nextInt(10)<=4)//設定加成產生
{
srole1.live=srole1.live+35;//戰士恢復生命值
System.out.println("不屈戰士,玩家1戰士生命值恢復35");
}
if(addtion3.nextInt(10)<=4)//設定法師加成產生
{
srole1.live=srole1.live-20;//法師追擊
mrole2.live=mrole2.live+20;//法師恢復
System.out.println("法師魔法,玩家2自身恢復20生命,追擊20傷害");
}
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice2==8&mrole2.live>=0&crole1.live>=0)//輸入8,法師攻擊對方騎士,若法師生命值<0,則無法攻擊
{
System.out.println("法師攻擊對方騎士");
if(random1.nextInt(20)<=14)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家1騎士生命值減60");
crole1.live=crole1.live-mrole2.attack;//血量計算
if(addtion3.nextInt(10)<=4)//設定法師加成產生
{
crole1.live=crole1.live-20;//法師追擊
mrole2.live=mrole2.live+20;//法師恢復
System.out.println("法師魔法,玩家2自身恢復20生命,追擊20傷害");
}
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else if(choice2==9&mrole2.live>=0&mrole1.live>=0)//輸入9,法師攻擊對方法師,若法師生命值<0,則無法攻擊
{
System.out.println("法師攻擊對方法師");
if(random1.nextInt(20)<=14)//設定攻擊成功概率
{ System.out.println("攻擊成功,玩家1法師生命值減60");
mrole1.live=mrole1.live-mrole2.attack;//血量計算
if(addtion3.nextInt(10)<=4)//設定法師加成產生
{
mrole1.live=mrole1.live-20;//法師追擊
mrole2.live=mrole2.live+20;//法師恢復
System.out.println("法師魔法,玩家2自身恢復20生命,追擊20傷害");
}
}
else
{System.out.println("受擊方閃躲成功");}//顯示攻擊詳情
}
else
{
System.out.println("無效攻擊");
}
if(srole1.live<=0&crole1.live<=0&mrole1.live<=0)
{i=i+100;
System.out.println("玩家1所有角色陣亡,玩家2勝利");
//如果血量為零跳出迴圈
}
}//else括號
System.out.println("玩家1:");
srole1.base_echo();//顯示角色1
crole1.base_echo();
mrole1.base_echo();
System.out.println("玩家2:");
srole2.base_echo();//顯示角色1
crole2.base_echo();
mrole2.base_echo();
if(i==20)//當回合結束時判斷哪個玩家勝利
{
if(srole1.live+crole1.live+mrole1.live>srole2.live+crole2.live+mrole2.live)//根據總血量判斷
{System.out.println("回合結束,玩家1勝利");}
else
{System.out.println("回合結束,玩家2勝利");}
}
}//for迴圈
System.out.println("戰鬥結束.。。。。。。");//戰鬥結束
}//主程式括號
}//主類括號
相關文章
- Python練習01-對戰小遊戲Python遊戲
- [java]練習:列印對稱菱形Java
- 前端例項練習 - 任務清單 To do list前端
- Java併發實戰(六) 任務執行Java
- 牛客練習賽40 B 小A與任務(貪心)
- java多執行緒系列:通過對戰遊戲學習CyclicBarrierJava執行緒遊戲
- Java併發學習之任務取消(一)Java
- 《JAVA併發程式設計實戰》任務執行Java程式設計
- 備份任務實戰
- java練習——任務1.1——資料型別、運算子、控制語句、陣列、表示式的使用Java資料型別陣列
- NVIDIA NeMo 如何支援對話式 AI 任務的訓練與推理?AI
- Java 定時任務Java
- 資料庫實驗室挑戰任務-初級任務資料庫
- Java方法練習Java
- java練習題Java
- 《Java併發程式設計實戰》學習筆記 任務執行和取消關閉Java程式設計筆記
- java web定時任務JavaWeb
- java任務--模擬器Java
- java任務--交通工具Java
- Java & Go 定時任務JavaGo
- 前端學習任務四前端
- 今年的學習任務
- 任務型對話系統
- Java Map集合練習Java
- Java繼承練習Java繼承
- JAVA 陣列 練習Java陣列
- Java之反射--練習Java反射
- Etcd 實戰練習(一)
- Etcd 實戰練習(二)
- Appium 實戰練習一APP
- 遊戲資料分析練習遊戲
- 例項後臺執行訓練或任務
- Java編寫定時任務Java
- java定時任務巢狀Java巢狀
- Flowable實戰(八)BPMN2.0 任務
- 文生影片: 任務、挑戰及現狀
- 任務14-實戰1 筆記筆記
- Java實現簡易聯網坦克對戰小遊戲Java遊戲