ITI0011-13-HW3V2-Android-Gomoku

Allikas: Lambda

Tagasi ITI0011 lehele.

Go-Moku mängu kasuajaliides Android platvormile

Tegemist on valikulise kodutööga, mida võib teha 3. kodutöö Kimp asemel. Olgu märgitud, et praktikumides me ei jõua Androidi platvormile arendamist väga palju tutvustada. Seega, see kodutöö eeldab suuremat iseseisvat tööd. See-eest on võimalik ülesande eest saada rohkem punkte (kokku 15p).

Ülesanne koosneb põhiosast ja lisaosast. Põhiosa on natuke täpsemalt kirjeldatud, lisaosa puhul on tudengil võimalik välja pakkuda oma idee. Loodav rakendus võiks töötada viimaste Android versioonide peal (4+).

TTÜ-l on teatud hulk Android telefone, mida saab arendamiseks välja laenata. Kui on huvi, võtke ühendust. Arendada võib loomulikult ka enda Android seadme peale.

Põhiosa (10p)

Realiseerida graafiline kasutajaliides Gomoku mängu (viis nuppu ritta) jaoks. Ülesande lahenduse loomiseks on teil suhteliselt vabad käed. Nõuded on järgmised:

  • Programm peab kuvama ruudustiku (suurus võiks olla vähemalt 10x10)
  • Mängijad teevad käike kordamööda, vajutades ekraanile.
  • Mängijate nupud võiks olla selgesti eristatavad (näiteks must ja valge seest täidetud ring).
  • Nuppe saab käia vaid tühjadesse ruutudesse. Kui kasutaja üritab käia täidetud ruudule, võiks sellest teada anda.
  • Programm tuvastab, kui üks mängijates on võitnud (5 nuppu reas, veerus, diagonaalselt) ning annab vastavasisulise teate.
  • Ekraanil võiks olla nupp (või saab menüüst valida) uue mängu alustamise.
  • Programm võiks arvestada ka sellega, kui ta backgroundi pannakse.
  • Ruutudele käimisel võiks arvestada seda, et kahe ruudu vahel võiks olla puhverala, millele vajutades käiku ei loeta (kuna sellisel juhul on raske tuvastada, millisele kasutaja soovib käia).

Lisaks võiks arvestada kõiksugu muude kasutajasõbralikkuse, programmi töökiirusega (ei tohiks mõelda mitu sekundit käigu kuvamisel).

Valikuline lisaosa (5p) - AI loomine

AI (Artificial Intelligence) - tehisintellekt. Androidi seade oskab mängida Gomokut.

Kui põhiosa on realiseeritud, siis luua võimalus kasutajal mängida "arvuti" vastu.

  • Üks mängijates on kasutaja, teine mängija on arvuti.
  • Arvuti tugevus ei ole otseselt määrav (kuigi võiks olla natuke targem kui täiesti random - näiteks käib kasutaja nuppude lähedale).
    • Arvuti võiks osata takistada vastase 5 nuppu ritta saamist (näiteks proovib juba alates 2 kõrvuti nupu puhul takistada või vaatab ette, kas vastane saab järgmise käiguga võidu peale).
  • Mängu alustades (või kuskilt seadete alt) saab määrata, kumb mängijates on kasutaja ja kumb arvuti.
  • Võiks olla võimlik panna ka arvutid omavahel mängima.
  • Arvuti käigu mõtlemise pikkus ei tohiks ületada paari sekundit.

Kui otsustate selle valikulise lisaosa realiseerida, siis järgmise kodutöö (4. kodutöö, mis on Gomoku mängu strateegia kirjutamine) raames saate kirjutada oma arvuti mängijale paremad oskused. Selles valguses võiksite arvestada sellega, et mängija valik võiks koosneda ka mitmest erineva tugevusega arvuti AI-st. Näiteks saab valida mängijaks kas kasutaja, nõrk AI või tugev AI.

Valikuline lisaosa (5p) - kahe Androidi omavaheline mängimine

Kui põhiosa on realiseeritud, lisate võimaluse kahel Android-seadmel omavahel mängida. Seda osa võib teha ka kahekesi, kus põhiosa realisatsioon on tudengitel erinev, aga suhtlus kahe mängu vahel on kokku lepitud.

Kahe seadme omavaheliseks suhtlemiseks võib kasutada Bluetooth ühendust, võrguühendust. Võrguühenduse korral võite luua lihtsa "serveri" (näiteks dijkstra serverisse), kuhu saab saata käike ja sealt käike küsida. Näiteks võite vaadata võrgurakenduste ühe praktilise töö kirjeldust: http://lambda.ee/wiki/ITV0110_3._t%C3%B6%C3%B6:_Serverirakendus:_cgi_pythonis

Kui valite serverilahenduse, siis see hindamisele ei lähe. Seega, mis vahendeid te serveris kasutate, on teie enda asi. Võite luua andmebaasiga rakenduse, võite kirjutada andmeid vaid tekstifaili jne.

Selle lisaosa puhul peab saama mängu alustades (või kuskilt menüüst) valida, kas mäng käib ühe seadme peal või kahe seadme peal.

Valikuline lisaosa (5p) - mängude ajalugu, hi-score

Kõikide mängitud mängude ajalugu salvestatakse Android seadmesse. Kasutajal on võimalik vaadata statistikat mängude kohta: mitu mängu on mängitud, mitu korda on näiteks valge mängija võitnud, mitu viiki, mis on keskmine käikude arv võidu/viigi puhul jne.

Lisaks võiks salvestada maksimaalne järjestikuste võitute arv. Kui üks mängija võidab järjest rohkem mänge, kui seni on seda tehtud, siis märgitakse see üles. Näiteks alguses on 1 võidetud mäng juba "hi-score". Edasi tuleb võita vähemalt 2 mängu järjest, et uus hi-score määrata.

Eelmisi mängitud mänge on võimalik vaadata ja läbi mängida. Kasutaja saab valida ajaloost mõne mängu (kus on kirjas mängu toimumisaeg, käikude arv jms). Kui mäng on valitud, siis saab edasi-tagasi nuppudega vaadata seisu. Selleks võib siis kasutada põhiosas tehtud mängulauda, kus näiteks üleval/all ääres on nooled vasakule/paremale, mis vastavalt võtavad käigu tagasi või liiguvad käigu edasi.

Valikuline lisaosa (5p) - paku ise!

Kui mõni eelnevatest ei tundu piisavalt huvitav või tundub liiga keeruline, paku enda idee välja. Hea idee ise saab ka juba 1p boonust.

Materjale

  • Gomoku kohta:
  • Androidile arendamise kohta:
    • http://developer.android.com/sdk/index.html - Androidi ametlik veebileht, kus on väga palju häid materjale
    • https://docs.google.com/file/d/0BySJPpWnMYPZMS1BMVF0UlpsalE/edit?usp=sharing - 7. nädala loeng Androidile arendamise kohta
    • Mõned asjalikud raamatud:
      • Hello, Android: Introducing Google's Mobile Development Platform, Ed Burnette (2009). See on suhteliselt vana raamat, aga selles on väga hea näide Sudoku mängu kohta. Üldiselt põhiasjad on jäänud samaks, mõne asja realiseerimisel peaksite infot juurde otsima
      • Professional Android 4 Application Development, Reto Meier (2012). See on väga mahukas ja põhjalik raamat Android versioon 4 kohta.