import java.awt.*;
import java.util.*;
import java.awt.event.*;
public class Sna
{
static LinkedList<String> list,list1;
static int flog=1,x=100,y=100;
static Random ra=new Random();
public static void main(String args[])
{
int count=1;
list=new LinkedList<String>();
list.add("150");
list.add("170");
list.add("190");
list.add("210");
list.add("230");
list1=new LinkedList<String>();
list1.add("230");
list1.add("230");
list1.add("230");
list1.add("230");
list1.add("230");
PaintFrame pf=new PaintFrame();
while(count==1)
{
if(flog==1)
{list.addFirst(String.valueOf(Integer.valueOf(list.peekFirst())-10) );
list1.addFirst(list1.peekFirst());}
if(flog==2)
{list.addFirst(String.valueOf(Integer.valueOf(list.peekFirst())+10) );list1.addFirst(list1.peekFirst());}
if(flog==3)
{list1.addFirst(String.valueOf(Integer.valueOf(list1.peekFirst())-10));list.addFirst(list.peekFirst());}
if(flog==4)
{list1.addFirst(String.valueOf(Integer.valueOf(list1.peekFirst())+10));list.addFirst(list.peekFirst());}
if(Integer.valueOf(list.peekFirst())==x&&Integer.valueOf(list1.peekFirst())==y)
{
x=((ra.nextInt(400)%30)+3)*10;
y=((ra.nextInt(400)%30)+3)*10;
}
else
{
list.removeLast();
list1.removeLast();
}
try{
pf.repaint();
Thread.sleep(200);
}catch(InterruptedException ie){
System.err.println("Thread error: " + ie);
}
}
}
static class KeyLis extends KeyAdapter
{
public void keyPressed(KeyEvent e)
{
int keycode=e.getKeyCode();
if(keycode==KeyEvent.VK_LEFT)
{
flog =1;
}
if(keycode==KeyEvent.VK_RIGHT)
{
flog=2;
}
if(keycode==KeyEvent.VK_UP)
{
flog=3;
}
if(keycode==KeyEvent.VK_DOWN)
{
flog=4;
}
}
}
static class PaintFrame extends Frame
{
PaintFrame() {
addKeyListener(new KeyLis());
setBounds(0,0,400,400);
setBackground(Color.orange);
setVisible(true);
}
public void paint(Graphics g)
{
g.setColor(Color.red);
for(int i=0;i<list.size();i++)
{
g.drawRect(Integer.valueOf(list.get(i)),Integer.valueOf(list1.get(i)),10,10);
g.drawRect(x,y,10,10);
}
}
}
}