태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


일정범위내 들어오면 공격

2011.07.03 16:58


사정거리내에 녹색원이 들어오면 빨간색네모에서 검은색원을 발사해서 녹색원이 맞으면 검은색원은 사라지고
녹색원은 맞은자리에서 멈추고 크기도 작아지는 프로그램

감속운동수식을 이용해서 움직임을 구현한 관계로 녹색원은 첨에 빠르다가 점점느려지고
안타깝게도 검은원은 그냥 예측사격정도로 구현해볼려다가 간편하게 감속으로 구현한 관계로
 유도미사일이 되어버림 ㅋㅋ

  apk 파일 :


//========================================================================================
package cc.co.sody;



import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.MotionEvent;
import android.view.View;

public class Main extends Activity {

    int l=32;
    int t=32;
    int y;
    int x;
    int sootx=250;
    int sooty=250;
    boolean sootStart=true;
    int color;
    boolean firt=true;
    Rect rt = new Rect();
    Rect rtshoot = new Rect();
    boolean a=true;
    Rect rec1;
    boolean soot=false;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new GameView(this));
    }
   


    class GameView extends View {
        final static int DELAY = 200;
        Activity mParent;

        public GameView(Context context) {
            super(context);
            mParent = (Activity)context;
   
           
            mHandler.sendEmptyMessageDelayed(0,DELAY);
       
           
           
        }

        public void onDraw(Canvas canvas) {
            canvas.drawColor(Color.GRAY);
           

       
                Paint Pnt = new Paint();
                Pnt.setColor(color);
               
                Paint Pnt1 = new Paint();
                Pnt1.setColor(Color.GRAY);
               
                Paint Pnt2 = new Paint();
                Pnt2.setColor(Color.RED);

                Paint Pnt3 = new Paint();
                Pnt3.setColor(Color.BLACK);
               
                Rect rect = rt;
               
                 rec1=new Rect();
                rec1.left=150;
                rec1.top=150;
                rec1.right=350;
                rec1.bottom=350;
           
               
               
                canvas.drawCircle(rec1.left + rec1.width()/2, rec1.top + rec1.height()/2,
                        rec1.width()/2, Pnt1);
           
                Rect toret = new Rect();
                toret.left=220;
                toret.top=220;
                toret.right=280;
                toret.bottom=280;
               
                canvas.drawRect(toret, Pnt2);
               
                    canvas.drawCircle(rect.left + rect.width()/2, rect.top + rect.height()/2,
                            rect.width()/2, Pnt);
                    int sot=0;
                if(soot){
                   
                    if(rtshoot.left<40||rtshoot.bottom<40||rtshoot.right>canvas.getWidth()||rtshoot.bottom>canvas.getHeight()){
                        soot=false;
                        sootStart=true;
                    }
                   
                    canvas.drawCircle(rtshoot.left + rtshoot.width()/2, rtshoot.top + rtshoot.height()/2,
                            rtshoot.width()/2, Pnt3);   
               
                    sot=Sootidx(rtshoot.left, rtshoot.top,rtshoot.right, rtshoot.bottom);
                   
                            if(sot==-1){
                                rt.right = rt.left + 5;
                                rt.bottom = rt.top + 5;
                                soot=false;
                                sootStart=true;
                                mHandler.sendEmptyMessageDelayed(1,DELAY);
                               
                            }
                   
                     }else{
                         int sel;
                        sel = FindShapeIdx(rect.left, rect.top,rect.right, rect.bottom);
                         if (sel == -1) {
                           
                            soot=true;
                        }
                     }

            }
       

        public boolean onTouchEvent(MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
           
           
                y=(int)event.getY();
                 x=(int)event.getX();
               
               
                mHandler.sendEmptyMessageDelayed(0,DELAY);
       
            }
            return true;
        }

        void AddNewShape() {
       
                int Size = 32;
                if(a){
                    rt.left = l;
                    rt.top = t;
               
                   
                }else{
               
                rt.left = (int) (rt.left+(x-rt.left)*0.1);
                rt.top = (int) (rt.top+(y-rt.top)*0.1);
               
                }
                rt.right = rt.left + Size;
                rt.bottom = rt.top + Size;

            color = Color.GREEN;
           
           
               
            if(soot){
           
                    if(sootStart){
                                rtshoot.left = sootx;
                                rtshoot.top = sooty;
                                sootStart=false;
                   
                            }else{
                           
                                rtshoot.left = (int) (rtshoot.left+((rt.left)-rtshoot.left)*0.4);
                                rtshoot.top = (int) (rtshoot.top+((rt.top)-rtshoot.top)*0.4);
                           
                            }
                           
                       
                           
                           
                        rtshoot.right = rtshoot.left + 10;
                        rtshoot.bottom = rtshoot.top + 10;
                       
                        int sot;
                        sot=Sootidx(rtshoot.left, rtshoot.top,rtshoot.right, rtshoot.bottom);
                       
                if(sot==-1){
                    return;
                }


            }
                   
                        if(!a)mHandler.sendEmptyMessageDelayed(0,DELAY);
                        else a=false;
        }

        int FindShapeIdx(int x, int y,int r,int b) {
            int idx;

            for (idx = 0; idx < 1; idx ++) {
                if (rec1.contains(x, y)) {
                    return -1;
                }
                if (rec1.contains(r, b)) {
                    return -1;
                }
            }
            return idx;
        }
        int Sootidx(int x, int y,int r,int b) {
            int idx;

            for (idx = 0; idx < 1; idx ++) {
                if (rt.contains(x, y)) {
                    return -1;
                }
                if (rt.contains(r, b)) {
                    return -1;
                }
            }
            return idx;
        }

        Handler mHandler = new Handler() {
            public void handleMessage(Message msg) {
                if(msg.what==0){
                AddNewShape();
                invalidate();
                }if(msg.what==1){
                    invalidate();
                }
               
                }
           
           
        };
    }
}

Comments

  1. 2013.06.22 20:47

    비밀댓글입니다

    perm. |  mod/del. |  reply.

What's on your mind?

댓글 입력 폼