간단한 안드로이드 카드게임의 예, Part 2
6장의 카드의 전면이 보이고 있을 때 이용자가 화면을 터치하면 게임이 시작된다는 의미로 모든 카드의 뒷면이 보이도록 한다.
CardGameActivity.java
package test.android.cardgame;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
public class CardGameActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
CardGameView view = new CardGameView(this);
setContentView(view);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.e("액티비티 터치이벤트", "이벤트 발생함");
return super.onTouchEvent(event);
}
}
CardGameView.java
package test.android.cardgame;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.view.MotionEvent;
import android.view.View;
public class CardGameView extends View {
Bitmap bgImg;
Bitmap backsideImg;
Card [][] card = new Card[2][3];
public CardGameView(Context context) {
super(context);
bgImg = BitmapFactory.decodeResource(getResources(), R.drawable.background);
card[0][0] = new Card(getContext(),Card.COLOR_RED);
card[0][1] = new Card(getContext(),Card.COLOR_GREEN);
card[0][2] = new Card(getContext(),Card.COLOR_BLUE);
card[1][0] = new Card(getContext(),Card.COLOR_GREEN);
card[1][1] = new Card(getContext(),Card.COLOR_BLUE);
card[1][2] = new Card(getContext(),Card.COLOR_RED);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(bgImg, 0, 0, null);
for(int y=0;y<2;y++) {
for(int x=0;x<3;x++) {
card[y][x].draw(canvas, 35+x*90, 150+y*130);
}
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
startGame();
invalidate();
return super.onTouchEvent(event);
}
public void startGame() {
for(int y=0;y<2;y++) {
for(int x=0;x<3;x++) {
card[y][x].status = Card.STATUS_CLOSE;
}
}
}
}
Card.java
package test.android.cardgame;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
public class Card {
static int COLOR_RED = 1;
static int COLOR_GREEN = 2;
static int COLOR_BLUE = 3;
static int STATUS_CLOSE = 1;
static int STATUS_SHOW = 2;
static int STATUS_TMPSHOW = 3;
static int STATUS_MATCHED = 4;
Bitmap backsideImg;
Bitmap bitmap;
int color;
int status;
public Card(Context ctx, int color){
this.color = color;
if(backsideImg==null)
backsideImg = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.backside);
if(color==COLOR_RED)
bitmap = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.front_red);
else if(color==COLOR_GREEN)
bitmap = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.front_green);
else if(color==COLOR_BLUE)
bitmap = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.front_blue);
}
public void draw(Canvas c, int x, int y){
if(status != STATUS_CLOSE) c.drawBitmap(bitmap, x, y, null);
else c.drawBitmap(backsideImg, x, y, null);
}
}