[안드로이드] 벌레잡기 게임 만들기[2]

Words
80
Reading
1 min
Listen
Play
9y

안녕하세요!! wonnieyoon@wonnieyoon입니다.
어제는 세균들이 움직이는것에 집중하였다면
오늘은 세균을 죽여보죠!!


코드

<MainActivity.java>
public class MainActivity extends AppCompatActivity {

LinearLayout linearLayout;
MyView m ;
int heigth = 480,width = 800;
ArrayList<Insect> unit;

class MyHandler extends Handler{
    @Override
    public void handleMessage(Message msg) {

        for(int i=0;i<unit.size();i++)
        {
                             //좌표                가속도
            unit.get(i).setX(unit.get(i).getX() + unit.get(i).getAx()) ;
            unit.get(i).setY(unit.get(i).getY() + unit.get(i).getAy()) ;

            //x축 범위 벗어났을때
            if(unit.get(i).getX() > width-45 || unit.get(i).getX()<0)
            {
                unit.get(i).setAx(-unit.get(i).getAx());
            }

            //y축 범위 벗어났을때
            if(unit.get(i).getY() > heigth-300 || unit.get(i).getY() < 0)
            {
                unit.get(i).setAy(-unit.get(i).getAy());
            }
        }

        m.invalidate();
        sendEmptyMessageDelayed(0,20);
    }
}

MyHandler handler = new MyHandler();

public class MyView extends View{

    Bitmap image,image2;
    Random random;
    int x=0,y=0;

     public MyView(Context context) {
        super(context);
        unit = new ArrayList<Insect>();
        random = new Random();

        for(int i=0 ; i < 50 ;i++)
            unit.add(new Insect(100,30+random.nextInt(width-100),30+random.nextInt(heigth-330),5,5));

        image = BitmapFactory.decodeResource(getResources(),R.drawable.monster);
         image2 = BitmapFactory.decodeResource(getResources(),R.drawable.monster2);
        handler.sendEmptyMessage(0);
    }

    @Override
    protected void onDraw(Canvas canvas) {

        for (int i = 0; i < unit.size(); i++) {
            if(unit.get(i).getEnergy()<100 && unit.get(i).getEnergy()>0)
                canvas.drawBitmap(image2, unit.get(i).getX(), unit.get(i).getY(), null);
            else if(unit.get(i).getEnergy()<=0) {
                unit.remove(i);
            }
            else
                canvas.drawBitmap(image, unit.get(i).getX(), unit.get(i).getY(), null);
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        int x2 = (int)event.getX();
        int y2 = (int)event.getY();

        for(int i=0;i<unit.size();i++)
        {
            //밑변길이
            int a = x2 - unit.get(i).getX();

            //높이
            int c = y2 - unit.get(i).getY();

            //빗변의 길이
            int b = (int)Math.sqrt(Math.pow(a,2)+c*c);

            if(b<30)
                unit.get(i).setEnergy(unit.get(i).getEnergy()-20);
        }

        return super.onTouchEvent(event);
    }

}

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
    Display display =  wm.getDefaultDisplay();

    width = display.getWidth();
    heigth = display.getHeight();
    linearLayout = findViewById(R.id.back_linear);

    m = new MyView(this);
    linearLayout.addView(m);
}

}


결과

세균을 터치하면 세균이 피가나고ㅋㅋ체력이 0이되면 죽도록 만들었습니다.
이미지는 구글이미지를 사용했고 이미지를 만들 능력이 안되서 그림판으로 작업을... 읽어주셔서 감사합니다.

[안드로이드] 벌레잡기 게임 만들기[2] | Ecency