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

in #kr-science7 years ago (edited)

안녕하세요!! @wonnieyoon입니다.
프로그래밍 실력을 늘리는데는 재밌는것을 만들어보는것 만큼
좋은것이 없다고 생각합니다.
그래서 간단한 세균 죽이기 게임을 만들어보려고 합니다.
포스팅 1,2에 걸쳐서 완성할텐데 오늘은 전체적인 틀을 만들겠습니다.


코드

<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;
    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 < 200 ;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);
        handler.sendEmptyMessage(0);
    }

    @Override
    protected void onDraw(Canvas canvas) {

        for(int i=0;i<unit.size();i++)
            canvas.drawBitmap(image,unit.get(i).getX(),unit.get(i).getY(),null);
    }

}

@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);
}

}


결과


보시는것처럼 화면에 세균들이 바글바글합니다.
오늘은 세균들이 화면안에서 자동으로 움직이는것까지 구현하였고 내일은 클릭하면 세균들이 피를 흘리면서 죽는것을 구현해보겠습니다.

Sort:  

기대됩니다 ㅎㅎ

오늘 하루 가장 추운날이 될꺼같아요!
완전 무장하고 하루를 시작했네요! ㅠㅜ
감기 조심하세요~~

감사합니다.

MVVM패턴 적용 해보시는건 어떻게 생각하시나요 ㅎㅎ

조언 감사합니다.

아이고 복잡혀라, 저 명령어 일일이 다 입력하려면 눈아프겄으요, 그래서 개발하시는 분들 보면, 참 대단들 하더라구요.

그냥 계속사용하다보면 익숙해지더라구요ㅎㅎ

정말 좋은글 자 보도록 하겠습니다. 다음편도 빨리 나왔으면 좋겠습니다. 원님의 연참을 기대합니다. 연참 ^^;;

피를 흘리면서 까지... 죽이셔야 합니까....ㅠㅠ 흑흑 ㅋㅋㅋ (농담입니당ㅎ)
그런데 워니님 혹시 대문을 캡쳐하셔서 사용하고 계신건가요? 제가 업로드한것 보다 흐린것 같아서요. 혹시 원본 원하시면 보내드릴게요!

아~네네 원본 보내주시면 감사하겠습니다.ㅎㅎ

여기는....코딩 배우는 블로그 인가요??0-0 전 역사랑 사회부문인데 ㅋㅋ 님은 이런거 가르치시네요 ㅋ 전 코딩 혼자 책보고 독학하려고 하면 어우...어렵던데 ㅜㅅ ㅠ

저는 역사가 너무 어렵더라구요 ㅎㅎ 각자 맞는 분야가 있는거죠