import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.lang.*;
import java.util.Timer;
import java.util.TimerTask;
import java.awt.event.*; //action listener.
import java.util.*;
class DdrJ implements ActionListener, KeyListener
{
int depth=1;
ArrayList Alist = new ArrayList()
ImageIcon bgIMAGE = new ImageIcon (getClass().getResource("test2G.gif"));
ImageIcon p4IMAGE = new ImageIcon(getClass().getResource("p4.gif"));
ImageIcon p4ModIMAGE = new ImageIcon(getClass().getResource("p4Mod.gif"));
JLabel bgL ;
int x;
int y;
APane pane;
JButton btn2 = new JButton("coordinates");
public static void main(String[] args)
{
new DdrJ();
}
DdrJ()
{
x=10;
y=10;
JFrame gameFrame = new JFrame("DdrJ");
pane = new APane(x, y, new JLabel( new ImageIcon(getClass().getResource("p4.gif"))) );
gameFrame.setContentPane(pane);
pane.setLayout(null);
Insets insets = pane.getInsets();
//backgroudn pic and size
JLabel bgL = new JLabel(bgIMAGE,new Integer(0));
Dimension bgSIZE = bgL.getPreferredSize();
//region pic and size
JLabel regL = new JLabel(p4ModIMAGE,new Integer(10));
Dimension regSIZE = regL.getPreferredSize();
//set where it is
regL.setBounds(300,300+insets.top,regSIZE.width,regSIZE.height);
bgL.setBounds(0+insets.left,0+insets.top,bgSIZE.width,bgSIZE.height);
pane.add(bgL, new Integer(0));
pane.add(regL,new Integer(1));
// label = new JLabel(image);
// label2 = new JLabel( new ImageIcon(getClass().getResource("test1G.gif") ) );
gameFrame.addKeyListener(this);
pane.addKeyListener(this);
gameFrame.setSize(500,500);
gameFrame.setVisible(true);
gameFrame.setSize(500,500);
gameFrame.setVisible(true);
for(int i=0;i<100;i++)
{
try
{
Thread.sleep(500);
make();
}
catch(Exception w)
{
}
}
pane.requestFocus();
}
public void keyTyped ( KeyEvent p )
{
}
public void keyPressed ( KeyEvent p)
{
if(p.getKeyCode()==KeyEvent.VK_UP)
{
try
{
}
catch(Exception m)
{
}
for(int i=0;i<Alist.size();i++)
{
if( ((UP)(Alist.get(i) ) ).getY()>=250 )
{
System.out.println("________________________");
if( ((UP)(Alist.get(i))).getY() >=260 && ((UP)(Alist.get(i))).getY()<=290 )
{
System.out.println("Too early");
( (UP)Alist.get(i) ).quick();
( (UP)Alist.get(i) ).stop();
Alist.remove(i);
}
else if( ((UP)(Alist.get(i))).getY() >=290 && ((UP)(Alist.get(i))).getY()<=300 )
{
System.out.println("Hit right on");
( (UP)Alist.get(i) ).quick();
( (UP)Alist.get(i) ).stop();
Alist.remove(i);
}
else if( ((UP)(Alist.get(i))).getY() >=300 && ((UP)(Alist.get(i))).getY()<=320 )
{
System.out.println("A little too late");
( (UP)Alist.get(i) ).quick();
( (UP)Alist.get(i) ).stop();
Alist.remove(i);
}
}
if( ((UP)(Alist.get(i) ) ).getY()>=500 )
{
( (UP)Alist.get(i) ).quick();
( (UP)Alist.get(i) ).stop();
Alist.remove(i);
}
System.out.println(Alist.size());
}
}
}
public void keyReleased ( KeyEvent p )
{
}
public void make()
{
try
{
pane.labChng( new JLabel(new ImageIcon(getClass().getResource("p4.gif"))));
pane.add(pane.label,new Integer(depth));
UP arrow1 = new UP(pane);
Alist.add(arrow1);
( (UP)Alist.get(Alist.size()-1) ).start();
depth++;
}
catch(Exception ex)
{
}
pane.requestFocus();
}
public void actionPerformed(ActionEvent e)
{
pane.requestFocus();
}
}
class APane extends JLayeredPane
{
int x=500;
int y=250;
JLabel label;
APane(int x, int y, JLabel label)
{
this.x=x;
this.y=y;
this.label=label;
}
public void labChng(JLabel lab)
{
this.label=lab;
}
}
class UP extends Thread
{
APane pane;
UP(APane pane)
{
pane = new APane(pane.x,pane.y,pane.label);
this.pane=pane;
}
public void run()
{
try
{
while(pane.y<400)
{
move(10);
}
}
catch(Exception ex)
{
}
quick();
stop();
System.gc();
}
void move(int delay) throws InterruptedException
{
Thread.currentThread().sleep(delay);
Insets insets=pane.getInsets();
Dimension size = pane.label.getPreferredSize();
pane.y++;
pane.label.setBounds(300,pane.y+insets.top,size.width,size.height);
}
public void quick()
{
pane.label.setIcon(null);
}
public int getY()
{
return pane.y;
}
}