Aloittelevan koodarin on usein vaikeaa keksiä mitä koodaisi. Minulta on usein kysytty ideoita, mitä voisi ohjelmoida. Kokosin tähän kirjoitukseen eri tasoisia moneen ohjelmointiympäristöön soveltuvia ideoita. En paljasta aivan kaikkea harjoitusten toteutuksesta, vaan annan vain vinkkejä ohjelmien algoritmeista. Tavalliset ohjelmointiharjoitukset eivät mene hukkaan, koska koodausrutiinin hankkiminen on tärkeää.
Helppoja perusharjoituksia
Tästä vaikkapa pakollisen ohjelmointikurssin harjoitustyöksi, jos et ole sen kummemmin kiinnostunut koodaamisesta:
Painoindeksin laskeminen
Painoindeksin laskemiseksi kysytään käyttäjältä paino ja pituus, jonka jälkeen painoindeksi kerrotaan käyttäjälle. Ohjelmaa voi kehittää vaikkapa kysymään käyttäjän nimen ja ilmoittamaan mihin painoluokkaan käyttäjä kuuluu tyyliin “Lauri, painoindeksisi on 26,7, olet lievästi ylipainoinen. Sinun tulisi laihduttaa 4,3 kg päästäksesi normaalipainoon“. Konsoliohjelma toimii while- tai do-while -silmukassa, lopuksi kysytään yritetäänkö uudestaan.
Laskin
Silmukassa toimiva nelilaskin kysyy käyttäjältä kaksi lukua ja niille tehtävän operaation. Tästä voi kehittää vaikka pelin, jossa laskettavat luvut arvotaan ja käyttäjältä kysytään vastaus laskutoimitukseen.
Pientä kivaa
Tässä pientä kivaa vaikkapa nettisivuille. Nämäkin voivat onnistua aivan aloittelijaltakin.
Intiaanimigeneraattori
Intiaaninimigeneraattorin tekemiseksi joudut keksimään joukon intiaaninimiä, jotka tallennat ohjelmakoodissa taulukkoon tai laitat tekstitiedostoon. Generaattorin saat toimimaan siten, että kysyt käyttäjän nimen ja lasket sen merkeistä luvun esimerkiksi laskemalla merkkien ascii arvot yhteen. Saadusta luvusta otetaan jakojäännös keksittyjen nimien lukumäärällä. Jakojäännöstä käytetään nimitaulukon indeksinä. Toteutin tallaisen kerran php:llä, löydät sen täältä.
Puppulausegeneraattori
Puppulausegeneraattorin saat ohjelmoitua laittamalla virkkeiden pätkiä esimerkiksi kolmeen taulukkoon. Yhteen taulukkoon tulee virkkeen alkuosaksi sopivia, toiseen keskelle ja kolmanteen loppuosaksi sopivia pätkiä. Arpomalla taulukoista satunnaisen virkkeen alun, keskiosan ja lopun saat hassunkurisia lauseita.
Pieniä pelejä
Pienten pelien ohjelmointi on mukavaa. Näiden tekemiseksi on parasta perehtyä jonkilaisen grafiikan tuottamiseen, vaikka toki nämä merkkipohjaisinakin voi toteuttaa. Itse opettelin ohjelmoimaan tällaisia pelejä tehden. Pieniä pelejä ohjelmoidessa voi harjoitella dynaamista muistinhallintaa, säikeistystä, olio-ohjelmointia, tiedostonkäsittelyä esimerkiksi tuloslistan tallennuksessa ja erilaisia aikalaskureita. Kunnollisen tykkipelin pelaaminen kaksinpelinä verkon yli on varmasti mukavaa.
Hirsipuu
Hirsipuun toteutukseen tarvit luonnollisesti arvattavia sanoja. Pelin runkona on silmukka, joka loppuu kun sana on arvattu tai vääriä arvauksia on liikaa. Hirsipuun ja siinä roikkuvan ukkelin piirtäminen kannattaa tehdä erilliseen funktioon, jolle välitetään väärien arvausten määrä. Näitä tietoja on hyvä pitää tallessa pelin edetessä:
- Väärien arvausten lukumäärä – tarvitaan pelin loppumisen tunnistamiseksi ja hirsipuun piirtämiseen.
- Väärin arvatut kirjaimet – ei kahta virhepistettä samasta kirjaimesta
- Pelitilanteen voi tallentaa merkkijonoon, jossa kaikki arvot alustetaan esimerksi _-merkillä ja korvataan pelin edetessä arvatulla kirjaimella. Kun _-merkkejä ei enää ole, sana on arvattu.
Matopeli
Matopelin mato on helpoin tehdä osista. Jokaisen osan koordinaatit ovat tallessa taulukossa. Mato etenee siten, että etuosalle luodaan uusi koordinaatti ja viimeinen osa madosta tuhotaan. Omenan koordinaatit ovat myös tallessa. Uuden koordinaation kohdalle tehdään törmäystarkistus, eli tarkistetaan, että koordinaattien kohdalla ei ole seinä, eikä madon häntä. Omenan sattuessa kohdalle mato jatkaa kulkuaan siten, että viimeistä osaa ei hetkeen tuhota, eli madon häntä jää paikoilleen.
Matopelin, jossa mato kääntyy 90 asteen käännösten sijaan loivasti, tekemiseksi sinun täytyy palautella mieleen hieman trigonometriaa. Mato tehdään samoin taulukkoon kuten edellinenkin, mutta törmäystarkistuksissa joudutaan käyttämään pythagoraan lausetta etäisyyslaskentaan. Madon suunnan x- ja y-komponentit muuttuvat siten, että niiden nopeus pysyy vakiona suunnasta huolimatta.
Matopelejä olen tehnyt moneen eri ympäristöön alkaen TexasInstrumentsin graafisesta laskimesta. Kerran tekaisin koulukaverin kanssa JavaApplettiin hieman perinteisestä matopelistä poikkeavan toteutuksen. Löydät sen täältä.
Tykkipeli
Tykkipelissä kaksi tykkiä ampuvat toisia. Väliin on hyvä tehdä esteeksi maastoa, ettei suorasuuntaus onnistu. Ammuntaa säädetään lähtökulman- ja nopeuden avulla. Tuuli otetaan myös huomioon. Tykkipelin tekemiseksi joudut palauttelemaan hieman mieliin fysiikan lakeja. Sen verran annan vinkkiä, että putoamiskiihtyvyys on vakio ja tuulikomponentti vaikuttaa ammuksen x-suuntaiseen nopeuteen.


Viimeisimmät kommentit