package com.example.test01;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;
public class Stage1 extends View{
Bitmap Img1,Img2,Img3,Img4,Img5,Img6,Img7,Img8,Img9,Background;
int width=MainActivity.screenWidth;
int height=MainActivity.screenHeight;
int rectL;
Rect rect1;
Rect rect2;
Rect rect3;
Rect rect4;
Rect rect5;
Rect rect6;
Rect rect7;
Rect rect8;
Rect rect9;
Paint rectPaint ;
Context context;
int X,Y;
int count[][]={{0,0,0},{0,0,0},{0,0,0}};
int answer[][]={{1,0,0},{1,1,3},{0,0,0}};
int midx=(width/2)-150;
int midy=(height/2)+120;
Bitmap scaledBitmap;
int time;
public Stage1(Context context) {
super(context);
this.context=context;
handler.sendEmptyMessage(0);
init();//초기화 하기
//핸들러를 호출해서 화면이 주기적으로 갱신되도록 한다.
}
public void init(){
//이미지 읽어오기
Img1=BitmapFactory.decodeResource
(getResources(), R.drawable.roadg);
Img2=BitmapFactory.decodeResource
(getResources(), R.drawable.road12);
Img3=BitmapFactory.decodeResource
(getResources(), R.drawable.road34);
Img4=BitmapFactory.decodeResource
(getResources(), R.drawable.road41);
Img5=BitmapFactory.decodeResource
(getResources(), R.drawable.roadc);
Img6=BitmapFactory.decodeResource
(getResources(), R.drawable.road41);
Img7=BitmapFactory.decodeResource
(getResources(), R.drawable.road34);
Img8=BitmapFactory.decodeResource
(getResources(), R.drawable.road23);
Img9=BitmapFactory.decodeResource
(getResources(), R.drawable.roads);
Background=BitmapFactory.decodeResource
(getResources(), R.drawable.background);
//렉트의 속성 설정
rectPaint=new Paint();
rectPaint.setAlpha(0);
rectPaint.setStyle(Style.FILL);
//이미지 좌표 설정
scaledBitmap = Bitmap.createScaledBitmap(Background,width, height, true);
}
@Override
protected void onDraw(Canvas canvas){
canvas.drawBitmap(scaledBitmap,0,0,null);
int leftx = midx-350;
int rightx = midx+350;
int topy = midy-350;
int bottomy = midy+350;
//1번째 라인
canvas.drawBitmap(Img1,leftx,topy,null);
canvas.drawBitmap(Img2,midx,topy,null);
canvas.drawBitmap(Img3,rightx,topy,null);
//2번째 라인
canvas.drawBitmap(Img4,leftx,midy,null);
canvas.drawBitmap(Img5,midx,midy,null);
canvas.drawBitmap(Img6,rightx,midy,null);
//3번째 라인
canvas.drawBitmap(Img7,leftx,bottomy,null);
canvas.drawBitmap(Img8,midx,bottomy,null);
canvas.drawBitmap(Img9,rightx,bottomy,null);
//1번째라인
rect1=new Rect(leftx,topy,leftx+320, topy+320);
canvas.drawRect(rect1, rectPaint);
rect2=new Rect(midx,topy,midx+320,topy+320);
canvas.drawRect(rect2, rectPaint);
rect3=new Rect(rightx,topy,rightx+320,topy+320);
canvas.drawRect(rect3, rectPaint);
//2번째 라인
rect4=new Rect(leftx,midy,leftx+320, midy+320);
canvas.drawRect(rect4, rectPaint);
rect5=new Rect(midx,midy,midx+320,midy+320);
canvas.drawRect(rect5, rectPaint);
rect6=new Rect(rightx,midy,rightx+320,midy+320);
canvas.drawRect(rect6, rectPaint);
//3번째 라인
rect7=new Rect(leftx,bottomy,leftx+320,bottomy+320);
canvas.drawRect(rect7, rectPaint);
rect8=new Rect(midx,bottomy,midx+320,bottomy+320);
canvas.drawRect(rect8, rectPaint);
rect9=new Rect(rightx,bottomy,rightx+320,bottomy+320);
canvas.drawRect(rect9, rectPaint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
int x = (int) event.getX();
int y = (int) event.getY();
//1번째라인
if (rect1.contains(x, y) == true){
CountN(0,0);
Img1=imgRotate(Img1);
Toast.makeText(getContext(), ""+count[0][0], Toast.LENGTH_SHORT).show();
Answer();
}
else if(rect2.contains(x, y) == true){
Count(0,1);
Img2=imgRotate(Img2);
Toast.makeText(getContext(), ""+count[0][1], Toast.LENGTH_SHORT).show();
}
else if(rect3.contains(x, y) == true){
Count(0,2);
Img3=imgRotate(Img3);
Toast.makeText(getContext(), ""+count[0][2], Toast.LENGTH_SHORT).show();
}
//2번째라인
else if(rect4.contains(x, y) == true){
Count(1,0);
Img4=imgRotate(Img4);
Toast.makeText(getContext(), ""+count[1][0], Toast.LENGTH_SHORT).show();
Answer();
}
else if(rect5.contains(x, y) == true){
Count(1,1);
Img5=imgRotate(Img5);
Toast.makeText(getContext(), ""+count[1][1], Toast.LENGTH_SHORT).show();
}
else if(rect6.contains(x, y) == true){
Count(1,2);
Img6=imgRotate(Img6);
Toast.makeText(getContext(), ""+count[1][2], Toast.LENGTH_SHORT).show();
Answer();
}
//3번째라인
else if(rect7.contains(x, y) == true){
Count(2,0);
Img7=imgRotate(Img7);
Toast.makeText(getContext(), ""+count[2][0], Toast.LENGTH_SHORT).show();
}
else if(rect8.contains(x, y) == true){
Count(2,1);
Img8=imgRotate(Img8);
Toast.makeText(getContext(), ""+count[2][1], Toast.LENGTH_SHORT).show();
}
else if(rect9.contains(x, y) == true){
CountN(2,2);
Img9=imgRotate(Img9);
Toast.makeText(getContext(), ""+count[2][2], Toast.LENGTH_SHORT).show();
Answer();
}
else
Toast.makeText(getContext(), "Miss", Toast.LENGTH_SHORT).show();
}
return false;
}
private Bitmap imgRotate(Bitmap bmp){
int width = bmp.getWidth();
int height = bmp.getHeight();
Matrix matrix = new Matrix();
matrix.postRotate(90);
Bitmap resizedBitmap = Bitmap.createBitmap(bmp, 0, 0, width, height, matrix, true);
bmp.recycle();
return resizedBitmap;
}
private void Count(int n1, int n2){
if(count[n1][n2]<3)
count[n1][n2]++;
else if(count[n1][n2]==3)
count[n1][n2]=0;
}
private void CountN(int n1, int n2){
if(count[n1][n2]==0)
count[n1][n2]++;
else if(count[n1][n2]==1)
count[n1][n2]=0;
}
private void Answer(){
if((count[0][0]==answer[0][0] && count[1][0]==answer[1][0] && count[1][2]==answer[1][2]
&& count[2][2]==answer[2][2])==true)
((MainActivity)context).dialog();
}
Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
//화면 갱신
invalidate();
handler.sendEmptyMessageDelayed(0, 10);
}
};
}
이미지 배치한거 위에다가 시간막대바를 구현해보고 싶어서 질문드립니다..
이미지1이 길을 따라 이미지2를 따라잡는 형식으로 구현하려구 합니다.
xml은 사용하지 않고 순수 java코드로만 해야하는데...
도움 주시면 정말로 감사드리겠습니다.