Cum să începeți dezvoltarea pentru Android. Bazele programării pentru Android folosind exemplul jocului Sudoku

În orice afacere, cel mai dificil lucru este începutul. De multe ori este dificil să intru în context, ceea ce am întâlnit când am decis să dezvolt prima mea aplicație Android. Acest articol este pentru cei care doresc să înceapă, dar nu știu de unde.

Articolul va acoperi întregul ciclu de dezvoltare a aplicației. Împreună vom scrie un joc simplu Tic-Tac-Toe cu un singur ecran (în sistemul de operare Android aceasta se numește Activitate).

Lipsa experienței de dezvoltare Java nu ar trebui să fie un obstacol în stăpânirea Androidului. Astfel, exemplele nu vor folosi constructe specifice Java (sau vor fi minimizate pe cât posibil). Dacă scrieți, de exemplu, PHP și sunteți familiarizat cu principiile fundamentale ale dezvoltării software, acest articol vă va fi cel mai util. La rândul meu, din moment ce nu sunt un expert în dezvoltarea Java, se poate presupune că codul sursă nu se califică pentru eticheta „cele mai bune practici pentru dezvoltarea Java”.

Instalarea programelor și utilitarelor necesare

Voi enumera instrumentele necesare. Sunt 3 dintre ele:

  1. IDE cu suport pentru dezvoltarea Android:
    • Plugin Eclipse + ADT;
    • IntelliJ IDEA Community Edition;
    • Netbeans + plugin nbandroid;

Utilitățile sunt instalate în ordinea specificată mai sus. Nu are rost să instalați toate IDE-urile enumerate (cu excepția cazului în care aveți dificultăți în a-l alege pe cel potrivit). Folosesc IntelliJ IDEA Community Edition, unul dintre cele mai avansate IDE-uri pentru Java disponibile astăzi.

Pornirea unui dispozitiv virtual

După ce ați lansat AVD Manager și instalați pachete suplimentare (SDK de diferite versiuni), puteți începe să creați un dispozitiv virtual cu parametrii necesari. Înțelegerea interfeței nu ar trebui să fie dificilă.

Lista de dispozitive

Crearea unui proiect

Sunt mereu dornic să mă apuc de treabă, minimizând activitățile pregătitoare, care includ crearea unui proiect în IDE, mai ales când proiectul este educațional și nu intenționează să fie produs.

Deci, File->New Project:

Prin apăsarea butonului F6, proiectul va fi asamblat, compilat și lansat pe dispozitivul virtual.

Structura proiectului

Captura de ecran anterioară arată structura proiectului. Deoarece în acest articol urmărim obiective pur practice, ne vom concentra doar asupra acelor foldere pe care le vom folosi în procesul de lucru. Acestea sunt următoarele directoare: gen, resȘi src.

În dosar gen există fișiere care sunt generate automat când proiectul este construit. Nu le puteți modifica manual.

Dosarul res este destinat stocării de resurse precum imagini, texte (inclusiv traduceri), valori implicite, machete.

src- acesta este folderul în care se va desfășura partea principală a lucrării, deoarece fișierele cu codul sursă al programului nostru sunt stocate aici.

Primele rânduri

Odată creată Activitatea (ecranul aplicației), este apelată metoda onCreate(). IDE-ul l-a umplut cu 2 rânduri:
super.onCreate(savedInstanceState); setContentView(R.layout.main);
Metoda setContentView (echivalentă cu this.setContentView) setează aspectul xml pentru ecranul curent. În cele ce urmează, vom numi aspectele xml „aspect” și ecranele „Activitate”. Dispunerea în aplicație va fi după cum urmează:

TableLayout este ideal pentru această aplicație. Id-ul poate fi atribuit oricărei resurse. În acest caz, TableLayout i se atribuie id = main_l. Folosind metoda findViewById() puteți accesa vizualizarea:
aspect privat TableLayout; // aceasta este o proprietate a clasei KrestikinolikiActivity public void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.main); layout = (TableLayout) findViewById(R.id.main_l); buildGameField( );

Acum trebuie să implementăm metoda buildGameField(). Pentru a face acest lucru, trebuie să generați un câmp sub forma unei matrice. Acest lucru va fi realizat de clasa de joc. Mai întâi trebuie să creați o clasă Square pentru celule și o clasă Player ale cărei obiecte vor umple aceste celule.

Pătrat.java

pachet com.example; public class Square ( private Player player = null; public void fill(Player player) ( this.player = player; ) public boolean isFilled() ( if (player != null) ( return true; ) return false; ) public Player getPlayer () (retur jucător; ))

Player.java

pachet com.example; clasă publică Player (nume String privat; Jucător public (nume String) ( this.name = nume; ) public CharSequence getName() ( returnează (CharSequence) nume; ) )

Toate clasele aplicației noastre se află în folderul src.

Joc.java

