рдПрдХ рдЧреЗрдо рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдкреЛрд░реНрдЯ рдХрд░рдирд╛

рдпрд╣ рд╕рдм рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрд╛рд╕реВрд╕реА рдХрд╣рд╛рдиреА рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рд╣реБрдЖ: рдирдП рд╕рд╛рд▓ рдХреА рдЫреБрдЯреНрдЯрд┐рдпрд╛рдВ, 31 рджрд┐рд╕рдВрдмрд░, рдореЙрд╕реНрдХреЛ рд╕реЗ рдХрдИ рдХрд┐рд▓реЛрдореАрдЯрд░ рджреВрд░ рдПрдХ рдкреИрддреГрдХ рдШрд░ рдФрд░ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм, рдЗрдВрдЯрд░рдиреЗрдЯ рдХреА рдкреВрд░реА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рдПрдХ 2x2 рдЯреЗрд▓реАрд╡рд┐рдЬрди рдЪреИрдирд▓ред рдорд╕реНрддрд┐рд╖реНрдХ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рдпрд╛ рддреЛ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░реЗрдВ, рдпрд╛ рдЗрд╕реЗ рдмрдирд╛рдПрдВред рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдЙрд╕ рдХреНрд╖рдг рдореЗрд░рд╛ рдорд╕реНрддрд┐рд╖реНрдХ рджреВрд╕рд░реЗ рдореЛрдб рдореЗрдВ рдЕрд░реНрдЬрд┐рдд рд╣реБрдЖред рдПрдХ рд╕рдВрдпреЛрдЧ рд╕реЗ, рдореИрдВ рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рднреВрд▓ рдЧрдП рдкрд╣реЗрд▓реА рдЦреЗрд▓ "рдкрд╛рдЗрдерд╛рдЧреЛрд░рд╕" рдореЗрдВ рдЖрдпрд╛ рдерд╛:



рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ "рдбрд┐рдЬрд┐рдЯрд▓" рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред



рдкрд╛рдЗрдерд╛рдЧреЛрд░рд╕ рдкрд╣реЗрд▓реА рдореЗрдВ 7 рдЬреНрдпрд╛рдорд┐рддреАрдп рдЖрдВрдХрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдореЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдХрд┐ рдХрд╛рд░реНрдп рдореЗрдВ рдЗрдВрдЧрд┐рдд рдЖрдВрдХрдбрд╝рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╕рднреА 7 рдкрд╣реЗрд▓реА рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдордВрдЪ рдХреА рдкрд╕рдВрджред

рдЦреИрд░, рд╕рдм рдХреБрдЫ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ "рдореЛрдмрд╛рдЗрд▓ рдлреЛрди" рдХреЗ рддрд╣рдд рдХреБрдЫ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдЪреВрдВрдХрд┐ рдЧреНрд░рд╣рдг рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рд▓реИрдкрдЯреЙрдк рдкрд░ рдЦрдбрд╝рд╛ рдерд╛, рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рдХрд┐рддрд╛рдмреЗрдВ "рд░рд┐рдЬрд░реНрд╡ рдореЗрдВ" рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдереАрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрд╕рдВрдж рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдереАред

рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛: рд╣рдо Android рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрдерд╛рдЧреЛрд░рд╕ рдЦрд┐рд▓реМрдирд╛ рд▓рд┐рдЦреЗрдВрдЧреЗред рдореИрдВ рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдирд╣реАрдВ рд╣реВрдВ, рд╢рдмреНрдж рдХреА рдореЗрд░реА рд╕рдордЭ рдореЗрдВред

рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЧреНрд░рд╣рдг рдХреЛ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдФрд░ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдореИрдВ рдХрд╣рд╛рдиреА рдХреЗ рд╕рд╛рд░ рдореЗрдВ рдмрджрд▓реВрдВрдЧрд╛ред

