reede, 23. jaanuar 2015

SmartChess 1.0 juhend

Sätete menüüst:
Nuppude ostmine - selle välja lülitamisel saab mängida tavalist malet.
Lippude ostmine - näitab, kas lippe saab osta
Nuppude asetamine - Nuppude ülendamine: ostetud nuppe saab paigutada enda nuppude peale. Tagumine rida: Ostetud nuppe saab paigutada ainult oma poole tagumise rea vabale ruudule. Mõlemad: saab paigutada mõlemat viisi.
Tuli: Määrab, kas kontrollitakse ja näidatakse tuld.
Etturi väärtus: Määrab ära kõigi nuppude ostmise hinna. (ratsu, oda - 3*EV; vanker - 5*EV; lipp - 9*EV)

Mängus:
Üleval paremal saab pausele mängu panna, alla anda ja käiku näha.
Selle alt saab nuppe ostmisel valida ja tehteid lahendada.
All paremal näeb tuld, aega ja punkte.

Käimiseks peab valima hiirega nupu (vasaku klikiga) ja valima sihtruudu (samuti vasaku klikiga). Pärast nupu valimist kuid enne käimist saab valiku tagasi võtta parema kliki või escape nupuga. Pärast nupu ostmist küsitakse nuppu, mida tahetakse osta. Ainult ühe nupu saab käigus osta. Kui ei soovita nuppu osta, peab vajutama escape nuppu. Esimesel käigul ei saa valge ülesandeid lahendada. Järgnevatel käikudel tulevad pärast nupu ostmist tehted. Numbrinuppe saab kasutada vastuse sisestamiseks. Enteriga saab saata oma vastuse. Õige vastus annab 1 punkti, vale vastuse eest kaotatakse 1 punkt. Iga käigu vahepeal on aega, kus saab teine mängija klaviatuuri ja hiire üle võtta.

kolmapäev, 21. jaanuar 2015

Smartchess 1.0

Jõudsime valmis mängitava PyGame'i versiooniga. http://pastebin.com/T2cGz8SP
Mängu mängimiseks on vaja kogu folderit, Pythonit ja Pygame'i



See oli meie esimene programm PyGame'is. Uus versioon kasutab programmiväliseid pilte, seekord pole programm vaid üks fail. Nii saab graafikat uuendada piltide kaustas muutmisega, ei pea koodi sisse ronima. Kuna see vajab oma kausta ja mitut faili niikuinii, siis nüüd programm ka salvestab oma sätted tekstifaili. Hetkel saab muuta resolutsiooni (soovitatav on keskmise peal mängida, teistel on graafika kas kokku pressitud või välja venitatud), nuppude ostmist üleüldiselt (kui väljas siis on tavaline male), lippude ostmist, nuppude asetamist ostmisel, tule kontrollimist ja etturi väärtust.

Tagantjärele tarkusega oleks võinud kodeerida mängutsüklit palju pareminim praegu on pausi peale panek ja allaandmine piiratud peaaegu ainult käimise ajale (kuid selle saab parandada).

Veel asju, mis võiks paremaks teha: valida font, mille tähemärgid on sama suured, et joonistatud tekst ei hüppaks ringi kogu aeg (märgatav 7 puhul kui taimerit vaadata); paremad nupud/menüüd; üle viia nupud .png piltidele (hetkel on need PyGame'is endas joonistatud), siis saab neid kasutada ka ostmise piltidena (Ma ei ole kindel, kuidas piltides nähtamatus töötab PyGame'is, kuid arvatavasti ei ole PyGame'is ainult nelinurksed sprite'id); lisada helid; lisada menüüdele nuppe juurde (nt oleks vist parem, kui saaks lahkuda mängust mängusiseselt, hetkel saab seda teha vaid operatsioonisüsteemi poolt antud käskudega).

Sätete lugemisel õppisin sõnastiku andmemassiivi hindama. Lugemine tuli keeruline, kui tahtsin midagi sellist, millele võiks teisi sätteid juurde kirjutada nii, et ei peaks kogu koodi ümber kirjutama. Kui tekstifailis on sätted kirjas valemiga "x = y", kus x on sätte nimi (nt "check") ja y on sätte väärtus (nt "True") siis saab lihtsalt need splittida ja tekitada sõnastikus muutuja nimega x väärtusega y (booleanide jaoks oli vaja kirjutada funktsioon, mis muutis stringid booleaniks) ja hiljem kui vaja kontrollida millegi väärtust sai kasutada y leidmiseks options[x].