import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class mobile extends Applet implements Runnable{
Thread th = null;
Image os;
Graphics og;
int px[] = new int[14];
int py[] = new int[14];
int wn[] = new int[3];
int wd[] = new int[9];
int cs[] = new int[9];
int mx,my,cx,cy,sw,cd,ms;
double s1,s2,sv1,sv2,ev1,ev2;
public void init(){
os = createImage(600,380);
og = os.getGraphics();
addMouseListener(
new MouseAdapter(){
public void mousePressed(MouseEvent e){
cx = e.getX() ; cy = e.getY() ;
if((Math.abs(cx-80)<40)&&(Math.abs(cy-35)<15)){
for(int r1 = 0;r1 < 9;r1 ++){
wd[r1] = 0;
}
s1 = 0 ; s2 = 0;
}
for(int nn = 0;nn < 3;nn ++){
for(int mm = 0;mm < 3;mm ++){
if((Math.abs(px[11+nn]+20+40*mm-cx)<20)&&(Math.abs(py[11+nn]+10-cy)<10)){
wd[mm+nn*3] ++;
if(wd[mm+nn*3] > 9)wd[mm+nn*3] = 9;
}
if((Math.abs(px[11+nn]+20+40*mm-cx)<20)&&(Math.abs(py[11+nn]+30-cy)<10)){
wd[mm+nn*3] --;
if(wd[mm+nn*3] < 0)wd[mm+nn*3] = 0;
}
}
}
for(int k1 = 0;k1 < 3;k1 ++)wn[k1] = 100 * wd[0+k1*3] + 10 * wd[1+k1*3] + wd[2+k1*3];
sv1 = s1 ; sv2 = s2 ;
if(wn[0] < 2*wn[1]){
ev2 = -0.1 ; ms = 1;
}else if(wn[0] == 2*wn[1]){
ev2 = 0 ; ms = 1;
}else{
ev2 = 0.1 ; ms = 1;
}
if(wn[0]+wn[1] < wn[2]){
ev1 = -0.1 ; ms = 1;
}else if(wn[0]+wn[1] == wn[2]){
ev1 = 0 ; ms = 1;
}else{
ev1 = 0.1 ; ms = 1;
}
repaint();
}
}
);
addMouseMotionListener(
new MouseMotionAdapter(){
public void mouseMoved(MouseEvent e){
mx = e.getX() ; my = e.getY() ;
if(Math.abs(px[11]+60-mx)<60){
if(Math.abs(py[11]+10-my)<10){
sw = 1;
}else if(Math.abs(py[11]+30-my)<10){
sw = 2;
}else{
sw = 0;
}
}else if(Math.abs(px[12]+60-mx)<60){
if(Math.abs(py[12]+10-my)<10){
sw = 1;
}else if(Math.abs(py[12]+30-my)<10){
sw = 2;
}else{
sw = 0;
}
}else if(Math.abs(px[13]+60-mx)<60){
if(Math.abs(py[13]+10-my)<10){
sw = 1;
}else if(Math.abs(py[13]+30-my)<10){
sw = 2;
}else{
sw = 0;
}
}else{
sw = 0;
}
repaint();
}
}
);
}
public void paint(Graphics g){
og.setColor(Color.white);
og.fillRect(0,0,600,380);
px[0] = 330 ; py[0] = 40 ;
px[1] = px[0] ; py[1] = py[0] + 40 ;
px[2] = px[1] - (int)(160*Math.cos(s1)) ; py[2] = py[1] + (int)(160*Math.sin(s1)) ;
px[3] = px[1] + (int)(160*Math.cos(s1)) ; py[3] = py[1] - (int)(160*Math.sin(s1)) ;
px[4] = px[2] ; py[4] = py[2] + 40 ;
px[5] = px[4] - (int)(80*Math.cos(s2)) ; py[5] = py[4] + (int)(80*Math.sin(s2)) ;
px[6] = px[4] + (int)(160*Math.cos(s2)) ; py[6] = py[4] - (int)(160*Math.sin(s2)) ;
px[7] = px[4] + (int)(80*Math.cos(s2)) ; py[7] = py[4] - (int)(80*Math.sin(s2)) ;
px[8] = px[5] ; py[8] = py[5] + 40 ;
px[9] = px[6] ; py[9] = py[6] + 40 ;
px[10] = px[3] ; py[10] = py[3] + 80 ;
px[11] = px[8] - 60 ; py[11] = py[8] ;
px[12] = px[9] - 60 ; py[12] = py[9] ;
px[13] = px[10] - 60 ; py[13] = py[10] ;
og.setColor(new Color(184,134,11));
og.drawLine(px[0],py[0],px[1],py[1]);
og.drawLine(px[0]+1,py[0],px[1]+1,py[1]);
og.drawLine(px[2],py[2],px[3],py[3]);
og.drawLine(px[2],py[2]-1,px[3],py[3]-1);
og.drawLine(px[2],py[2],px[4],py[4]);
og.drawLine(px[2]+1,py[2],px[4]+1,py[4]);
og.drawLine(px[5],py[5],px[6],py[6]);
og.drawLine(px[5],py[5]+1,px[6],py[6]+1);
og.drawLine(px[5],py[5],px[8],py[8]);
og.drawLine(px[5]+1,py[5],px[8]+1,py[8]);
og.drawLine(px[6],py[6],px[9],py[9]);
og.drawLine(px[6]+1,py[6],px[9]+1,py[9]);
og.drawLine(px[3],py[3],px[10],py[10]);
og.drawLine(px[3]+1,py[3],px[10]+1,py[10]);
og.drawRoundRect(px[11],py[11],120,40,5,5);
og.drawRoundRect(px[12],py[12],120,40,5,5);
og.drawRoundRect(px[13],py[13],120,40,5,5);
og.setColor(new Color(0,0,128));
og.drawRoundRect(px[11]-2,py[11]-2,124,44,7,7);
og.drawRoundRect(px[12]-2,py[12]-2,124,44,7,7);
og.drawRoundRect(px[13]-2,py[13]-2,124,44,7,7);
for(int d1 = 0;d1 < 11;d1 ++)og.fillOval(px[d1]-3,py[d1]-3,7,7);
for(int d2 = 0;d2 < 9;d2 ++)cs[d2] = 0;
for(int d3 = 0;d3 < 9;d3 ++){
if(wd[d3] != 0)cs[wd[d3]-1] ++;
}
og.setColor(new Color(135,206,235));
og.fill3DRect(40,20,90,30,true);
og.setColor(Color.black);
og.setFont(new Font("",Font.BOLD,30));
og.drawString("reset",46,45);
og.setFont(new Font("",Font.BOLD,42));
for(int d4 = 0;d4 < 9;d4 ++){
if(wd[d4] == 0){
og.setColor(Color.lightGray);
}else if(cs[wd[d4]-1] == 1){
og.setColor(Color.blue);
}else {
og.setColor(Color.red);
}
og.drawString(""+wd[d4],px[d4/3+11]+(d4%3)*40+10,py[d4/3+11]+38);
}
og.setFont(new Font("",Font.BOLD,10));
if(sw == 1){
og.setColor(new Color(0,0,139));
og.fillArc(mx-25,my-46,40,40,255,30);
og.setColor(Color.black);
og.drawString("up",mx-10,my);
}else if(sw == 2){
og.setColor(new Color(0,0,139));
og.fillArc(mx-25,my,40,40,75,30);
og.setColor(Color.black);
og.drawString("down",mx-17,my);
}
cd = 1;
for(int cc = 0;cc < 9;cc ++)cd = cd * cs[cc];
if((s1 == 0)&&(s2 == 0)&&(cd == 1)){
og.setColor(Color.black);
og.setFont(new Font("",Font.BOLD,80));
og.drawString("clear !!",205,144);
og.setColor(Color.red);
og.setFont(new Font("",Font.BOLD,80));
og.drawString("clear !!",200,140);
}
g.drawImage(os,0,0,this);
}
public void start(){
if(th == null){
th = new Thread(this);
th.start();
}
}
public void stop(){
th = null;
}
public void run(){
while(th != null){
try{
if(ms == 1){
if(sv1 < ev1){
s1 = s1 + 0.01;
if(s1 > ev1){
s1 = ev1;
}
}else if(sv1 > ev1){
s1 = s1 - 0.01;
if(s1 < ev1){
s1 = ev1;
}
}
if(sv2 < ev2){
s2 = s2 + 0.01;
if(s2 > ev2){
s2 = ev2;
}
}else if(sv2 > ev2){
s2 = s2 - 0.01;
if(s2 < ev2){
s2 = ev2;
}
}
if((s1 == ev1)&&(s2 == ev2))ms = 0;
}
Thread.sleep(30);
}
catch (InterruptedException e){
}
repaint();
}
}
public void update( Graphics g ){
paint( g ) ;
}
}
