import java.awt.*;
import java.net.*;
import java.io.*;
import java.applet.*;
import java.awt.event.*;
import java.util.*;
class Item_Class{
public int Attack;
public int Defense;
public int Item_Type;//1: Armour 2:Weapon
public int Item_UID;//Unique ID
public int Value;
public String Name;
public void copy(Item_Class CopyFrom){
this.Attack = CopyFrom.Attack;
this.Defense = CopyFrom.Defense;
this.Item_Type = CopyFrom.Item_Type;
this.Item_UID = CopyFrom.Item_UID;
this.Value = CopyFrom.Value;
this.Name = CopyFrom.Name;
}
}
class GuyClass extends Applet{
private int Health;
public int Damage;
public int Foes;
public int X;
public int Y;
public int Gold;
public int Exp;
public int UID;
Item_Class Item[] = new Item_Class[2];//0: Weapon 1:Armor
public String Debug;
public String PicName;
public String Name;
Image CharImage;
public boolean Collision(int X2,int Y2,int Width,int Height){
return !(X2 >= X + CharImage.getWidth (this) || X2+Width <= X || Y2 >= Y+CharImage.getHeight (this) || Y2+Height <= Y);
}
public void Hit(int Damage_Amount){
if (Damage_Amount > Item[1].Defense)
Health = Health - Damage_Amount + Item[1].Defense;
}
public void Set_Health(int New_Health){
Health = New_Health;
}
public int Get_Health(){
return(Health);
}
public void copy(GuyClass CopyFrom){
Health = CopyFrom.Health;
Damage = CopyFrom.Damage;
Foes = CopyFrom.Foes;
X = CopyFrom.X;
Y = CopyFrom.Y;
Gold = CopyFrom.Gold;
Exp = CopyFrom.Exp;
UID = CopyFrom.UID;
Item[0].copy(CopyFrom.Item[0]);
Item[1].copy(CopyFrom.Item[1]);
Debug = CopyFrom.Debug;
PicName = CopyFrom.PicName;
Name = CopyFrom.Name;
CharImage = CopyFrom.CharImage;
}
}
public class Game5 extends Applet implements MouseListener,Runnable{
Image CharImage;
Image VillImage;
boolean debuggin = false;
String Version = "Version 1.23";
Thread AIThread;
boolean airunning = true;
GuyClass Guy[] = new GuyClass[31];
int i;
int Mouse_X;
int Mouse_Y;
InputStream inStream; // Input stream for reading instructions and high scores
int places[]; // Storage area for high score places
int scores[]; // Storage area for high score scores
String names[]; // Storage area for high score names
// Item_Class Item_db[] = new Item_Class[30];
GuyClass Monster_db[] = new GuyClass[30];
LinkedList<Item_Class> Item_db_l = new LinkedList<Item_Class>();
public void init() {
// for(i=0;i<30;i++){
// Item_db[i] = new Item_Class();
//
// }
for(i=0;i<30;i++){
Monster_db[i] = new GuyClass();
Monster_db[i].Item[0] = new Item_Class();//Create first item a Weapon
Monster_db[i].Item[1] = new Item_Class();//Create first item a Weapon
}
WeaponRead();
MonsterRead();
Guy[0] = new GuyClass();//need to add items to each guy
Guy[0].PicName = "images/Character.gif";
Guy[0].CharImage = getImage(getCodeBase(), Guy[0].PicName);
Guy[0].Set_Health(100);
Guy[0].Damage = 5;
Guy[0].X = 10;
Guy[0].Y = 100;
Guy[0].Foes = 0;
Guy[0].Gold = 0;
Guy[0].Exp = 0;
Guy[0].Item[0] = new Item_Class();//Create first item a Weapon
Guy[0].Item[0].copy(Item_db_l.get(2));
Guy[0].Item[1] = new Item_Class();//Create second item armor
Guy[0].Item[1].copy(Item_db_l.get(2));
for(i=1;i<=30;i++){
Guy[i] = new GuyClass();
Guy[i].Item[0] = new Item_Class();//Create first item a Weapon
Guy[i].Item[1] = new Item_Class();//Create second item armor
Guy[i].Set_Health(0);
}
BadGuyRead();
for(i=0;i<=30;i++)if (Guy[i].PicName != "")
{
Guy[i].CharImage = getImage(getCodeBase(), Guy[i].PicName);
}
addMouseListener(this);
AIThread= new Thread(this); // Create Thread
AIThread.start(); //Run Thread
}
public void paint(Graphics g) {
for (int i=0; i<=30;i++){
if (Guy[i].Get_Health() > 0)
g.drawImage(Guy[i].CharImage, Guy[i].X,Guy[i].Y, this);
}
g.drawString(Version+" MX = "+Mouse_X+" MY = "+Mouse_Y,10,10);
for (int i=0; i<=5;i++)
g.drawString("Health "+Guy[i].Get_Health()+" Damage "+Guy[i].Item[0].Attack+" Weapon "+Guy[i].Item[0].Name+" Armor
"+Guy[i].Item[1].Defense+" "+Guy[i].PicName+" "+Guy[i].Debug,10,280+i*10);
}
public void destroy() {
removeMouseListener(this);
}
public void mouseReleased(MouseEvent e) {
int x = e.getX();
int y = e.getY();
Mouse_X = x;
Mouse_Y = y;
for (int i=1; i<=30;i++)
if ((Guy[0].Get_Health() > 0 ) && (Guy[i].Get_Health() > 0)&&(Guy[i].Collision(x,y,1,1) == true)){
//Guy[i].Set_Health(0);
Guy[i].Hit(Guy[0].Damage);
if (Guy[i].Get_Health() < 1)
Guy[0].Foes++;
Guy[i].Debug = Guy[i].Debug + " attack "+i;
}
repaint();
}
public void mousePressed(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void WeaponRead()
{
Item_Class Item_Temp;
Item_Temp = new Item_Class();
String line;
String fileToRead = "Weapon.txt";
int num_w;
URL url = null;
try{
url = new URL(getCodeBase(), fileToRead);
}
catch(MalformedURLException e){}
try{
InputStream in = url.openStream();
BufferedReader bf = new BufferedReader(new InputStreamReader(in));
Item_Temp = new Item_Class();
num_w = Integer.valueOf(bf.readLine()).intValue();
for (int counter=0;counter < num_w;counter ++){
Item_Temp.Attack = Integer.valueOf(bf.readLine()).intValue();
Item_Temp.Defense = Integer.valueOf(bf.readLine()).intValue();
Item_Temp.Item_Type = Integer.valueOf(bf.readLine()).intValue();
Item_Temp.Item_UID = Integer.valueOf(bf.readLine()).intValue();
Item_Temp.Value = Integer.valueOf(bf.readLine()).intValue();
Item_Temp.Name = bf.readLine();
Item_db_l.add(Item_Temp);
}
}
catch(IOException e){
e.printStackTrace();
}
Item_Temp = new Item_Class();
Item_Temp.Name = "test name";
}
public void MonsterRead()
{
String line;
String fileToRead = "Monsters.txt";
int num_w;
URL url = null;
try{
url = new URL(getCodeBase(), fileToRead);
}
catch(MalformedURLException e){}
try{
InputStream in = url.openStream();
BufferedReader bf = new BufferedReader(new InputStreamReader(in));
num_w = Integer.valueOf(bf.readLine()).intValue();
for (int counter=0;counter < num_w;counter ++){
Monster_db[counter] = new GuyClass();
Monster_db[counter].Set_Health(Integer.valueOf(bf.readLine()).intValue());
Monster_db[counter].Damage = Integer.valueOf(bf.readLine()).intValue();
Monster_db[counter].Foes = Integer.valueOf(bf.readLine()).intValue();
Monster_db[counter].Gold = Integer.valueOf(bf.readLine()).intValue();
Monster_db[counter].Exp = Integer.valueOf(bf.readLine()).intValue();
Monster_db[counter].UID = Integer.valueOf(bf.readLine()).intValue();
Monster_db[counter].Item[0] = new Item_Class();
Monster_db[counter].Item[0].copy(Item_db_l.get(Integer.valueOf(bf.readLine()).intValue()));
Monster_db[counter].Item[1] = new Item_Class();
Monster_db[counter].Item[1].copy(Item_db_l.get(Integer.valueOf(bf.readLine()).intValue()));
Monster_db[counter].Debug = bf.readLine();
Monster_db[counter].PicName = bf.readLine();
Monster_db[counter].Name = bf.readLine();
}
}
catch(IOException e){
e.printStackTrace();
}
}
public void BadGuyRead()
{
String line;
String fileToRead = "BadGuy.txt";
int num_w;
URL url = null;
try{
url = new URL(getCodeBase(), fileToRead);
}
catch(MalformedURLException e){}
try{
InputStream in = url.openStream();
BufferedReader bf = new BufferedReader(new InputStreamReader(in));
num_w = Integer.valueOf(bf.readLine()).intValue();
for (int counter=1;counter <= num_w;counter ++){
Guy[counter] = new GuyClass();
Guy[counter].Item[0] = new Item_Class();//Create first item a Weapon
Guy[counter].Item[1] = new Item_Class();//Create first item a Weapon
Guy[counter].copy(Monster_db[Integer.valueOf(bf.readLine()).intValue()]);
Guy[counter].X = Integer.valueOf(bf.readLine()).intValue();
Guy[counter].Y = Integer.valueOf(bf.readLine()).intValue();
}
}
catch(IOException e){
e.printStackTrace();
}
}
public void run()
{
// loop until told to stop
while (airunning)
{
for (int i=1; i<=5;i++){
if ((Guy[i].Get_Health() > 0)&&(Guy[0].Get_Health() > 0))
Guy[0].Hit(Guy[i].Damage);
}
repaint();
try
{
// Wait 500milliseconds before continuing
AIThread.sleep(250);
}
catch (InterruptedException e)
{
System.out.println(e);
}
// he has wait and will now restart his actions.
}
}
}