89 lines
2.4 KiB
Java
89 lines
2.4 KiB
Java
package com.bayviewglen.zork;
|
|
|
|
import java.lang.reflect.Constructor;
|
|
|
|
import com.bayviewglen.zork.Entities.Entity;
|
|
import com.bayviewglen.zork.Entities.Enemies.Enemy;
|
|
import com.bayviewglen.zork.Items.Item;
|
|
|
|
public class Combat {
|
|
private Entity player;
|
|
private Enemy enemy;
|
|
// if turn is 0 it is player's turn, if 1 it is enemy's turn
|
|
private int turn;
|
|
public Combat(Entity player, Enemy enemy) {
|
|
this.player = player;
|
|
this.enemy = enemy;
|
|
}
|
|
// return new health of enemy
|
|
public double playerAttack(String item) {
|
|
Class<?> clazz;
|
|
Item object;
|
|
try {
|
|
clazz = Class.forName("com.bayviewglen.zork.Items." + item.substring(0, 1).toUpperCase().trim() + item.substring(1).trim());
|
|
Constructor<?> ctor = clazz.getConstructor();
|
|
object = (Item) ctor.newInstance();
|
|
|
|
double rand = Math.random();
|
|
if(rand<0.1) {
|
|
System.out.println("You missed!");
|
|
|
|
|
|
}else if(rand<0.15) {
|
|
enemy.setHealth(enemy.getHealth()-object.getDamage()*1.5);
|
|
if(enemy.getHealth() < 0)
|
|
enemy.setHealth(0);
|
|
System.out.println("You hit " + enemy.getName() + " with a critical hit, doing " + object.getDamage()*1.5 + " damage! His health is now " + enemy.getHealth() + "%");
|
|
}
|
|
else {
|
|
enemy.setHealth(enemy.getHealth()-object.getDamage());
|
|
if(enemy.getHealth() < 0)
|
|
enemy.setHealth(0);
|
|
System.out.println("You did " + object.getDamage() + " damage! " + enemy.getName() + " is now at " + enemy.getHealth() + "% health.");
|
|
}
|
|
|
|
}catch(Exception e) {
|
|
|
|
}
|
|
turn = 1;
|
|
return enemy.getHealth();
|
|
}
|
|
|
|
public double enemyAttack() {
|
|
double rand = Math.random();
|
|
if(rand<0.1) {
|
|
System.out.println(enemy.getName() + " missed!");
|
|
}else if(rand < 0.15) {
|
|
player.setHealth(player.getHealth()-enemy.getDamage()*1.5);
|
|
if(player.getHealth() < 0)
|
|
player.setHealth(0);
|
|
System.out.println(enemy.getName() + " hit you with a critical hit, doing " + enemy.getDamage()*1.5 + " damage! Your health is now " + player.getHealth() + "%");
|
|
}
|
|
else {
|
|
player.setHealth(player.getHealth()-enemy.getDamage());
|
|
if(player.getHealth() < 0)
|
|
player.setHealth(0);
|
|
System.out.println(enemy.getName() + " did " + enemy.getDamage() + " damage to you! Your health is now " + player.getHealth() + "%");
|
|
}
|
|
turn = 0;
|
|
return player.getHealth();
|
|
}
|
|
|
|
public int getTurn() {
|
|
return this.turn;
|
|
}
|
|
|
|
public void setEnemyTurn() {
|
|
turn = 1;
|
|
}
|
|
|
|
public Enemy getEnemy() {
|
|
return enemy;
|
|
}
|
|
|
|
public Entity getPlayer() {
|
|
return player;
|
|
}
|
|
|
|
}
|