Giter Site home page Giter Site logo

jmtetra's Introduction

jmtetra's People

Watchers

James Cloos avatar Mikko Laitinen avatar

jmtetra's Issues

Koodikatselmointi..

..versiolle 201702151722

Tähänhän jää koukkuun! Varoitan jo etukäteen, että käytän käsitteitä tetromino ja pala sujuvasti synonyymeinä, vaikka oletkin käsitteellistänyt palan tetrominon osaksi (ja tämä on ihan oikein).

Ohjelmoinnin perusteet, Ohjelmoinnin jatko- sekä Ohjelmistotekniikan menetelmät -kursseilla opitut hyvät käytänteet sekä Clean code -periaatteet

Yleensäkin koodi on hyvin jäsenneltyä (pakkaukset) sekä luokat, muuttujat ja metodit hyvin nimetty lukemista helpottamaan. Lisäksi this- ja super-avainsanojen käyttö auttavat tässä. Mielestäni perintää ja toteuttamista on käytetty tarkoituksenmukaisesti. Erityisen mielekästä on lukea javadocitettuja käyttöliittymäluokkia.

Tetrominojen createRotations-metodeissa if-ketjun voisi korvata if..elseif-ketjulla. Jokaisella Tetronome-ilmentymällä kun on vain yksi rotation-arvo kullakin hetkellä. Vähän vastaavasti voisi menetellä InputListener-luokan keyPressed-metodissa.

Koodissa ei ole havaittavissa merkittäviä koodihajuja. Mainittakoon kuitenkin Tetronome-luokan perillisissä toistuvat updateXCords-metodit, jotka vaikuttavat kömpelöiltä. En kyllä keksi tähän parannusehdotusta...

Raportit paljastavat testien kattavuuden. Testit on nimetty kuvaavasti ja testaavat pääasiassa yhtä asiaa/kokonaisuutta kerrallaa. testBoard-taulukot ja assertArrayEquals havainnollistavat testattavissa olevaa ominaisuutta.

Pikkujuttna: Luokkien JavaDocien @author-tunnisteessa on välillä Mikko, välillä mikko ja joskus laimikko. Yhdellä luokalla ei ole @author-tunnistetta. Sama henkilö kun lienee kyseessä, olisi johdonmukaista käyttää samaa nimimerkkiä kaikkialla.

Ohjelman dokumentointi, ulkonäkö ja toimivuus (eli ylimääräistä)

Pelin päättyessä peli loppuu kuin seinään. Tähän tullee jokin JoptionPane.showMessageDialog lyhyellä ”Game over”-viestillä ja ”New game”-painikkeella.

Koin painikevalinnat hieman epäintuitiivisiksi, mikä johtunee pitkästä tetris-tauosta; viimeisintä pelaamaani toteutusta pelattiin pelkästään nuolinäppäimillä – ja seuraavaksi arvottu pala näytettiin etukäteen. Kuitenkin loppujen lopuksi putoamisen kiihdyttäminen alas-painikkeella ja pudottaminen välilyönnillä on hyvä idea. Pudottaminen ei lukitse palan paikkaa sivusuunnassa, vaan palaa pystyy vielä siirtämään sivusuunnassa välilyönnin painamisen jälkeen! Tämä lienee korjattu viimeisimmästä koodikatselmoinnista?

Hieman häiritsee, että esimerkiksi I-tetrominoa ei pysty kääntämään ennen kuin se on pudonnut tarpeeksi, tai siis ennen kuin palalla on tarpeeksi tilaa kääntyä. Tämä tosin taitaa olla ”by design”. I-tetrominoon liittyen, jos palan pudotessa pala käännetään pitkittäin, siirretään pelialueen laitaan ja painetaan kiertopainike pohjaan, pala alkaa välkkyä, mikä luo illuusion palan liikkumisesta ylöspäin. Tämä tosin lienee vain kosmeettinen seikka eikä sillä ole itse pelin kannalta mitään merkitystä.


Odotan innolla pisteytysjärjestelmän implementointia. Pisteytysmenetelmiä kun on niin monia mistä valita…

Koodikatselmointi

Jmtetra-master ladattu 5.2.2017 17:17

Pelin perusmekaniikka toimii kuten pitääkin siltä osin mitä koodattu. Lisää ominaisuuksia tullee ajan myötä, mutta tähän astisessa työssä ei ole moitteita.

  • Koodi on selkeää ja helposti ymmärrettävissä ilman kommenttejakin.
  • Metodit pidetty lyhyinä ja nimeäminen luontevaa
  • Raportointi täyttää kaikki kriteerit (niin oma kuin generoidut raportit)
  • Testiluokat kattavia
  • Pelaillessa harmitti vain palikan osuessa lattiaan palikkaa ei voinut enää liikuttaa yhtäkään pykälää, vaikka tilaa olisi ollut

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.