рдпрд╣ рд╕рдм рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрд╛рд╕реВрд╕реА рдХрд╣рд╛рдиреА рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рд╣реБрдЖ: рдирдП рд╕рд╛рд▓ рдХреА рдЫреБрдЯреНрдЯрд┐рдпрд╛рдВ, 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 { @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 { 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 рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЕрдВрддрд┐рдо рд╕рдордп рдкрд░ рд╣рдо рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдлрд┐рд░ рд╕реЗ рдЗрд╕рдореЗрдВ рдХрд╣рд╛рдВ рдкрд╣реБрдВрдЪреЗред , рдЕрд░реНрдерд╛рддреН, рд╣рдо рдЬрд╛рдирдХрд╛рд░реА рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдПрдВрдбреНрд░реЙрдЗрдб рдорд╛рд░реНрдХреЗрдЯ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреИрд╕реЗ рдмрдврд╝рд╛рд╡рд╛ рджрд┐рдпрд╛ рдЬрд╛рдПред рд╣рдо
рд▓реЗрдЦ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ:
- рд╣рдо рдХреЗрд╡рд▓ 5 рдХрд╛рд░реНрдпреЛрдВ рд╡рд╛рд▓реЗ рдЧреЗрдо рдХрд╛ рдореБрдлреНрдд рдбреЗрдореЛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
- рд╣рдо 30 рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рдХрд╛ рдПрдХ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
- рд╣рдо рдХреБрдЫ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЧреЗрдо рдЕрдкрдбреЗрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
- рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдЗрдВрдЯрд░рдиреЗрдЯ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдЧреЗрдо рд░рд┐рд╡реНрдпреВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
- рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд 30 рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рдХрд╛ рдПрдХ рдЕрджреНрдпрддрди рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ, рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдПрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЦреЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдЪреВрдВрдХрд┐ рдпрд╣ рд▓реЗрдЦ рддреАрд╕рд░реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдкрд╣рд▓реЗ рджреЛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛:
рдЧреЗрдо рдХрд╛ рдбреЗрдореЛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗрд╡рд▓ 200 рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓рдЧрднрдЧ 100 рд╕рдХреНрд░рд┐рдп рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди, рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдкрд╣рд▓реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдореБрдЭреЗ рдЦреЗрд▓ рдХреЗ рдХреБрдЫ рдЯрд┐рдкреНрд╕ рднреА рдорд┐рд▓реЗред
рдПрдХ рд╣рдлреНрддреЗ рдмрд╛рдж, рдбреЗрдореЛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рдмрд╛рдж, рдЦреЗрд▓ рдХреЗ рднреБрдЧрддрд╛рди рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ред рдбреЗрдореЛ рд╕рдВрд╕реНрдХрд░рдг рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдореИрдВрдиреЗ рдЙрд╕ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЛ рдЦреЛ рджрд┐рдпрд╛ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдП рдФрд░ рдбреЗрдореЛ рд╕рдВрд╕реНрдХрд░рдг рдЕрдкрдбреЗрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ - рдЗрд╕рд▓рд┐рдП рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВред рдкрд╣рд▓реЗ 24 рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓ рдмрд╛рдЬрд╛рд░ рдореЗрдВ рдерд╛, 2 рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕реЗ рдЦрд░реАрджрд╛, рджреЛрдиреЛрдВ рд░рд╛рдЬреНрдпреЛрдВ рдиреЗ, Google рдЪреЗрдХрдЖрдЙрдЯ рдореЗрдВ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдПред рд╕рдкреНрддрд╛рд╣ рдХреЗ рджреМрд░рд╛рди рдПрдХ рдФрд░ рдмрд┐рдХреНрд░реА рд╣реБрдИ рдереАред
рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рдХреЗ рдПрдХ рдЕрджреНрдпрддрди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдФрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ред
рдЖрдЧреЗ рдХреИрд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╣реЛрдЧрд╛, рдореИрдВ рдмрд╛рдж рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реВрдВрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ ...
рдЗрд╕ рд╕рдм рдкрд░ рдмрд┐рддрд╛рдпрд╛ рдЧрдпрд╛ рд╕рдордп рдмрд┐рд▓рдХреБрд▓ рдЕрдлрд╝рд╕реЛрд╕ рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдиреБрднрд╡ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдЦрд╝реБрд╢реА рдорд┐рд▓реА рд╣реИред рддреЛ рдЕрдЧрд░ рдХреЛрдИ рдФрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдпрд╛ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рджреЛрд╕реНрддреЛрдВ, рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВ! рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛рдУ! рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИ!
PS рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЧреЗрдо рдХреЛ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди 7 рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдлреНрдпреВрдЬ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рддреЛ iOS рдХреЗ рд▓рд┐рдПред