테트리스 안드로이드 자바 소스 참고 음....

테트리스를 안드로이드 앱으로 구현하는데 필요한 소스입니다.
개인적으로 기록해 둔 것이라 모든 상황에 적용되지 않을 수 있습니다.


 안드로이드 자바 코딩 소스

activity_main.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<com.example.tetris.TetrisView
android:id="@+id/tetrisView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>






TetrisView 클래스, 게임 로직



import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView; public class TetrisView extends SurfaceView implements SurfaceHolder.Callback { private TetrisThread tetrisThread; public TetrisView(Context context, AttributeSet attrs) {
super(context, attrs);
getHolder().addCallback(this);
tetrisThread = new TetrisThread(getHolder(), this);
setFocusable(true);
} @Override
public void surfaceCreated(SurfaceHolder holder) {
tetrisThread.setRunning(true);
tetrisThread.start();
} @Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
} @Override
public void surfaceDestroyed(SurfaceHolder holder) {
boolean retry = true;
tetrisThread.setRunning(false);
while (retry) {
try {
tetrisThread.join();
retry = false;
} catch (InterruptedException e) {
// 오류 처리
}
}
} @Override
public void draw(Canvas canvas) {
// 게임 보드 그리기 로직 추가
}
}






TetrisThread



import android.graphics.Canvas; import android.view.SurfaceHolder; public class TetrisThread extends Thread { private SurfaceHolder surfaceHolder; private TetrisView tetrisView; private boolean running; public TetrisThread(SurfaceHolder holder, TetrisView view) { surfaceHolder = holder; tetrisView = view; running = false; } public void setRunning(boolean run) { running = run; } @Override public void run() { while (running) { Canvas canvas = null; try { canvas = surfaceHolder.lockCanvas(); synchronized (surfaceHolder) { // 게임 업데이트 로직 추가 tetrisView.draw(canvas); } } finally { if (canvas != null) { surfaceHolder.unlockCanvasAndPost(canvas); } } } } }




이 블로그의 인기 게시물

뚜렷해진모공, 피부결 개선하는 5단계 홈케어 루틴

모공이 눈에 띄는 이유, 크기보다 결 흐름 때문입니다

흡수되지 않는 피부, 문제는 성분이 아닙니다