package rakuseven.G1;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.SurfaceHolder.Callback;
public class RandomRun extends SurfaceView implements Callback {
 Context mCtx;
 class ImgThread extends Thread{
  
  
  private Bitmap mImgBack;
  private int cnt = 0;
  private SurfaceHolder mSurfaceHolder;
  int xpos = 10;
  int ypos = 150;
  int BGmove = 0;
  int CENTER = 4;
  Horses horses;
  public ImgThread(SurfaceHolder surfaceHolder, Context context){
   mSurfaceHolder = surfaceHolder;
   Resources res = context.getResources();
   mImgBack = BitmapFactory.decodeResource(res, R.drawable.bglong);
   horses = new Horses(context);
   
  }
  public void run()
  {   
   for (int k =0; k <5 ; k++)
   {
   horses.Horse[k].start();
   }
   while(true){
    boolean changed = false;
    
    
     for (int k =0; k <5 ; k++)
     {
     if(horses.Horse[k].preStep != horses.Horse[k].LOCATION){
      changed = true;
     }
    
    }
    Canvas canvas = null;
    if (changed) {
     try {
      canvas = mSurfaceHolder.lockCanvas(null);
      synchronized (mSurfaceHolder) {
       canvas.drawBitmap(mImgBack, BGmove, 0, null);
       cnt++;
       
       for (int k =0; k <5 ; k++)//k는 말순번애기하는거
       {
         if(horses.Horse[CENTER].LOCATION < 200)
         {
          xpos = horses.Horse[k].LOCATION;
         }
         else 
         if(horses.Horse[CENTER].LOCATION >= 200 && horses.Horse[CENTER].LOCATION <= 1100)
         {
          xpos = 200 - (horses.Horse[CENTER].LOCATION -horses.Horse[k].LOCATION);
          BGmove = 200 - horses.Horse[CENTER].LOCATION;
         }
         else
         if(horses.Horse[CENTER].LOCATION > 1100)
         {
          xpos = horses.Horse[k].LOCATION - 900;
         }
         int temp =horses.Horse[k].FRAME % 10;
                  
          horses.Horse[k].mHImage[k][temp].setBounds(xpos, ypos + (k * 40),xpos + 100, ypos + (k * 40) + 100);
          horses.Horse[k].mHImage[k][temp].draw(canvas);
          
       }
       
       Paint paint = new Paint();
       paint.setAntiAlias(true);
       paint.setTextSize(18);
       if(horses.NUMBER > 5){
        
        paint.setColor(0xa0ffffff);
        canvas.drawRect(100, 85,400,220,paint);
        canvas.drawText("- 순위 -", 200, 100, paint);
        for(int i = 1; i <= 5; i++){
         for(int j = 0; j < 5; j++){
          if(i == horses.Horse[j].RANK){
           canvas.drawText(i+"등: "+horses.Horse[j].NAME, 170, 100+(i*22), paint);
           canvas.drawText(100-(i*10)+"점", 300, 100+(i*22), paint);
          }
         }
        
        }
        
        break;
       }
       sleep(1);
      }
     } catch (InterruptedException e) {
      e.printStackTrace();
     } finally {
      if (canvas != null) {
       mSurfaceHolder.unlockCanvasAndPost(canvas);
      }
     }
    }
    changed = false;
   }
  }
 }
 private ImgThread thread;
 public RandomRun(Context context, AttributeSet attrs) {
  super(context, attrs);
  // TODO Auto-generated constructor stub
  mCtx = context;
  SurfaceHolder holder = getHolder();
  holder.addCallback(this);
  thread = new ImgThread(holder, context);
  setFocusable(true);
 }
 
 @Override
 public void surfaceChanged(SurfaceHolder holder, int format, int width,
   int height) {
  // TODO Auto-generated method stub
 }
 @Override
 public void surfaceCreated(SurfaceHolder holder) {
  // TODO Auto-generated method stub
  thread.start();
 }
 @Override
 public void surfaceDestroyed(SurfaceHolder holder) {
  // TODO Auto-generated method stub
  boolean retry = true;
  while(retry){
   try{
    thread.join();
    retry = false;
   }catch(InterruptedException e){
   }
  }
 }
 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
  // TODO Auto-generated method stub
  return super.onKeyDown(keyCode, event);
 }
 @Override
 public boolean onTouchEvent(MotionEvent event) {
  // TODO Auto-generated method stub
  //thread.setX((int)event.getX());
  event.getAction();
  return true;
 }
}

경마게임입니다.. 말이 랜덤하게 들어와서 순위가 정해지는 게임인데
http://rakuseven.blog.me/30090510991 사이트 소스를 시험해 보는 중인데
레이스가 끝나고 재시작버튼이 뜨는데 까지는 bitmap으로는 쉽게 띄우는데 ..
그 뒤에 다시 main(게임 시작하는 부분)으로 가서 레이스를 재시작하게 만들고 싶은데 ..
어떻게 해야 할지 조언좀 부탁드립니다 ㅠ