Pifagor рдирд╛рдордХ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред
рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Pifagor.java рдФрд░ рд╕рд╛рдордЧреНрд░реА рдирд╛рдордХ рдПрдХ рдлрд╛рдЗрд▓ рд╣реЛрдЧреА:

package Pifagor.android.game; import android.app.Activity; import android.os.Bundle; public class Pifagor extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); pifagorView = (PifagorView) findViewById(R.id.game); } } 


рдПрдХ рд╢реБрд░реБрдЖрдд рдХреА рдЧрдИ рд╣реИред
рдЕрдм PifagorDraw.java рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░рд╛ рдЧреЗрдо рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдкрд┐рдлрд╛рдЧреЛрд░рдбреНрд░рд╛ рдХреНрд▓рд╛рд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдереНрд░реЗрдб рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдмрдЪреНрдЪрд╛ рд╣реИред рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрдХреНрд░реАрди рдкрд░ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЧреЗрдо рдХреЛ рдЗрд╕рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░реАрд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд░рди рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 package Pifagor.android.game; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.view.MotionEvent; import android.view.SurfaceHolder; public class PifagorDraw extends Thread { private SurfaceHolder appScreen; private boolean appRunning; //    private boolean appPaused; //    private Paint appPaint; // private Bitmap clearScreen; //     private PifagorPuzzle Puzzles[]; //   private int activePuzzle; //    private long thisTime; //        private long downTime; //        private PifagorTask Tasks[]; //   private PifagorTask ResetPiktogram; //     private int activeTask; //    private int maxTasks; //    private boolean prevButton, nextButton, resetButton; //    //   //   private int PuzzleTemplate1[][][] = {......}; //   private int PuzzleTemplate2[][][] = {......}; //   private int PuzzleTemplate3[][][] = {......}; //   private int PuzzleTemplate4[][][] = {......}; //   private int PuzzleTemplate5[][][] = {......}; //   "" private int Pikto1[][] = {......}; //   private int Task1[][] = {......}; private int Task2[][] = {......}; private int Task3[][] = {......}; private int Task4[][] = {......}; //  public PifagorDraw(SurfaceHolder surfaceHolder, Context context) { //     appScreen = surfaceHolder; appRunning = false; appPaused = false; activePuzzle = 0; thisTime = 0; downTime = 0; prevButton = false; nextButton = false; resetButton = false; //   appPaint = new Paint(); appPaint.setColor(Color.BLUE); appPaint.setStrokeWidth(2); appPaint.setStyle(Style.STROKE); //      clearScreen = Bitmap.createBitmap(screenWidth, screenHeight, Bitmap.Config.RGB_565); //      Puzzles = new PifagorPuzzle[7]; Puzzles[0] = new PifagorPuzzle(......); Puzzles[1] = new PifagorPuzzle(......); Puzzles[2] = new PifagorPuzzle(......); Puzzles[3] = new PifagorPuzzle(......); Puzzles[4] = new PifagorPuzzle(......); Puzzles[5] = new PifagorPuzzle(......); Puzzles[6] = new PifagorPuzzle(......); PuzzlesReset(); //      maxTasks = 4; activeTask = 0; Tasks = new PifagorTask[maxTasks]; Tasks[0] = new PifagorTask(......); Tasks[1] = new PifagorTask(......); Tasks[2] = new PifagorTask(......); Tasks[3] = new PifagorTask(......); //    ResetPiktogram = new PifagorTask(......); } //     public void setRunning(boolean status) { appRunning = status; } //     public boolean Touch(MotionEvent event) { int mouseX = (int)event.getX(); int mouseY = (int)event.getY(); switch(event.getAction()) { case MotionEvent.ACTION_MOVE: //   ...... break; case MotionEvent.ACTION_DOWN: //   ...... break; case MotionEvent.ACTION_UP: //   ...... break; } return true; //  true,       } //        public void PuzzlesReset() { ...... } @Override public void run() { while(appRunning) { if (!appPaused) { Canvas canvas = null; try { canvas = appScreen.lockCanvas(); synchronized(appScreen) { //         // : //   canvas.drawBitmap(clearScreen, 0, 0, null); //    for(int i=0;i<7;i++) { Puzzles[i].Update(); Puzzles[i].Draw(canvas); } ...... sleep(20); } } catch (Exception e) { } finally { if (canvas != null) { appScreen.unlockCanvasAndPost(canvas); } } } } } } 


рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдореЛрдмреЗрд╢ рдЕрдм рддрдХ рдореИрдВрдиреЗ рдПрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред

рдЕрдм PifagorView.java рдирд╛рдордХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╣рдо PifagorView рд╡рд░реНрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ SurfaceView рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдмрдЪреНрдЪрд╛ рд╣реИ, рдФрд░ SurfaceHolder.Callback рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдЬреЛрдбрд╝реЗрдВ - рдпрд╣ рд╡рд░реНрдЧ рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛ред
рдмрдирд╛рдИ рдЧрдИ рдХрдХреНрд╖рд╛ рдореЗрдВ, рд╣рдореЗрдВ рд╡реНрдпреВ рд╕реНрдЯреЗрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рднреВрддрд▓ рд╡реНрдпреВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рддреАрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕реНрдХреНрд░реАрди рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХрд╛ (рдХреНрд▓рд┐рдХ рдХрд░рдирд╛, рдЦреАрдВрдЪрдирд╛, рд░рд┐рд╣рд╛ рдХрд░рдирд╛):

 package Pifagor.android.game; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; public class PifagorView extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder appScreen; private PifagorDraw appThread; public boolean surfaceCreated; //  public PifagorView(Context context, AttributeSet attrs) { super(context, attrs); surfaceCreated = false; appScreen = getHolder(); appScreen.addCallback(this); appThread = new PifagorDraw(appScreen, context); setFocusable(true); } @Override public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder holder) { appThread = new PifagorDraw(holder, getContext(), screenWidth, screenHeight); appThread.setRunning(true); appThread.start(); } @Override public void surfaceDestroyed(SurfaceHolder arg0) { boolean retry = true; appThread.setRunning(false); while(retry) { try { appThread.join(); retry = false; } catch (InterruptedException e){ } } } @Override public boolean onTouchEvent(MotionEvent event) { return appThread.Touch(event); //           PifagorDraw,        } } 


рдЕрдм рд╣рдореЗрдВ main.xml рдлрд╝рд╛рдЗрд▓ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╣рдордиреЗ рдЕрдкрдирд╛ рд╡реНрдпреВ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдФрд░ рдЕрдм рд╣рдореЗрдВ рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдкрд░ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Pifagor.android.game.PifagorView android:id="@+id/game" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> 


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджреЛ рдФрд░ рд╡рд░реНрдЧ рд╣реИрдВ PifagorPuzzle, рдЬреЛ рдкрд╣реЗрд▓реА рдХреЗ рдЬреНрдпрд╛рдорд┐рддреАрдп рдЖрдВрдХрдбрд╝реЗ рдФрд░ рд╡рд░реНрдЧ PifagorTask рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрд╡реЗрджрди рдХреЛ рдХрдо рдХрд░рддреЗ рд╕рдордп рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реБрдП, рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░реЗрдВ:

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, PifagorView рдХреНрд▓рд╛рд╕ рдореЗрдВ, CreateThread рдФрд░ TerminateThread рдореЗрдердб рдмрдирд╛рдПрдБ (рдирд╛рдо рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛), рдФрд░ рд░реАрдбрд┐рдлрд╛рдЗрдиреНрдб рд╕рд░рдлреЗрд╕рдХреНрд░рд┐рдПрдЯ рдФрд░ рд╕рд░реНрдлреЗрд╕рдбрд┐рд╕реНрдЯреНрд░реАрдб рддрд░реАрдХреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ:
 public class PifagorView extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder appScreen; private PifagorDraw appThread; public boolean surfaceCreated; private int screenWidth; private int screenHeight; //  public PifagorView(Context context, AttributeSet attrs) { super(context, attrs); surfaceCreated = false; appScreen = getHolder(); appScreen.addCallback(this); appThread = new PifagorDraw(appScreen, context, screenWidth, screenHeight); setFocusable(true); } //   public void terminateThread() { boolean retry = true; appThread.setRunning(false); while(retry) { try { appThread.join(); retry = false; } catch (InterruptedException e){ } } } //   public void createThread(SurfaceHolder holder) { appThread = new PifagorDraw(holder, getContext()); appThread.setRunning(true); appThread.start(); } @Override public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder holder) { if (surfaceCreated == false) { createThread(holder); surfaceCreated = true; } } @Override public void surfaceDestroyed(SurfaceHolder arg0) { terminateThread(); } @Override public boolean onTouchEvent(MotionEvent event) { return appThread.Touch(event); } } 


рджреВрд╕рд░реА рдмрд╛рдд, рдкрд┐рдлрд╛рдЧреЛрд░ рдХреНрд▓рд╛рд╕ рдореЗрдВ, рд╣рдо рдСрдирдкреЙрдЗрдВрдЯ рдФрд░ рдСрдирдСрдиреНрдпреВрдо рддрд░реАрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
 public class Pifagor extends Activity { /** Called when the activity is first created. */ private PifagorView pifagorView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); pifagorView = (PifagorView) findViewById(R.id.game); } @Override public void onPause() { super.onPause(); pifagorView.terminateThread(); } @Override public void onResume() { super.onResume(); if (pifagorView.surfaceCreated == true) { pifagorView.createThread(pifagorView.getHolder()); } } } 


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрд╡реЗрджрди рдХреЛ рдХрдо рдХрд░рддреЗ рд╕рдордп, рдкрд┐рдлрдЧреЛрд░рдбреНрд░реЙрд╡ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЦреЗрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧреА, рдФрд░ рдЬрдм рдЖрдк рдЖрд╡реЗрджрди рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдореИрдВрдиреЗ рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рджрд┐рдпрд╛, рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрддреНрд░ рдореЗрдВ рд▓рд┐рдЦреЗрдВ, рдореИрдВ рдЗрд╕реЗ рднреЗрдЬреВрдВрдЧрд╛ред

