Tietokoneen toiminta syksy -99

Ohjelmointiharjoitus

Muistipeli

Muistipelissä on n kappaletta korttipareja, jotka on sekoitettu ja asetettu kuvapuoli alaspäin pöydälle neliön tai suorakaiteen muotoon. Tehtävänä on löytää korttiparit nurin käännetyistä ja sekoitetuista korteista. Pelaaja saa kerrallaan kääntää kaksi korttia. Jos kortit ovat pari eli niissä on sama kuvio, niin pari poistetaan pöydästä. Jos kortit taas ovat eriparia, niin ne käännetään takaisin paikalleen kuvapuoli piilossa. Peli jatkuu niin kauan kunnes pelaaja on löytänyt kaikki korttiparit. Miten vähemmän yrityksiä pelaaja on tarvinnut korttiparien löytämiseen, sitä paremmin hän on onnistunut pelissä.

Laadi TTK-91-konekieliohjelma, jolla voit pelata muistipeliä. Korttien kuvia vastaavat numerot 1-n ja parin muodostavat samannumeroiset kortit. Numerot sekoitetaan taulukkoon ja pelaaja kertoo, minkä kortin eli taulukon indeksin hän kulloinkin valitsee. Sekoitukseen voit käyttää apuna TIME-funktion palauttamia arvoja (tunnit, minuutit ja sekunnit). Sekoituksen ei tarvitse olla kovin satunnaista. Riittää, että pelaaja ei suoraan tiedä korttien järjestystä. Peli päättyy, kun pelaaja on löytänyt kaikki parit tai kun pelaaja haluaa keskeyttää pelin. Lopuksi ohjelma kertoo, kuinka hyvin pelaaja on onnistunut löytämään parit, esimerkiksi ilmoittamalla yritysten määrän tai keskimääräisten yritysten määrän löydettyä paria kohden.

Täydet pisteet saa vain ohjelmasta, joka on testattu ja ajettu työssä on joka tapauksessa otettava huomioon Koksi-simulaattorin asettamat rajoitukset, joista olennaisimmat ovat 512 tavun keskusmuistitila ja DS/DC-tilanvarausten sekä muiden symbolien enimmäismäärä 50.

Koksi-simulaattori on käytettävissä salin D427 koneissa, Windows-puolella.



Computer Systems Organization Autumn -99

Optional TTK-91 Assembly Language Programming Assignment
English summary

The task is to carefully design and code a program that can play the memory game. In the memory game there are n pairs of cards that are turned upside down, mixed and arranged in rows and columns. The player tries to find pairs of cards by picking two cards and turning them. If the chosen cards form a pair, they are removed from the table, if not they are turned back to their place. The game ends when all the pairs are found and there are no more cards on the table. The aim is to find the pairs with as few trials as possible.

In your assembly program you use pairs of numbers (1-n) that are stored in an array. For mixing the number pairs you can use the TIME function. The player gives the index of the card, he wants to pick up. The game ends when the player has found all the pairs or when the player wants to stop. At the end the program informs how well the player has succeeded in finding the pairs by giving e.g. the amount of trials or average number of trials per found pair.

The excercise (some documentation and easy-to-read TTK-91 assembly code) is worth max. 3 extra course points and it shall be finished by December 10th 12 pm.. Please contact Liisa Marttinen if you are planning to do the assignment.