Viikkotehtävä 2
Kaikille tasoille yhteiset vaatimukset:
- Tehtävät on toteutettava python-ohjelmointikielellä CGI-ohjelmina.
- Koodin oleelliset osat on oltava kommentoitu.
- Sivujen sisältämä XHTML-koodi tulee olla validia XHTML 1.0 strictia.
- Sivun ulkoasumuotoilut on tehtävä CSS:ää käyttäen. CSS:n on oltava myös validia CSS2:sta.
- Sivun ulkoasu tulee olla layoutin osalta suunnilleen mallikuvien mukainen. Värit sen sijaan saa päättää itse.
- Ainoat sallitut Python-kirjastot ovat cgi, random ja cgitb
Taso 1
- Tee python-sivu, joka toimii satunnaisen taulukon arpojana. Katso mallikuva: taso1.png.
- Ohjeita:
- Arvotaan siis 25 numeroa väliltä 1-100.
- Taulukossa ei saa olla kahta samaa numeroa.
Taso 3
- Tee python-sivu, joka toimii taulukon arpojana. Katso mallikuvat: taso3.png, taso3a.png
- Ohjeita:
- Ensin käyttäjä syöttää asetukset eli taulukon leveyden, korkeuden ja numeroiden arvontavälin. Mallikuva. Käytetty lomake saa olla erillinen staattinen sivu. Tulos esitetään samaan tapaan kuin taso 1 -tehtävässä. kts. Mallikuva2
- Taulukossa saa esiintyä sama numero useamman kerran jos arvontaväli on pienempi, kuin taulukkoon mahtuvien numeroiden lukumäärä.
- Sama numero saa esiintyä useamman kerran kuitenkin vasta sitten, kun kaikki arvontavälin numerot esiintyvät taulukossa vähintään kerran.
- Sama numero ei saa esiintyä taulukossa useammin kuin pakollisen minimimäärän.
Esim. Jos taulukkoon mahtuu 30 numeroa, mutta arvontaväli sisältää vain 20 numeroa, niin kaikki 20 numeroa esiintyvät taulukossa vähintään kerran ja 10 numeroa esiintyy kaksi kertaa. Mikään numero ei siis esiinny taulukossa kolmea tai useampaa kertaa.
- Arvontavälin ollessa tarpeeksi suuri ei sama numero saa esiintyä useampaan kertaan.
Taso 5
- Tee python-sivu, joka toimii muistipelinä. Katso mallikuvat: taso3.png, taso5a.png, taso5b.png ja taso5c.png.
- Ohjeita:
- Sovellus toimii seuraavasti:
- Ensin käyttäjä syöttää muistipelin asetukset eli taulukon leveyden, korkeuden ja numeroiden arvontavälin. Mallikuva. Käytetty lomake saa olla erillinen staattinen sivu.
- Seuraavaksi käyttäjä näkee arvotun muistipelitaulukon, joka toteutetaan tason 3 vaatimusten mukaan. Mallikuva
- Kolmannessa vaiheessa käyttäjälle näytetään taulukko lomakkeena ja hän yrittää muistaa edellä näkemänsä taulukon sisällön. Mallikuva tyhjästä lomakkeesta, Mallikuva täytetystä lomakkeesta
- Tulossivulla näytetään sekä käyttäjän syöttämät numerot, että alkuperäisessä taulukossa olleet numerot. Käyttäjän syöttämistä numeroista korostetaan oikeat numerot (oikea numero oikeassa solussa!). Sivun lopussa kerrotaan oikein muistettujan lukujen lukumäärä / koko taulukon lukujen lukumäärä. Mallikuva
- Kaikki ohjelman vaiheet ensimmäistä lomaketta lukuunottamatta tapahtuvat samassa osoitteessa eli samalla WWW-sivulla
- Käyttäjän syötteitä ei tarvitse tarkistaa mitenkään, eli riittää, että sovellus toimii oikein silloin, kun käyttäjän syöte on järkevä. Tarkistuksien tekeminen ja sovelluksen toimiminen myös virhesyötteiden kanssa ei toki haittaa.
- Vinkki: Koska lomakkeen täyttäminen on monivaiheinen eikä tallennustekniikoita (sessiot yms.) saa käyttää, täytyy käyttäjän syöttämiä asetuksia ja arvottua taulukkoa kuljettaa lomakkeella mukana viimeiseen vaiheeseen asti, jotta silloin osataan kertoa oikea tulos. Mukana kuljettaminen onnistuu lomakkeen hidden-kenttien avulla.
- Sovellus toimii seuraavasti:
Käyttäjien kommentit
En pysty ymmärtämään tason 5 vaatimusta "sovelluksen on toimittava samalla WWW-sivulla" kuin siten, että selain ei sovelluksen vaiheiden aikana lataa uutta sivua. Eli logiikka pitäisi saada selaimeen tekemällä sovellus kokonaan Javascriptillä tai päivittämällä käyttöliittymä AJAXilla. Vai kuinka? Jos sovelluksen halutaan toimivan samassa URLissa eri vaiheiden ajan, kuten oletan, se mielestäni tarkoittaa eri asiaa kuin tuo "sama WWW-sivu".
Jaahas, saan harjoitella sisälukua hieman. Selvästihän tuossa sanotaan kohdassa 4. että samassa osoitteessa eli samalla WWW-sivulla.