рдЦреИрд░, рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ:

рдореБрдЭреЗ рдЦрд┐рд▓реМрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдЬрд╛рдЗрдирд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдпрджрд┐ рдХреЛрдИ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ - рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореЗрдВ рд▓рд┐рдЦреЗрдВред

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рдЦреЗрд▓ рд▓рд┐рдЦрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЖрдЧреЗ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╛ рдЗрд╕реЗ рдЖрд░реНрдХрд╛рдЗрд╡ рдореЗрдВ рдбрд╛рд▓реЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдЗрд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдореИрдХреЗрдЯ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред рджреВрд╕рд░рд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд░реЛрдЪрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо market.android.com/publish рдкрд░ рдкрдВрдЬреАрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ, Google Checkout рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ (рдпрд╣ IE рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдореБрдЭреЗ рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдереА), рд╣рдо $ 25 рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЕрдВрддрд┐рдо рд╕рдордп рдкрд░ рд╣рдо рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдлрд┐рд░ рд╕реЗ рдЗрд╕рдореЗрдВ рдХрд╣рд╛рдВ рдкрд╣реБрдВрдЪреЗред , рдЕрд░реНрдерд╛рддреН, рд╣рдо рдЬрд╛рдирдХрд╛рд░реА рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдПрдВрдбреНрд░реЙрдЗрдб рдорд╛рд░реНрдХреЗрдЯ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреИрд╕реЗ рдмрдврд╝рд╛рд╡рд╛ рджрд┐рдпрд╛ рдЬрд╛рдПред рд╣рдо рд▓реЗрдЦ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ:

Source: https://habr.com/ru/post/In114059/


All Articles