Matopeli C#:lla Aram Abdulla Hassan Ammattiopisto Tavastia Opinnäytetyö Syksy 2014 1
Sisällysluettelo 1. Johdanto... 3 2. Projektin aihe: Matopeli C#:lla... 3 3. Projektissa käytetyt menetelmät ja työkalut ovat.... 3 3.1 Ohjelma mallinnus (UML). Tässä UML mallinnusta kerottaan miten peli on rakennettu ja pelin kaikki osa alueet ja välineet.... 4 3.2 Toteutustapa (spesifikaatio)... 5 3.3 Aikataulu... 5 4. Projektin kulku, toteutus ja testaus... 5 5. Loppupäätelmät... 24 Lähteet... 24 2
1. Johdanto Opinnäytetyöni aihe on matopeli. Matopelin toteutan Visual Studio 2012 - ohjelmalla. Ohjelmointikieli on C#. Tämä aihe on tuttu koska, ennen opinnäytetyötä olen tehnyt tämän kerran ja opinnäytetyönä toteutan sen uudestaan. Projektin toteuttamisen aikana tavoitteeni on se, että opin ja ymmärrän lisää koodausta ja koodin tulkkaamista. Eli siis harjoitus tekee mestarin. 2. Projektin aihe: Matopeli C#:lla Opinnäytetyöni aihe on matopelin tekeminen, matopelin tekeminen on mielestäni hauska ja haastava. Koodaamisessa pitää olla todella tarkkana ohjelmointikielen kanssa esim. jokin pilkku tai piste ei ole omalla paikallaan pitää pystyä miettimään mistä on kyse. Projektini aiheen valinnassa on ollut vähän ongelmia, koska muutaman kerran olen joutunut vaihtamaan projektin aihetta. Kotonakin olen katsonut video-ohjetta, siitä on ollut paljon apua. Olen miettinyt projektin etenemistä jo etukäteen, en ole jättänyt opinnäyte-työtä pelkästään koulutunneille vaan kotonakin olen tehnyt töitä. 3. Projektissa käytetyt menetelmät ja työkalut. Projektissa käytettyjä ohjelmia olivat Visual Studio 2012, kuvakaappaustyökalu, Word, Visio sekä Photoshop. 3
3.1 Ohjelma mallinnus (UML) s UML-mallinnus kertoo miten peli on rakennettu ja mistä osa-alueista ohjelma koostuu. Ohjelmointi ympäristö Visual Studio 2012 Koodaus Luodaan erilaisia lomakkeita ja kirjoitetaan tarvittavat koodit Testaus Välillä suoritetaan testauksia, koska halutaan varmistaa projektin kulku ja eteneminen Dokumentointti Kuvakaappaustyökalu Word ja Visio Matopelin Suunnittelu Pelin toiminta Tavoitteena pelissä on madon syödä laatikoita, joista saa pisteitä ja aina madon osuessa laatikosta ohi madon nopeus ja pituus kasvaa, joka tuo lisää haastavuutta. Pelin ohjattavuus Peliä ohjataan näppäimistöllä. Ohjauskomennot annetaan madolle nuolinäppäimistöllä. Toimivuus Madot liikkuvat halutulla tavalla sekä pelin toimivuus ja rakenne ovat kunnossa. Tavoite Tavoite on, että pelistä tulee toimiva kokonaisuus ja peli toimii ilman mitään puutteita.. 4
3.2 Toteutustapa (spesifikaatio) Peliä voi ohjata näppäimistön avulla ylös, alas, oikealle ja vasemmalle. Peli jatkuu niin kauan, kunnes mato osuu reunaan tai mato on kasvanut niin isoksi, että se törmää itseensä. Mitä pidemmälle etenet sitä nopeammaksi pelin nopeus kasvaa, joka tekee omalta osaltaan haastavaa. Pelin päättyessä matopeli ilmoittaa sinun äskeisen tuloksesi ja halutessasi pelata uuden peli tulee sinun painaa enter-näppäintä. Lisätietoja halutessasi paina vasemmasta yläkulmasta File ja sen jälkeen About, jolloin ohjelma ilmoittaa pelin version ja tekijän. Ohjelman sulkeminen suoritetaan painamalla samasta valikosta Exit eli poistu. 3.3 Aikataulu Projekti on alkanut toukokuussa 2014, ja se valmistui syyskuussa 2014. 4. Projektin kulku, toteutus ja testaus Projektin alkuvaiheessa olen ottanut kuvakaappauksia jokaisesta kohdasta ja olen kertonut mitä kuvassa tapahtuu. Projektissa olen luonut uusia lomakkeita ja uusia luokkia, kuvakaappauksia olen osittain selittänyt miten koodi toimii. 5
Kuva 1. Alussa luodaan uusi projekti. Kuva 2. Valitaan visual c#, windows forms applicaitions sekä projektin tallennuspaikka. Projektille annetaan nimeksi Snake. 6
Kuva 3. Painetaan ok-painiketta. Kuva 4. Ohjelma aukea tyhjä lomake (form). 7
Kuva 5. Tässä on koodin alkuvaihe. Kuva 6. Toolboxista valitaan picturebox, mikä viedään lomakkeen sisälle. 8
Kuva 7. Tässä valitaan kuvalaatikon taustaväri. Kuva 8. Tässä muutetaan laatikon kokoa. 9
Kuva 9. Tässä valitaan madon asetuksia. Kuva 10. Tässä muutetaan pelin nimeksi snake. 10
Kuva 11. Testissä on virheitä, yritän korjata. Kuva 12. laatikon pohja on valmis. 11
Kuva 13. Luodaan valikkoja. Kuva 14. Tässä lisätään kaksi nappia, Exit sulkee pelin ja about antaa tietoja pelistä esim. version ja pelin tekijän. 12
Kuva 15. Tässä lisään uusi Windows form lomake ja annan sille nimeksi About.cs Kuva 16. Kun about-lomake on luotu, päästään muokkaaman sitä ohjeen mukaisesti. 13
Kuva 17. Tässä on ihan ensimmäinen koodin ajaminen. Kuva 18. Luodaan uusi luokka. 14
Kuva 19. Kun painataan class avautuu tallainen näkymä. Kuva 20. Luokan nimi on Input. 15
Kuva 21. Tässä on Inputin koodi alussa. Kuva 22. Lisätään uusi luokka ja annetaan sen nimeksi SnakePart. 16
Kuva 23. Tässä näkyvät kaikki lomakkeet ja luokat. Kuva 24. Tämä koodi määrittelee pelin sulkemista. Kuva 25. Tässä koodissa kerrotaan pelin versio ja pelin tekijä. 17
Kuva 26. Tässä lisätään kuva laatikkon. Kuva 27. Tässä haetaan kuva. 18
Kuva 28. Toolbox Labelilla lisätään tekijän nimi ja version tiedot. Kuva 29. Muokataan tekstin koko ja värit. 19
Kuva 30. Pelin versio ja tekijän nimi ovat valmiina. Kuva 31. Tämä koodi kerto sitä kun peli loppuu, Enter aloitta uuden pelin. Kuva 32. Tässä koodi määrittelee madon väriä. 20
Kuva 33. Tässä koodissa saa muokata tekstin värit ja koot. Kuva 34. Peli on valmis. 21
Kuva 35. Nyt madot ovat näkyvissä. Kuva 36. Olen vaihtanut taustavärin. 22
Kuva 37. Alkuperäisessä pelissä on omanlainen iconi. Kuva 38. Nyt laitoin uuden iconin. 23
Tässä on lopputulos. Testaus Välillä olen testannut peliä, koska halusin nähdä miten projekti etenee. Samuel Tunturi on testannut ja tässä on hänen Kommenttinsa: Ohjelma toimii kaikin puolin moitteettomasti ja en löydä ohjelmasta puutteita. Käyttömukavuus on hyvä. Ulkoasu on, myös hieno. 5. Loppupäätelmät Projekti sujui ihan hyvin. Välillä on ollut vaikeuksia ja hankaluuksia koodin kanssa. Sen vuoksi olen joutunut tutkimaan asioita enemmän ja tarkemmin. Tämä on hyvä juttu koska olen oppinut paljon uutta virheiden kautta. Olen hyvin tyytyväinen mitä olen saanut aikaiseksi. Lähteet - http://www.youtube.com/watch?v=xueik587jio 24