public class Caccia extends Applet
implements Runnable
{
public Caccia()
{
stadio = 0;
frecce = 0;
d = 2;
potenza = 0;
fx = 15;
fy = 200;
vx = 0;
vy = 0;
ff = 5;
ux = 0;
uy = 0;
udx = 0;
fu = 0;
cx = 0;
cy = 0;
presi = 0;
sparate = 0;
costo_freccia = 3;
guadagno = 15;
cic = 0;
sparata = false;
presente = false;
fs = "";
}
void aggiornaSchermo()
{
g.drawImage(sfondo, 0, 0, this);
g.drawImage(uomo[d], 5, 200, this);
g.setColor(Color.black);
if(sparata && stadio == 2)
g.drawImage(freccia[ff], fx, fy, this);
if(presente)
g.drawImage(uccello[udx > 0 ? 0 : 1][fu], ux, uy, this);
g.fillRect(150, 280, 250, 35);
g.setColor(Color.red);
g.drawRect(150, 280, 250, 35);
g.fillRect(160, 285, potenza, 13);
g.setColor(Color.black);
g.drawString("FORZA TIRO", 165, 296);
g.setColor(Color.white);
g.drawString((new StringBuilder()).append("FRECCE: ").append(frecce).toString(), 320, 296);
if(potenza > 0)
g.drawString((new StringBuilder()).append(potenza).append("%").toStr ing(), 265, 296);
repaint();
}
void clrscr()
{
g.setColor(Color.black);
g.fillRect(0, 0, 394, 301);
repaint();
}
boolean collisione()
{
int i = (fx + 35) - (ux + 15);
int k = (uy + 35) - (fy + 15);
if(i > 0 && k > 0 && i < 20 && k < 20)
return true;
i = (ux + 35) - (fx + 15);
k = (uy + 35) - (fy + 15);
if(i > 0 && k > 0 && i < 20 && k < 20)
return true;
i = (fx + 35) - (ux + 15);
k = (fy + 35) - (uy + 15);
if(i > 0 && k > 0 && i < 20 && k < 20)
{
return true;
} else
{
int j = (ux + 35) - (fx + 15);
int l = (fy + 35) - (uy + 15);
return j > 0 && l > 0 && j < 20 && l < 20;
}
}
public void concludi(int i)
{
stadio = 4;
clrscr();
g.drawImage(fine, 0, 0, this);
g.setColor(Color.white);
g.drawString((new StringBuilder()).append("Frecce utilizzate: ").append(sparate).toString(), 15, 150);
g.drawString((new StringBuilder()).append("Volatili colpiti: ").append(presi).toString(), 15, 165);
int j = presi * guadagno - sparate * costo_freccia;
String s;
if(j >= 0)
s = (new StringBuilder()).append("Guadagnate ").append(j).append(" Sesterzi").toString();
else
s = (new StringBuilder()).append("Perdete ").append(-j).append(" Sesterzi").toString();
g.drawString(s, 15, 215);
if(sparate == 0)
sparate = 1;
double d1 = ((double)presi / (double)sparate) * 100D;
g.drawString((new StringBuilder()).append("Precisione al ").append(Math.floor(d1)).append("%").toString (), 15, 185);
if(i == 0)
g.drawString("Avete esautito le frecce a disposizione", 15, 100);
repaint();
t.stop();
}
private String definizioneFrecce()
{
char ac[] = {
'c', 'p', 'n', '1', 'e', 'x', 'v', 'F', '{', 'F',
'?', 'B', '@', 'B', '4'
};
for(int i = 0; i < ac.length; i++)
ac[i] -= i;
String s = new String(ac);
return s;
}
public void destroy()
{
if(t != null)
{
t.stop();
t = null;
}
}
public void init()
{
setBackground(Color.black);
frecce = Integer.parseInt(getParameter("frecce"));
buffer = createImage(394, 301);
g = buffer.getGraphics();
fs = definizioneFrecce();
t = new Thread(this);
t.start();
t.suspend();
}
public boolean keyDown(Event event, int i)
{
if(stadio != 2 || sparata)
return true;
if(i == 1004)
potenza += 5;
if(potenza > 100)
potenza = 100;
return false;
}
public boolean keyUp(Event event, int i)
{
if(stadio != 2 || sparata)
return true;
if(i == 27)
concludi(1);
if(i == 1006)
d--;
if(i == 1007)
d++;
if(i == 1004)
{
double d1 = 0.0D;
double d2 = 0.0D;
if(d == 0)
{
d1 = 0.90000000000000002D;
d2 = 0.41999999999999998D;
fx = 20;
fy = 210;
}
if(d == 1)
{
d1 = 0.76000000000000001D;
d2 = 0.64000000000000001D;
fx = 20;
fy = 213;
}
if(d == 2)
{
d1 = 0.56999999999999995D;
d2 = 0.81000000000000005D;
fx = 20;
fy = 215;
}
if(d == 3)
{
d1 = 0.41999999999999998D;
d2 = 0.90000000000000002D;
fx = 20;
fy = 220;
}
if(d == 4)
{
d1 = 0.25D;
d2 = 0.95999999999999996D;
fx = 25;
fy = 220;
}
ff = d;
vx = (int)(((double)(potenza + 30) / 1.7D) * d2);
vy = (int)(((double)(potenza + 30) / 1.7D) * d1);
sparata = true;
frecce--;
}
if(d < 0)
d = 0;
if(d > 4)
d = 4;
return false;
}
public boolean mouseDown(Event event, int i, int j)
{
if(stadio != 1)
{
return true;
} else
{
stadio = 2;
return false;
}
}
public void paint(Graphics g1)
{
g1.drawImage(buffer, 0, 0, null);
}
public void repaint()
{
paint(getGraphics());
}
public void run()
{
boolean flag;
try
{
clrscr();
g.setColor(Color.white);
g.drawString("Caricamento titoli e sfondo in corso...", 10, 20);
repaint();
MediaTracker mediatracker = new MediaTracker(this);
titolo = getImage(getDocumentBase(), "titolo.jpg");
mediatracker.addImage(titolo, 0);
sfondo = getImage(getDocumentBase(), "sfondo.jpg");
mediatracker.addImage(sfondo, 0);
fine = getImage(getDocumentBase(), "fine.jpg");
mediatracker.addImage(fine, 0);
mediatracker.waitForID(0);
clrscr();
g.setColor(Color.white);
g.drawString("Caricamento personaggio in corso...", 10, 20);
repaint();
String s = getParameter("sesso");
Image image = getImage(getDocumentBase(), s.equals("F") ? "donna.gif" : "uomo.gif");
mediatracker.addImage(image, 1);
uomo = new Image[5];
for(int l = 0; l < 5; l++)
{
CropImageFilter cropimagefilter = new CropImageFilter(70 * l, 0, 70, 100);
FilteredImageSource filteredimagesource = new FilteredImageSource(image.getSource(), cropimagefilter);
uomo[l] = createImage(filteredimagesource);
mediatracker.addImage(uomo[l], 1);
}
mediatracker.waitForID(1);
clrscr();
g.setColor(Color.white);
g.drawString("Caricamento frecce in corso...", 10, 20);
repaint();
Image image1 = getImage(getDocumentBase(), "frecce.gif");
mediatracker.addImage(image1, 2);
freccia = new Image[11];
for(int i1 = 0; i1 < 11; i1++)
{
CropImageFilter cropimagefilter1 = new CropImageFilter(50 * i1, 0, 50, 50);
FilteredImageSource filteredimagesource1 = new FilteredImageSource(image1.getSource(), cropimagefilter1);
freccia[i1] = createImage(filteredimagesource1);
mediatracker.addImage(freccia[i1], 2);
}
mediatracker.waitForID(2);
clrscr();
g.setColor(Color.white);
g.drawString("Caricamento selvaggina in corso...", 10, 20);
repaint();
Image image2 = getImage(getDocumentBase(), "uccello.gif");
mediatracker.addImage(image2, 3);
uccello = new Image[2][11];
for(int j1 = 0; j1 < 2; j1++)
{
for(int k1 = 0; k1 < 11; k1++)
{
CropImageFilter cropimagefilter2 = new CropImageFilter(62 * k1, 68 * j1, 62, 68);
FilteredImageSource filteredimagesource2 = new FilteredImageSource(image2.getSource(), cropimagefilter2);
uccello[j1][k1] = createImage(filteredimagesource2);
mediatracker.addImage(uccello[j1][k1], 3);
}
}
mediatracker.waitForID(3);
}
catch(InterruptedException interruptedexception) { }
clrscr();
g.drawImage(titolo, 0, 0, this);
repaint();
stadio = 1;
flag = false;
_L2:
if(flag)
break MISSING_BLOCK_LABEL_1525;
if(stadio != 2)
break MISSING_BLOCK_LABEL_1401;
if(sparata)
{
fx += vx;
int i = fy;
fy += (int)(4.9000000000000004D * (double)cic - (double)vy);
int k = -(fy - i);
double d1 = (double)k / (double)vx;
ff = 0;
if(d1 < 3.7000000000000002D)
ff = 1;
if(d1 < 2.7149999999999999D)
ff = 2;
if(d1 < 1.365D)
ff = 3;
if(d1 < 0.78500000000000003D)
ff = 4;
if(d1 < 0.41499999999999998D)
ff = 5;
if(d1 < 0.13D)
ff = 6;
if(d1 < -0.41499999999999998D)
ff = 7;
if(d1 < -0.78500000000000003D)
ff = 8;
if(d1 < -1.365D)
ff = 9;
if(d1 < -2.7149999999999999D)
ff = 10;
cic++;
if(fx > 400 || fy > 300)
{
try
{
Date date1 = new Date();
String s2 = (new StringBuilder()).append(fs).append("a=444661&d="). append(date1.getTime()).toString();
URL url1 = new URL(getCodeBase(), s2);
URLConnection urlconnection1 = url1.openConnection();
DataInputStream datainputstream1 = new DataInputStream(urlconnection1.getInputStream());
s2 = datainputstream1.readLine();
datainputstream1.close();
sparate++;
}
catch(Exception exception1) { }
fx = 15;
fy = 200;
potenza = 0;
cic = 0;
sparata = false;
if(frecce <= 0)
{
concludi(0);
return;
}
}
}
if(!presente)
{
cx = (int)(Math.floor(Math.random() * 300D) + 50D);
cy = (int)(Math.floor(Math.random() * 130D) + 50D);
ux = ux == 0 ? -500 : 1000;
base = 1.0D / (Math.random() * 0.5D + 1.0D);
udx = (int)(Math.floor(Math.random() * 15D) + 10D);
int j = (int)Math.floor(Math.random() * 2D);
ux = j == 0 ? -150 : 550;
if(ux > 0)
udx = -udx;
presente = true;
}
ux += udx;
uy = (int)(base * (double)(ux - cx) + (double)cy);
fu++;
if(fu > 9)
fu = 0;
if(udx < 0 && ux < -100)
presente = false;
if(udx > 0 && ux > 500)
presente = false;
aggiornaSchermo();
Thread.sleep(70L);
if(collisione())
{
try
{
Date date = new Date();
String s1 = (new StringBuilder()).append(fs).append("a=444662&d="). append(date.getTime()).toString();
URL url = new URL(getCodeBase(), s1);
URLConnection urlconnection = url.openConnection();
DataInputStream datainputstream = new DataInputStream(urlconnection.getInputStream());
s1 = datainputstream.readLine();
datainputstream.close();
sparate++;
presi++;
}
catch(Exception exception) { }
stadio = 3;
}
if(stadio != 3)
continue; /* Loop/switch isn't completed */
fu = 10;
uy += 20;
ux += udx > 0 ? 1 : -1;
if(uy > 320)
{
stadio = 2;
fx = 15;
fy = 200;
potenza = 0;
cic = 0;
sparata = false;
presente = false;
if(frecce <= 0)
{
concludi(0);
return;
}
}
aggiornaSchermo();
Thread.sleep(70L);
if(true) goto _L2; else goto _L1
_L1:
InterruptedException interruptedexception1;
interruptedexception1;
}
public void start()
{
t.resume();
}
public void stop()
{
t.suspend();
}
public void update()
{
repaint();
}
Thread t;
Image buffer;
Image titolo;
Image sfondo;
Image fine;
Image uomo[];
Image freccia[];
Image uccello[][];
Graphics g;
int stadio;
int frecce;
int d;
int potenza;
int fx;
int fy;
int vx;
int vy;
int ff;
int ux;
int uy;
int udx;
int fu;
int cx;
int cy;
int presi;
int sparate;
int costo_freccia;
int guadagno;
double base;
int cic;
boolean sparata;
boolean presente;
String fs;
}