pachet com.example; clasă publică Joc ( /** * câmp */ câmp privat Square; /** * Constructor * */ public Game() ( câmp = nou Square; squareCount = 0; // completarea câmpului pentru (int i = 0, l = câmp.lungime;

Inițializarea jocului în constructorul KrestikinolikiActivity.
public KrestikinolikiActivity() (joc = joc nou(); joc.start(); // va fi implementat mai târziu)

Metoda buildGameField() a clasei KrestikinolikiActivity. Adaugă în mod dinamic rânduri și coloane la tabel (câmp de joc):
butoane private = buton nou; //(....) private void buildGameField() ( câmp pătrat = game.getField(); pentru (int i = 0, lenI = field.length; i
Linia 8 creează un obiect care implementează interfața View.OnClickListener. Să creăm o clasă Listener imbricată. Va fi vizibil doar din KrestikinolikiActivity.
public class Listener implementează View.OnClickListener ( private int x = 0; private int y = 0; public Listener (int x, int y) ( this.x = x; this.y = y; ) public void onClick (View view) ( Buton buton = (Button) vizualizare; ) )
Rămâne să implementăm logica jocului.
Clasa publică Joc ( /** * jucători */ jucători privat jucători; /** * câmp */ câmp privat Square; /** * jocul a început? */ boolean privat a început; /** * jucător curent */ privat Player activePlayer /** * Contorează numărul de celule completate */ private int completed /** * Total de celule */ private int squareCount /** * Constructor * */ public Game() ( field = new Square; = 0; // completarea câmpului pentru (int i = 0, l = field.length; i

Determinarea câștigătorului

K.O sugerează că câștigătorul în tic-tac-toe este cel care aliniază X sau O într-o linie egală cu lungimea câmpului pe verticală, orizontală sau diagonală. Primul gând care îmi vine în minte este să scriem metode pentru fiecare caz. Cred că modelul Lanțului de Responsabilitate ar funcționa bine în acest caz. Să definim interfața
pachet com.example; interfață publică WinnerCheckerInterface ( public Player checkWinner(); )
Deoarece Game are responsabilitatea de a determina câștigătorul, implementează această interfață. Este timpul să creăm „arbitri de arbitru” virtuali, fiecare dintre care își va verifica partea. Toate implementează interfața WinnerCheckerInterface.

WinnerCheckerHorizontal.java

pachet com.example; clasă publică WinnerCheckerHorizontal implementează WinnerCheckerInterface ( joc privat Joc; public WinnerCheckerHorizontal (joc joc) ( this.game = game; ) public Player checkWinner() ( câmp pătrat = game.getField(); Player currPlayer; Player lastPlayer = null; for (int) i = 0, len = câmp.lungime;

WinnerCheckerVertical.java

pachet com.example; clasă publică WinnerCheckerVertical implementează WinnerCheckerInterface ( joc privat Game; public WinnerCheckerVertical (joc de joc) ( this.game = game; ) public Player checkWinner() ( câmp pătrat = game.getField(); Player currPlayer; Player lastPlayer = null; for (int) i = 0, len = câmp.lungime;

WinnerCheckerDiagonalLeft.java

pachet com.example; clasă publică WinnerCheckerDiagonalLeft implementează WinnerCheckerInterface ( joc privat de joc; public WinnerCheckerDiagonalLeft (joc de joc) ( this.game = game; ) public Player checkWinner () ( câmp pătrat = game.getField (); Player currPlayer; Player lastPlayer = null; int successCounter = 1; pentru (int i = 0, len = field.length; i

WinnerCheckerDiagonalRight.java

pachet com.example; clasă publică WinnerCheckerDiagonalRight implementează WinnerCheckerInterface ( joc privat joc; public WinnerCheckerDiagonalRight (joc joc) ( this.game = game; ) public Player checkWinner() ( câmp pătrat = game.getField(); Player currPlayer; Player lastPlayer = null; int successCounter = 1; pentru (int i = 0, len = field.length; i
Să le inițializam în constructorul jocului:
//(....) /** * „Judecători” =). După fiecare mutare, vor verifica * pentru a vedea dacă există un câștigător */ WinnerCheckerInterface winnerCheckers privat; //(....) public Game() ( //(....) winnerCheckers = nou WinnerCheckerInterface; winnerCheckers = nou WinnerCheckerHorizontal(this); winnerCheckers = nou WinnerCheckerVertical(this); winnerCheckers = nou WinnerCheckerDiagonalLeft(this); winnerCheckers = new WinnerCheckerDiagonalRight(this //(....) )
Implementarea checkWinner():
public Player checkWinner() (pentru (WinnerCheckerInterface winChecker: winnerCheckers) (Jucător câștigător = winChecker.checkWinner(); dacă (câștigător != null) ( returnează câștigător; ) ) return null; )
Verificăm câștigătorul după fiecare mișcare. Să adăugăm cod la metoda onClick() a clasei Listener
public void onClick (Vizualizare vizualizare) ( Buton buton = vizualizare (Button); Joc g = joc; Player player = g.getCurrentActivePlayer(); if (makeTurn(x, y)) ( button.setText(player.getName()) ; ) Jucător câștigător = g.checkWinner(); if (winner != null) ( gameOver(winner); ) if (g.isFieldFilled()) ( // dacă câmpul este completat gameOver(); ) )
Metoda gameOver() este implementată în 2 variante:
private void gameOver(Player player) ( CharSequence text = "Player \"" + player.getName() + "\" a câștigat!"; Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); game.reset (); refresh(); private void gameOver() (CharSequence text = "Draw"; Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); game.reset(); refresh(); )
Pentru Java, gameOver(Player player) și gameOver() sunt metode diferite. Folosind Builder Toast.makeText, puteți crea și afișa rapid o notificare refresh() care actualizează starea câmpului:
private void refresh() ( câmp pătrat = game.getField(); pentru (int i = 0, len = field.length; i

Gata! Sper că acest articol v-a ajutat să vă simțiți confortabil în lumea dezvoltării Android. Vă mulțumesc pentru atenție!

Video cu aplicația finalizată

Mulți programatori doresc să înceapă să dezvolte aplicații pentru Android. Dar puțini oameni își dau seama ce pași trebuie făcuți aici. Această colecție este concepută pentru a ajuta începătorii să stăpânească dezvoltarea Android.

Începutul lucrării

Pentru cei începători în programare al nostru va ajuta.

Pentru începători cu Android Google a făcut o bună introducere în Android pe site-ul lor. Există, de asemenea, un ghid excelent pentru Android crowdsource. Există și un curs de la Google despre Udacity.

Dacă experimentezi probleme cu Android, este foarte recomandat să verificați mai întâi StackOverflow. Este conceput pentru a răspunde întrebărilor tehnice și este chiar un .

Îl puteți găsi oricând pe site-ul nostru.

FAQ

Vreau să încep să dezvolt pentru Android. De unde sa incep?

Primul și cel mai important pas în dezvoltarea Android este învățarea Java și XML. Odată ce vă familiarizați mai mult sau mai puțin cu ambele, consultați documentația oficială Android și luați câteva tutoriale până când vă simțiți suficient de încrezător pentru a vă crea propriile proiecte. Noroc!

Am nevoie de un dispozitiv Android pentru dezvoltare?

Puteți scrie aplicații fără niciun dispozitiv Android folosind emulatorul inclus (sau Genymotion avansat). Cu toate acestea, pentru a ține cont de cerințele hardware, nu există niciun substitut pentru testarea pe un dispozitiv real.

Ce IDE ar trebui să folosesc?

  • Android Studio- Un IDE acceptat oficial pentru dezvoltarea Android. Acesta este ceea ce este folosit în ghidurile și videoclipurile moderne, inclusiv în cele de la Google.
  • Eclipsă a fost IDE-ul principal pentru dezvoltarea Android de mulți ani, motiv pentru care majoritatea tutorialelor, resurselor, videoclipurilor și capturilor de ecran vechi sunt realizate cu acesta.
  • IntelliJ IDEA a fost o alternativă la Eclipse, dar în zilele noastre este mai logic să începeți cu Android Studio. Android Studio este un furk al IntelliJ IDEA, astfel încât să beneficiați de toate beneficiile sale plus bonusuri Android.

Poate ar trebui să uit de Java și să încep să învăț Kotlin?

Google acceptă acum oficial Kotlin ca limbaj de dezvoltare pentru Android, dar asta nu înseamnă că puteți uita de suportul Java. În viitorul apropiat, documentația, instrumentele și noile caracteristici ale platformei vor suporta atât Kotlin, cât și Java. Deși Kotlin este un limbaj mai nou, cu câteva caracteristici frumoase, puteți crea aplicații grozave în Java. Alegerea depinde de tine, dar dacă nu îți pasă sau ești începător, atunci poate fi mai bine să optezi pentru Kotlin.

Resurse

Iată principalele resurse pentru învățarea dezvoltării Android în limba engleză. Aceasta nu este o listă completă, dar este suficientă pentru a începe.

Resurse oficiale Android

Proiecta

  • Frumuseți pentru Android - inspirație pentru crearea de interfețe grafice pentru Android.

Buletine informative

  • Android Weekly este un buletin informativ excelent care vă ajută să fiți la curent cu cele mai recente evoluții Android.

Colecțiile bibliotecii

Instrumente

  • Genymotion este un emulator extrem de util și funcțional.
  • Android Asset Studio este o colecție excelentă de instrumente pentru crearea/editarea pictogramelor, imaginilor etc.
  • Plug-in Codota pentru Android Studio - exemple excelente de cod chiar în Android Studio.

Exemple de aplicații open source

Idei de aplicare

Deci ai o idee pentru o aplicație... Oamenii scriu despre ea în fiecare zi. Dar înainte de a cere ajutor în implementarea unui proiect, trebuie să răspundeți la următoarele întrebări cheie:

Care este bugetul meu?

Dacă sunteți serios și doriți să vă lansați produsul, ar trebui să vă gândiți la bugetul dvs. Chiar și pentru o aplicație simplă, trebuie să vă gândiți la câteva mii de dolari. Macar.

Care este strategia mea de marketing?

Vei folosi obișnuit cuvântul în gură sau ești dispus să plătești pentru faimă?

Care este lista sarcinilor pentru acest proiect?

De asemenea, care sunt restricțiile? De câți dezvoltatori am nevoie?

De unde vor veni datele/unde vor fi stocate?

Și, de asemenea, cum vor fi ele folosite? Am o politică de confidențialitate adecvată?

Există un obiectiv de a face bani?

Dacă da, cum o vei realiza? Prin publicitate, IAP, abonamente, aplicații plătite? Toate cele de mai sus?

Cum îți vei plăti dezvoltatorii?

Aveți capital sau urmează să le plătiți după ce aplicația începe să genereze venituri? Adesea, antreprenorii independenți necesită o parte din costul total în avans. Majoritatea dezvoltatorilor nu sunt interesați de împărțirea veniturilor decât dacă investesc ei înșiși în aplicație.

Care va fi metoda de testare?

Pe ce tip de dispozitiv îl vei instala? De câte iterații aveți nevoie? Ce fel de oameni vrei să angajezi?

Cât de curând doriți să vă publicați aplicația în magazin?

Acest lucru va afecta cu siguranță venitul final.

Veți solicita sau veți oferi înregistrarea/integrarea în rețelele sociale?

Luați în considerare implementarea acestei funcționalități.

Care este publicul tău țintă?

Este o aplicație de nișă sau poate fi distribuită peste tot?

Ideea mea a fost deja implementată?

Dacă da, cum îl pot îmbunătăți sau ce lipsește din el?

Ce să faci cu ideile de aplicații dacă nu ești dezvoltator?

Este posibil să căutați dezvoltatori care să se alăture echipei dvs. pentru a implementa o aplicație. Dacă aveți bani și puteți plăti un dezvoltator sau o companie, atunci totul este simplu și clar. În continuare vom vorbi despre ce să faci dacă nu ai suficienți bani pentru a plăti pe cineva.

Realizează că ideea ta poate să nu fie unică, iar dezvoltarea necesită un efort semnificativ.

  • Desenați designul aplicația dvs. (aspect și funcționalitate). Poate fi aspru și desenat pe hârtie. Dar ar trebui să fie destul de specific și nu vag.
  • Faceți o listă cu abilitățile dvs legat de idee.
  • Faceți o listă cu ceea ce veți investiîn ideea ta.

Înțelegeți că dezvoltarea necesită un efort semnificativ. Imaginați-vă un dezvoltator care lucrează cu normă întreagă (8 ore) timp de 2 luni pentru a vă crea aplicația. Și mai lucrezi cu normă întreagă. Ce faci in acest moment? Dacă munca ta, în opinia ta, se termină mai devreme, atunci trebuie să reconsideri ideea. În acest scenariu, dezvoltatorul face cea mai mare parte a muncii și tu ești, sincer, inutil. Ce puteți oferi după ce aplicația este terminată nu contează cu adevărat și nu va motiva dezvoltatorul să termine produsul.

Revizuirea ideii tale

Dacă dezvoltatorul lucrează mai mult decât tine, ideea trebuie reconsiderată pentru a distribui munca mai echitabil. Acest lucru vă va oferi beneficiile lucrului împreună. Priviți lista dvs. de abilități și gândiți-vă la modul în care acestea pot fi aplicate. Este în regulă dacă aplicația diferă de ideea inițială. Revizuiește-l până când munca ta și cea a dezvoltatorului sunt cel puțin egale.

  • Distribuiți munca cât mai corect posibil.
  • Concentrează-te mai întâi pe abilitățile tale.
  • Volumul tău de muncă ar trebui să fie aproximativ egal cu 2 luni de muncă cu normă întreagă. Pentru aplicații simple, descărcarea poate fi, desigur, mai mică. Puteți întreba comunitatea (de ex.

În orice afacere, cel mai dificil lucru este începutul. De multe ori este dificil să intru în context, ceea ce am întâlnit când am decis să dezvolt prima mea aplicație Android. Acest articol este pentru cei care doresc să înceapă, dar nu știu de unde.

Articolul va acoperi întregul ciclu de dezvoltare a aplicației. Împreună vom scrie un joc simplu Tic-Tac-Toe cu un singur ecran (în sistemul de operare Android aceasta se numește Activitate).

Lipsa experienței de dezvoltare Java nu ar trebui să fie un obstacol în stăpânirea Androidului. Astfel, exemplele nu vor folosi constructe specifice Java (sau vor fi minimizate pe cât posibil). Dacă scrieți, de exemplu, PHP și sunteți familiarizat cu principiile fundamentale ale dezvoltării software, acest articol vă va fi cel mai util. La rândul meu, din moment ce nu sunt un expert în dezvoltarea Java, se poate presupune că codul sursă nu se califică pentru eticheta „cele mai bune practici pentru dezvoltarea Java”.

Instalarea programelor și utilitarelor necesare

Voi enumera instrumentele necesare. Sunt 3 dintre ele:

  1. IDE cu suport pentru dezvoltarea Android:
    • Plugin Eclipse + ADT;
    • IntelliJ IDEA Community Edition;
    • Netbeans + plugin nbandroid;

Utilitățile sunt instalate în ordinea specificată mai sus. Nu are rost să instalați toate IDE-urile enumerate (cu excepția cazului în care aveți dificultăți în a-l alege pe cel potrivit). Folosesc IntelliJ IDEA Community Edition, unul dintre cele mai avansate IDE-uri pentru Java disponibile astăzi.

Pornirea unui dispozitiv virtual

După ce ați lansat AVD Manager și instalați pachete suplimentare (SDK de diferite versiuni), puteți începe să creați un dispozitiv virtual cu parametrii necesari. Înțelegerea interfeței nu ar trebui să fie dificilă.

Lista de dispozitive

Crearea unui proiect

Sunt mereu dornic să mă apuc de treabă, minimizând activitățile pregătitoare, care includ crearea unui proiect în IDE, mai ales când proiectul este educațional și nu intenționează să fie produs.

Deci, File->New Project:

Prin apăsarea butonului F6, proiectul va fi asamblat, compilat și lansat pe dispozitivul virtual.

Structura proiectului

Captura de ecran anterioară arată structura proiectului. Deoarece în acest articol urmărim obiective pur practice, ne vom concentra doar asupra acelor foldere pe care le vom folosi în procesul de lucru. Acestea sunt următoarele directoare: gen, resȘi src.

În dosar gen există fișiere care sunt generate automat când proiectul este construit. Nu le puteți modifica manual.

Dosarul res este destinat stocării de resurse precum imagini, texte (inclusiv traduceri), valori implicite, machete.

src- acesta este folderul în care se va desfășura partea principală a lucrării, deoarece fișierele cu codul sursă al programului nostru sunt stocate aici.

Primele rânduri

Odată creată Activitatea (ecranul aplicației), este apelată metoda onCreate(). IDE-ul l-a umplut cu 2 rânduri:
super.onCreate(savedInstanceState); setContentView(R.layout.main);
Metoda setContentView (echivalentă cu this.setContentView) setează aspectul xml pentru ecranul curent. În cele ce urmează, vom numi aspectele xml „aspect” și ecranele „Activitate”. Dispunerea în aplicație va fi după cum urmează:

TableLayout este ideal pentru această aplicație. Id-ul poate fi atribuit oricărei resurse. În acest caz, TableLayout i se atribuie id = main_l. Folosind metoda findViewById() puteți accesa vizualizarea:
aspect privat TableLayout; // aceasta este o proprietate a clasei KrestikinolikiActivity public void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.main); layout = (TableLayout) findViewById(R.id.main_l); buildGameField( );

Acum trebuie să implementăm metoda buildGameField(). Pentru a face acest lucru, trebuie să generați un câmp sub forma unei matrice. Acest lucru va fi realizat de clasa de joc. Mai întâi trebuie să creați o clasă Square pentru celule și o clasă Player ale cărei obiecte vor umple aceste celule.

Pătrat.java

pachet com.example; public class Square ( private Player player = null; public void fill(Player player) ( this.player = player; ) public boolean isFilled() ( if (player != null) ( return true; ) return false; ) public Player getPlayer () (retur jucător; ))

Player.java

pachet com.example; clasă publică Player (nume String privat; Jucător public (nume String) ( this.name = nume; ) public CharSequence getName() ( returnează (CharSequence) nume; ) )

Toate clasele aplicației noastre se află în folderul src.

Joc.java

pachet com.example; clasă publică Joc ( /** * câmp */ câmp privat Square; /** * Constructor * */ public Game() ( câmp = nou Square; squareCount = 0; // completarea câmpului pentru (int i = 0, l = câmp.lungime;

Inițializarea jocului în constructorul KrestikinolikiActivity.
public KrestikinolikiActivity() (joc = joc nou(); joc.start(); // va fi implementat mai târziu)

Metoda buildGameField() a clasei KrestikinolikiActivity. Adaugă în mod dinamic rânduri și coloane la tabel (câmp de joc):
butoane private = buton nou; //(....) private void buildGameField() ( câmp pătrat = game.getField(); pentru (int i = 0, lenI = field.length; i
Linia 8 creează un obiect care implementează interfața View.OnClickListener. Să creăm o clasă Listener imbricată. Va fi vizibil doar din KrestikinolikiActivity.
public class Listener implementează View.OnClickListener ( private int x = 0; private int y = 0; public Listener (int x, int y) ( this.x = x; this.y = y; ) public void onClick (View view) ( Buton buton = (Button) vizualizare; ) )
Rămâne să implementăm logica jocului.
Clasa publică Joc ( /** * jucători */ jucători privat jucători; /** * câmp */ câmp privat Square; /** * jocul a început? */ boolean privat a început; /** * jucător curent */ privat Player activePlayer /** * Contorează numărul de celule completate */ private int completed /** * Total de celule */ private int squareCount /** * Constructor * */ public Game() ( field = new Square; = 0; // completarea câmpului pentru (int i = 0, l = field.length; i

Determinarea câștigătorului

K.O sugerează că câștigătorul în tic-tac-toe este cel care aliniază X sau O într-o linie egală cu lungimea câmpului pe verticală, orizontală sau diagonală. Primul gând care îmi vine în minte este să scriem metode pentru fiecare caz. Cred că modelul Lanțului de Responsabilitate ar funcționa bine în acest caz. Să definim interfața
pachet com.example; interfață publică WinnerCheckerInterface ( public Player checkWinner(); )
Deoarece Game are responsabilitatea de a determina câștigătorul, implementează această interfață. Este timpul să creăm „arbitri de arbitru” virtuali, fiecare dintre care își va verifica partea. Toate implementează interfața WinnerCheckerInterface.

WinnerCheckerHorizontal.java

pachet com.example; clasă publică WinnerCheckerHorizontal implementează WinnerCheckerInterface ( joc privat Joc; public WinnerCheckerHorizontal (joc joc) ( this.game = game; ) public Player checkWinner() ( câmp pătrat = game.getField(); Player currPlayer; Player lastPlayer = null; for (int) i = 0, len = câmp.lungime;

WinnerCheckerVertical.java

pachet com.example; clasă publică WinnerCheckerVertical implementează WinnerCheckerInterface ( joc privat Game; public WinnerCheckerVertical (joc de joc) ( this.game = game; ) public Player checkWinner() ( câmp pătrat = game.getField(); Player currPlayer; Player lastPlayer = null; for (int) i = 0, len = câmp.lungime;

WinnerCheckerDiagonalLeft.java

pachet com.example; clasă publică WinnerCheckerDiagonalLeft implementează WinnerCheckerInterface ( joc privat de joc; public WinnerCheckerDiagonalLeft (joc de joc) ( this.game = game; ) public Player checkWinner () ( câmp pătrat = game.getField (); Player currPlayer; Player lastPlayer = null; int successCounter = 1; pentru (int i = 0, len = field.length; i

WinnerCheckerDiagonalRight.java

pachet com.example; clasă publică WinnerCheckerDiagonalRight implementează WinnerCheckerInterface ( joc privat joc; public WinnerCheckerDiagonalRight (joc joc) ( this.game = game; ) public Player checkWinner() ( câmp pătrat = game.getField(); Player currPlayer; Player lastPlayer = null; int successCounter = 1; pentru (int i = 0, len = field.length; i
Să le inițializam în constructorul jocului:
//(....) /** * „Judecători” =). După fiecare mutare, vor verifica * pentru a vedea dacă există un câștigător */ WinnerCheckerInterface winnerCheckers privat; //(....) public Game() ( //(....) winnerCheckers = nou WinnerCheckerInterface; winnerCheckers = nou WinnerCheckerHorizontal(this); winnerCheckers = nou WinnerCheckerVertical(this); winnerCheckers = nou WinnerCheckerDiagonalLeft(this); winnerCheckers = new WinnerCheckerDiagonalRight(this //(....) )
Implementarea checkWinner():
public Player checkWinner() (pentru (WinnerCheckerInterface winChecker: winnerCheckers) (Jucător câștigător = winChecker.checkWinner(); dacă (câștigător != null) ( returnează câștigător; ) ) return null; )
Verificăm câștigătorul după fiecare mișcare. Să adăugăm cod la metoda onClick() a clasei Listener
public void onClick (Vizualizare vizualizare) ( Buton buton = vizualizare (Button); Joc g = joc; Player player = g.getCurrentActivePlayer(); if (makeTurn(x, y)) ( button.setText(player.getName()) ; ) Jucător câștigător = g.checkWinner(); if (winner != null) ( gameOver(winner); ) if (g.isFieldFilled()) ( // dacă câmpul este completat gameOver(); ) )
Metoda gameOver() este implementată în 2 variante:
private void gameOver(Player player) ( CharSequence text = "Player \"" + player.getName() + "\" a câștigat!"; Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); game.reset (); refresh(); private void gameOver() (CharSequence text = "Draw"; Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); game.reset(); refresh(); )
Pentru Java, gameOver(Player player) și gameOver() sunt metode diferite. Folosind Builder Toast.makeText, puteți crea și afișa rapid o notificare refresh() care actualizează starea câmpului:
private void refresh() ( câmp pătrat = game.getField(); pentru (int i = 0, len = field.length; i

Gata! Sper că acest articol v-a ajutat să vă simțiți confortabil în lumea dezvoltării Android. Vă mulțumesc pentru atenție!

Video cu aplicația finalizată

Programarea este unul dintre acele domenii în care toată lumea se poate simți ca un creator. De obicei, se referă la dezvoltarea de aplicații pentru calculatoare personale, unități de echipamente de producție sau pur și simplu pentru produse electronice de casă. Dar, odată cu răspândirea dispozitivelor mobile cu ecran tactil, programarea pentru Android, iOS sau un alt sistem de tip shell de tip similar devine din ce în ce mai populară. Ei bine, trebuie să recunosc, aceasta este o ocupație promițătoare. Prin urmare, în cadrul articolului, vom lua în considerare rularea Android de la zero. Ce caracteristici există? Ce limbaj este folosit?

Crearea de programe

Înainte de a scrie singur programe, trebuie să studiați toate componentele necesare pentru aceasta:

  1. Limba.
  2. Selectați mediul dvs. de dezvoltare. De asemenea, ne vom opri asupra limbajului în detaliu, precum și asupra produselor software în care vor fi create aplicații. Dar mai întâi, să vorbim puțin despre mediile de dezvoltare. În mod convențional, ele pot fi împărțite în trei componente:
  • grafic;
  • comun;
  • pe net.

În ceea ce privește crearea de programe, trebuie menționat că acum este greu să propun o idee care nu a fost deja pusă la punct. Prin urmare, dacă apare o problemă sau pur și simplu în cazul unei lipse de cunoștințe, este necesar să se formuleze corect neînțelegerea apărută și să apeleze la programatori mai experimentați. Aceștia vă vor putea ajuta să creați programe cu sfaturi constructive.

În ce limbă sunt scrise programele?

Java este folosit în aceste scopuri. Trebuie remarcat faptul că acesta este un limbaj de programare destul de complex. Dar pentru a vă crea propriile aplicații, nu trebuie să le cunoașteți complet. Cunoștințele și abilitățile de bază în lucrul cu informații de referință vor fi suficiente pentru a obține răspunsuri la întrebările dvs. În plus, există anumite presetări, folosindu-te de care poți face niște pași pentru a crea o aplicație fără probleme semnificative. Atunci programarea pentru Android devine o plăcere.

Alegerea unui mediu de dezvoltare obișnuit

Eclipse și SDK-ul Android sunt văzuți ca cei mai mari jucători. Ambele sunt gratuite. În general, trebuie remarcat faptul că aceste medii de dezvoltare sunt concurenți serioși și fiecare dintre ele are o serie de puncte forte și puncte slabe. Fiecare dintre ele merită studiat. Separat, să ne oprim puțin asupra unui aspect al SDK-ului Android - emulatorul. Este un program care se pretinde a fi un telefon sau o tabletă care rulează pe Android. Emulatorul rulează fără probleme pe un computer obișnuit și arată ca un dispozitiv mobil standard pe desktop. Există o singură particularitate - este controlat folosind mouse-ul și tastatura, și nu cu degetul. În emulator, puteți verifica funcționalitatea aplicației pentru diferite extensii de ecran, precum și pe diferite versiuni ale sistemului de operare mobil Android. Prin urmare, oricât de ciudat vi s-ar părea, atunci când dezvoltați aplicații care vizează Android, nu este deloc necesar să aveți un telefon.

De ce aveți nevoie pentru a vă dezvolta aplicația?

Medii de dezvoltare grafică

Această opțiune este potrivită pentru cei care nu au idee despre programare în general, dar doresc să-și obțină aplicația aici și acum. În primul rând, ar trebui să vă familiarizați cu descrierea și capabilitățile mediilor de dezvoltare grafică. Astfel, unii pot plasa doar cele mai simple elemente și le pot atașa funcționalitate minimă. Este mai bine să nu folosiți astfel de resurse, deoarece cu ajutorul lor va fi dificil să înțelegeți logica muncii și să creați un produs final dezvoltat. Este recomandabil să faceți o selecție în funcție de următorii parametri:

  1. Disponibilitatea unei interfețe intuitive.
  2. Folosind o logică clară de operare.
  3. Abilitatea de a crea elemente în modurile grafice și cod.
  4. Disponibilitatea documentației pentru lucrul cu mediul de dezvoltare și un forum de suport.

Mediu de dezvoltare online

Ele pot oferi o gamă destul de largă de funcționalități într-un punct de acces simplu - Internetul. „Mediul de dezvoltare online” probabil spune totul. Deși trebuie clarificat că sub Android încă nu este o sarcină ușoară. Deci, cel mai dificil va fi să implementezi shootere și aplicații de complexitate similară. Dar programele cu formatare text și transfer de date sunt ușoare.

Concluzie

Sperăm că nu mai există întrebări despre primii pași de pregătire pentru a vă crea propriile programe. Dacă decideți să vă ocupați serios de programare, atunci puteți folosi literatură specială. De exemplu, cartea „Programare pentru Android” de Hardy Brian. Desigur, aceasta nu este singura lucrare bună, dar trebuie să începi de undeva. Citind acest manual, puteți începe calea către succes.

Deci, ați decis să deveniți un dezvoltator de aplicații mobile pentru sistemul de operare Android. Aceasta este o soluție excelentă, dar fără cunoștințe certe nu va funcționa. Cel puțin, trebuie să înveți programarea. Există mai multe limbaje de programare și va trebui să alegeți cu care să începeți. Există o diferență între ele și poate să nu fie prea ușor de înțeles.

Iată limbajele de programare pe care un viitor dezvoltator de Android le-ar putea lua în considerare:

  • Java este limbajul oficial de dezvoltare pentru Android și este susținut de mediul de dezvoltare Google. Poate că nu este atât de ușor de învățat.
  • Kotlin – Această limbă a fost introdusă ca a doua limbă acceptată oficial. Este similar cu Java în multe privințe, dar este mai ușor să începeți.
  • C/C++ – Android Studio acceptă C++. Acest limbaj este și mai complex, dar este folosit activ în dezvoltarea jocurilor.
  • C# – acest limbaj poate atrage începătorii. Este susținut de mediile de dezvoltare Unity și Xamarin. Ele oferă avantaje atunci când se dezvoltă jocuri și produse pentru diferite platforme.
  • DE BAZĂ – Acest limbaj este acceptat de IDE-ul B4A, care este un instrument simplu, dar puternic.
  • Corona/LUA – Mediul LUA este bun pentru dezvoltarea de produse multiplatforme. Simplifică foarte mult crearea de aplicații și oferă acces la biblioteci native.
  • PhoneGap (HTML, CSS, JavaScript) – Această opțiune este potrivită pentru cei care știu să creeze pagini web interactive. Cu PhoneGap, puteți crea aplicații pe mai multe platforme într-un mod similar.

Acum să ne uităm la aceste opțiuni mai detaliat.

Java

Limbajul de programare Java este primul care vine în minte când vine vorba de dezvoltarea Android. Java a fost lansat de Sun Microsystems în 1995. Este folosit pentru diferite tipuri de aplicații. Când vine vorba de aplicații Android, Java este cea mai bună alegere pentru cei care doresc să se arunce cu capul întâi în dezvoltarea Android. Cu toate acestea, nu este cea mai bună limbă pentru un începător. Cu siguranță te vei confrunta cu dificultăți. Dacă ești începător, vrei să creezi un joc sau vrei să începi să înveți, dar nu te-ai decis încă ce fel de rezultat vrei să obții, s-ar putea să vrei să începi cu ceva mai simplu.

Kotlin

Kotlin, la fel ca Java, este bun pentru dezvoltarea de aplicații Android. Diferența este că Kotlin este mai ușor pentru începători, dar încă nu mai ușor decât multe alte opțiuni. Merită aruncat o privire deoarece limbajul este tânăr și puteți lucra cu el în Android Studio, ceea ce este un mare plus.

C/C++

Nu este cea mai bună alegere pentru a crea aplicații simple. Puteți lucra cu limba în Android Studio folosind Android NDK, dar, spre deosebire de Java și Kotlin, nu rulează pe Java Virtual Machine. Cu toate acestea, rulează nativ pe dispozitiv, ceea ce vă poate oferi mai multe opțiuni de memorie. Cu el puteți obține performanțe mai bune în jocurile 3D. Dacă aceasta este alegerea ta, pregătește-te pentru dificultăți. Ar putea fi mai bine să utilizați un motor de joc gata făcut pentru a vă crea jocurile.

C#

C# este o versiune mai simplă a C și C++ dezvoltată de Microsoft. Cu acest limbaj, nu trebuie să vă faceți griji cu privire la gestionarea memoriei, la fel ca în cazul Java. Cu toate acestea, C# este mai modern și mai curat în comparație cu Java. C# și Unity vor fi jocuri foarte utile și ușor de dezvoltat. Pentru dezvoltarea aplicațiilor, mediul Unity nu este atât de bun. C# este o alegere excelentă, dar îți va limita opțiunile dacă vrei să devii un dezvoltator profesionist de Android.

DE BAZĂ

Această limbă este cea mai bună opțiune pentru un începător. Îl vei putea folosi în mediul de dezvoltare B4A. Această combinație nu este grozavă pentru a crea jocuri, dar este ideală pentru a învăța cum să se dezvolte. Puteți învăța o mulțime de lucruri noi fără prea multă muncă și puteți crea aplicații bune. Cu toate acestea, va trebui să plătiți pentru toate aceste bucurii cu bani. Vei învăța ceva nou, dar nu vei deveni un profesionist dacă știi doar să programezi în BASIC.

Corona

Corona împreună cu LUA vă va permite să dezvoltați nu numai pentru Android și este mult mai ușor decât să începeți să învățați Java. Îți va plăcea și vei fi mulțumit de rezultate, dar pentru a-ți dezvolta abilitățile, va trebui să înveți altceva. Ca și în cazul BASIC, nu există nicio modalitate de a deveni profesionist.

PhoneGap

Ultima opțiune este potrivită pentru cei care se pricep la dezvoltarea web și pot crea un site web interactiv folosind HTML, CSS și JavaScript. PhoneGap vă va permite să creați o aplicație folosind aceleași instrumente. Această opțiune are foarte puțin de-a face cu dezvoltarea Android, dar este potrivită dacă aveți obiective specifice și nu intenționați să dezvoltați pentru Android în viitor.

Există multe opțiuni. Suntem încrezători că veți putea face alegerea corectă.

Bazat pe Android Authority

  • Serghei Savenkov

    un fel de recenzie „scurtă”... de parcă s-ar grăbi undeva