complite main class + add some comment
This commit is contained in:
@@ -26,6 +26,7 @@ public class Main {
|
||||
public static Entity enemy;
|
||||
public static Scanner input = new Scanner(System.in);
|
||||
public static ArrayList<Boolean> keys = new ArrayList<Boolean>();
|
||||
public static boolean running = true;
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
@@ -33,45 +34,50 @@ public class Main {
|
||||
|
||||
startMenu();
|
||||
|
||||
while (true){
|
||||
while (running){ // when exit ruuning will be false
|
||||
|
||||
do{
|
||||
System.out.println("===============================");
|
||||
Location fightLoc = fightMenu();
|
||||
enemy = fightLoc.getEnemie();
|
||||
System.out.println(enemy.toString() + "| HP:" + enemy.getHp());
|
||||
System.out.println("Do you want fight?");
|
||||
System.out.println("1.Yes");
|
||||
System.out.println("2.No(Go to another location)");
|
||||
int n = input.nextInt();
|
||||
if(n==1){
|
||||
gameplay();
|
||||
if(!player.isalive()){
|
||||
System.out.println("===============================");
|
||||
System.out.println( YELLOW + "Goodby!");
|
||||
return;
|
||||
|
||||
try { // if we have null location we handle with this try/catch
|
||||
System.out.println("===============================");
|
||||
Location fightLoc = fightMenu(); // make location with random enemy
|
||||
enemy = fightLoc.getEnemie();
|
||||
System.out.println(enemy.toString() + "| HP:" + enemy.getHp());
|
||||
System.out.println("Do you want fight?");
|
||||
System.out.println("1.Yes");
|
||||
System.out.println("2.No(Go to another location)");
|
||||
int n = input.nextInt();
|
||||
if(n==1){
|
||||
gameplay(); // if you want play go to gameplay()
|
||||
if(!player.isalive()){ // result of match
|
||||
System.out.println("===============================");
|
||||
System.out.println( YELLOW + "Goodby!");
|
||||
return;
|
||||
}
|
||||
else {
|
||||
System.out.println(BLUE);
|
||||
player.repair();
|
||||
System.out.println(RESET);
|
||||
}
|
||||
}
|
||||
else {
|
||||
System.out.println(BLUE);
|
||||
player.repair();
|
||||
System.out.println(RESET);
|
||||
else if(n >= 3){
|
||||
System.out.println("Invalid input");
|
||||
}
|
||||
}
|
||||
else if(n >= 3){
|
||||
System.out.println("Invalid input");
|
||||
}catch (NullPointerException exception){
|
||||
System.out.println( YELLOW + "Goodby!");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
}while (true);
|
||||
}while (running);
|
||||
|
||||
|
||||
|
||||
}
|
||||
// TODO: IMPLEMENT GAMEPLAY
|
||||
}
|
||||
|
||||
|
||||
public static void setKeys(){
|
||||
//make keys array
|
||||
public static void setKeys(){ // set key array for enemies
|
||||
boolean goblinkey=false;
|
||||
boolean skeletonkey = false;
|
||||
boolean vampirekey = false;
|
||||
@@ -80,7 +86,9 @@ public class Main {
|
||||
keys.add(vampirekey);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
this method choose for player in game
|
||||
*/
|
||||
public static void startMenu(){
|
||||
System.out.println("----------Welcome to Java-Knight----------");
|
||||
setKeys();
|
||||
@@ -91,7 +99,7 @@ public class Main {
|
||||
System.out.println("2. \uD83E\uDDD9\u200D♂\uFE0F Wizard (High HP)");
|
||||
System.out.println("3. \uD83D\uDDE1\uFE0F️ Assassin (High Mana)");
|
||||
|
||||
boolean validInput = false;
|
||||
boolean validInput = false; // check for vaild input
|
||||
while (!validInput){
|
||||
System.out.print("chose:");
|
||||
int choose =input.nextInt();
|
||||
@@ -125,8 +133,13 @@ public class Main {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* make a location
|
||||
* @return location with random enemy
|
||||
*/
|
||||
public static Location fightMenu(){
|
||||
boolean dragonOpen = true;
|
||||
boolean dragonOpen = true; // check drangon is open
|
||||
for (Boolean b : keys){
|
||||
if(b == false){
|
||||
dragonOpen = false;
|
||||
@@ -140,7 +153,7 @@ public class Main {
|
||||
System.out.println("2.Sea");
|
||||
System.out.println("3.Jungle");
|
||||
|
||||
for(boolean b : keys){
|
||||
for(boolean b : keys){ // for every key chek and write lock or tik
|
||||
if(b){
|
||||
System.out.print("✔\uFE0F");
|
||||
|
||||
@@ -151,6 +164,8 @@ public class Main {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if(dragonOpen) {
|
||||
System.out.println("4.Dranon");
|
||||
}
|
||||
@@ -158,11 +173,12 @@ public class Main {
|
||||
System.out.println("Dragon");
|
||||
}
|
||||
|
||||
System.out.println("0.EXIT (CLOSE GAME)");
|
||||
|
||||
|
||||
|
||||
|
||||
int n = (int) ((Math.random()) *3);
|
||||
int n = (int) ((Math.random()) *3); // a random number for random enemy
|
||||
Entity enemy = null;
|
||||
if(n == 0){
|
||||
enemy = new Goblin();
|
||||
@@ -182,6 +198,11 @@ public class Main {
|
||||
System.out.print("chose:");
|
||||
int choose =input.nextInt();
|
||||
switch (choose){
|
||||
case 0:
|
||||
{
|
||||
running = false;
|
||||
return null;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
location = new Location("Desert" , enemy);
|
||||
@@ -237,8 +258,12 @@ public class Main {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* main loop of game
|
||||
*/
|
||||
public static void gameplay(){
|
||||
boolean playerTurn = true;
|
||||
boolean playerTurn = true; // flag for check for turn
|
||||
|
||||
while (player.isalive() && enemy.isalive()){
|
||||
|
||||
@@ -252,7 +277,7 @@ public class Main {
|
||||
System.out.println("\n"+GREEN + "It's your Turn" +RESET);
|
||||
while (true){
|
||||
|
||||
if(playerAttakMenu()){
|
||||
if(playerAttakMenu()){ // maybe not enough mp and should choose again
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -260,15 +285,24 @@ public class Main {
|
||||
playerTurn = !playerTurn;
|
||||
|
||||
|
||||
if(enemy instanceof Skeleton && !enemy.isalive()){
|
||||
// for skeleton relive
|
||||
if(enemy instanceof Skeleton && !enemy.isalive() && !((Skeleton) enemy).getResurrect()){
|
||||
System.out.println("\n"+ RED);
|
||||
enemy.specialAbility(player);
|
||||
System.out.println(RESET);
|
||||
playerTurn = !playerTurn;
|
||||
}
|
||||
// for win senario
|
||||
if(!enemy.isalive()){
|
||||
System.out.println("you WIN");
|
||||
int n = (int) (Math.random()*2);
|
||||
if(enemy instanceof Dragon){
|
||||
System.out.println(YELLOW + "Congratulation \n + you are the kingdom of Gogorio" + RESET);
|
||||
((Player) player).setKing(); // king senario;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int n = (int) (Math.random()*2); // 50% present enemy have key
|
||||
if(n== 0){
|
||||
if(enemy instanceof Goblin){
|
||||
if(keys.get(0) == true){
|
||||
@@ -301,22 +335,23 @@ public class Main {
|
||||
}
|
||||
|
||||
|
||||
if(!enemy.getpossible()){
|
||||
if(!enemy.getpossible()){ // enemy is possible act?
|
||||
System.out.println(enemy.toString() + " Can't do any act");
|
||||
enemy.truepossible();
|
||||
playerTurn = !playerTurn;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(enemy.getpossible() && !playerTurn){
|
||||
|
||||
System.out.println("\n" + RED +"It's enemy Turn" + RESET);
|
||||
enemyAttakMenu();
|
||||
enemyAttakMenu(); // randoum act from enemy;
|
||||
playerTurn = !playerTurn;
|
||||
|
||||
|
||||
}
|
||||
|
||||
if(!player.isalive()){
|
||||
if(!player.isalive()){ // result
|
||||
System.out.println("you lose");
|
||||
return;
|
||||
}
|
||||
@@ -331,6 +366,10 @@ public class Main {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* selet a random act for each enemy
|
||||
*/
|
||||
public static void enemyAttakMenu(){
|
||||
if(enemy instanceof Goblin || enemy instanceof Vampire){
|
||||
int n = (int) (Math.random()*3);
|
||||
@@ -347,7 +386,7 @@ public class Main {
|
||||
|
||||
}
|
||||
|
||||
else if(enemy instanceof Skeleton){
|
||||
else if(enemy instanceof Skeleton){ // skeleton use special ability when he dead
|
||||
if(enemy.getHp() <= 0){
|
||||
enemy.heavyattack(player);
|
||||
}
|
||||
@@ -355,12 +394,27 @@ public class Main {
|
||||
enemy.lightattack(player);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
else if( enemy instanceof Dragon){
|
||||
int n = (int)(Math.random()*3);
|
||||
if(n==0){
|
||||
enemy.specialAbility(player);
|
||||
}
|
||||
else {
|
||||
enemy.lightattack(player);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* choose a act for player
|
||||
* @return was the act successful or no
|
||||
*/
|
||||
public static boolean playerAttakMenu() {
|
||||
|
||||
System.out.print("1.Light attak| ");
|
||||
|
||||
@@ -14,12 +14,14 @@ public class Dragon extends Enemy{
|
||||
|
||||
|
||||
public void specialAbility(Entity target){
|
||||
heavyattack(target);
|
||||
//sout : fire!
|
||||
target.getArmor().brokeArmor();
|
||||
System.out.println(toString()+"\uD83D\uDD25 FIRE!! special ability" );
|
||||
target.takeDamage(2 * weapon.getDamage());
|
||||
|
||||
|
||||
}
|
||||
|
||||
public String toString(){
|
||||
String str = "Dragon |" + "Hp:" + getHp();
|
||||
return str;
|
||||
return "\uD83D\uDC09 Dragon";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public abstract class Enemy implements Entity {
|
||||
|
||||
|
||||
public void heavyattack(Entity target){
|
||||
System.out.println(toString() + " do a heavy attaked with " + weapon.getDamage() + " damages");
|
||||
System.out.println(toString() + " do a heavy attaked with " + weapon.getDamage() * 2 + " damages");
|
||||
target.takeDamage(2 * weapon.getDamage());
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,10 @@ public class Skeleton extends Enemy {
|
||||
|
||||
}
|
||||
|
||||
public boolean getResurrect(){
|
||||
return resurrect;
|
||||
}
|
||||
|
||||
|
||||
public String toString(){
|
||||
return "☠\uFE0F Skeleton ";
|
||||
|
||||
@@ -72,7 +72,7 @@ public abstract class Player implements Entity {
|
||||
armor.use(this);
|
||||
}
|
||||
else {
|
||||
System.out.println("you take " + (damage - armor.getDefense()));
|
||||
System.out.println("you take " + (damage - armor.getDefense()) + " Damage");
|
||||
hp -=damage;
|
||||
}
|
||||
|
||||
@@ -115,6 +115,15 @@ public abstract class Player implements Entity {
|
||||
System.out.println( "Repair: we full your Hp , repair your armor and give you some Mp");
|
||||
}
|
||||
|
||||
public void setKing(){
|
||||
this.maxHP =1000;
|
||||
this.hp=maxHP;
|
||||
this.maxMP = 1000;
|
||||
this.mp = maxMP;
|
||||
armor.repair();
|
||||
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@@ -25,6 +25,9 @@ public abstract class Armor implements Item {
|
||||
|
||||
|
||||
public boolean checkBreak() {
|
||||
if(isBroke){
|
||||
return true;
|
||||
}
|
||||
if (durability <= 0) {
|
||||
isBroke = true;
|
||||
defense = 0;
|
||||
@@ -64,4 +67,8 @@ public abstract class Armor implements Item {
|
||||
public boolean isBroke() {
|
||||
return isBroke;
|
||||
}
|
||||
|
||||
public void brokeArmor(){
|
||||
isBroke =true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import org.project.entity.Entity;
|
||||
public class DragonWepon extends Weapon{
|
||||
|
||||
public DragonWepon(){
|
||||
super(40 , 10);
|
||||
super(25 , 10);
|
||||
}
|
||||
|
||||
public void use(Entity target){
|
||||
|
||||
@@ -2,6 +2,6 @@ package org.project.item.weapons;
|
||||
|
||||
public class knife extends Weapon{
|
||||
public knife(){
|
||||
super(15 , 8);
|
||||
super(20 , 8);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,6 @@ package org.project.item.weapons;
|
||||
public class wood extends Weapon{
|
||||
|
||||
public wood(){
|
||||
super(10, 8);
|
||||
super(15, 8);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user