To: ohj2e@cs.tut.fi Subject: Jyri: Harjoitustyö, HakkeriPeli-luokasta Hei, Välipalautustilaisuudessa ehdotit HakkeriPeli-luokan muuttamista moduuliksi sekä Hakkereihin viittaamista osoittimilla. Pohdittuani toteutusta olen todennut jälkimmäisen hyväksi parannukseksi, sillä se yksinkertaistaa ohjelman rakennetta merkittävästi. HakkeriPeli-luokka olisi tosiaan välipalautuksessa esittämässäni muodossa kelvannut jokseenkin hyvin myös moduuliksi. Tässä on vain joitakin ärsyttäviä puolia, kuten jo luettujen hakkeriryhmien sekä asetusten välittäminen lueHakkeriryhma-funktiolle. Tällaiset parametrit välittyisivät mielestäni selkeämmin olion jäsenmuuttujien kautta. Käsittääkseni myös näitä voi pitää jonkinlaisena tilana, olkootkin että se muuttuu vain pelin alussa. Suurempi syy HakkeriPeli-luokan säilyttämiseen ilmeni kuitenkin pohtiessani osoittimilla viitattujen Hakkeri-olioiden luomista. Jossain mainittu suositus ja myös ihan yleistajuisesti hyvä tapahan on, että dynaamisesti luotujen olioiden omistus säilyy samassa ohjelman osassa. Moduulissa tämä tarkoittaisi käytännössä ylimääräisen vapautusfunktion luomista, jota pitäisi kutsua myös virhetilanteissa. Saman asian voisi tehdä mielestäni järkevämmin HakkeriPelin purkajassa. Taidan myös toteuttaa vuorot perinteisemmin vektorilla ja vuorossa olevan hakkerin/ryhmän indeksillä, koska pakan kiertäminen aiheuttaa turhaa monimutkaisuutta tulostukseen. Pienenä tyyliseikkana nämäkin olisi mukavampi säilyttää samassa paikassa oliossa eikä välittää erillisinä parametreina. Haluaisin myös sittenkin toteutaRivi-funktion palauttaman totuusarvon sijasta toteuttaa pelin lopettamisen toisin. Kaikki lopetustilanteet saisi käsiteltyä samalla tavalla lisäämällä HakkeriPeli-luokkaan jäsenmuuttujan bool kaynnissa_; ja jäsenfunktion lopetaPeli. Moduulin tapauksessa tämä ei järkevästi onnistu. Olen samaa mieltä siitä, että asetusten lukeminen ja pelitilanne ovat selkeästi erilliset kokonaisuudet. Mielestäni ne voisivat kuitenkin olla ainakin samassa moduulissa, jolloin myöskään pääohjelma ei kasva kovin pitkäksi ja asetustiedostojen luku on helpommin uudelleenkäytettävissä. Tarvetta asetusten eriyttämiselle omaksi moduulikseen ei liene. Erillinen YleisAsetukset-struct lienee silti hyvä ratkaisu, sillä näin välttyy lyhyiden hae-funktioiden kirjoittamiselta. Tämän tallentaisin kuitenkin HakkeriPelin sisälle ja luultavasti myös asetustiedoston luku olisi HakkeriPelin jäsenfunktio. Struct näkyisi moduulin ulkopuolelle siis vain Hakkerin rakentajalle välitetyssä vakioviitteissä. YleisAsetukset-rakenteen määrittelisin Hakkeri-luokan yhteydessä, jolloin ristiviittaus HakkeriPelin ja Hakkerin välillä poistuu. Lähinnä omasta mielenkiinnostani olen pohtinut AI-toteutusta. Luokkaratkaisu lyhyellä pääohjelmalla olisi alustavan suunnitteluni perusteella huomattavasti helpompi mukauttaa tähän. Mielestäni myös tämä kertoo jotain kokonaisratkaisun moduulijaon onnistumisesta ja uudelleenkäytettävyydestä. Yhteenvetona kysyisin siis, onko HakkeriPeli-luokan poistaminen mielestäsi väistämättä järkevin vaihtoehto, vai saanko käyttää omaa harkintaani tässä? Terveisin, Petteri Aimonen petteri.aimonen@tut.fi 205441 / aimonen