/**************/ /* laskurih.c */ /****************************************************************************/ /* ** Ohjelma, jolla voidaan laskea autojen lukum„„ri„. ** ** ** Toimii sellaisenaan en„„ vain TURBO-C tai BORLAND-C k„„nt„j„n alla. ** ** N„ytt” muutettu graafisemman n„k”iseksi ja n„yt”n osien ** hallintaa on parannettu. ** N„pp„imet ja laskurit ovat taulukoissa, jotka loppuvat loppu ** n„pp„imeen ja laskuriin (tunnus, yleens„ 0). ** N„pp„imet siirretty omaksi kirjastokseen, johon ** Hiirituki lis„tty. ** ** Ohjelman k„„nt„miseksi tarvitaan projekti, jossa on ** LASKURIH.C ** NAPPULAT.C ** HIIRU.C ** ** Vesa Lappalainen ** 1.8.1992 ** ** Teht„vi„: 1) Lis„„ ohjelmaan polkupy”rien laskeminen. ** Moneenko kohtaan tulee muutos? ** 2) Muuta ohjelmaa siten, ett„ my”s laskurin n„yt”n painaminen ** lis„„ laskurin arvoa. Montako muutosta? ** 3) Lis„„ ohjelmaan HELP-n„pp„in, joka kertoo tietoja ohjelmasta ** Helpist„ pois painamalla ESC! ** 4) Muuta hiiren toimintaa siten, ett„ hiiren n„pp„imen painaminen ** vaihtaa nappulan v„rin ja vasta yl”s p„„st„minen palauttaa ** komennon. Jos hiiri vied„„n pois nappulan p„„lt„ ** ennen yl”sp„„st„mist„, komentoa ei huolita. ** ** */ /****************************************************************************/ #include #include "nappulat.h" /****************************************************************************/ /* Globaalit n„pp„imet: */ typedef enum { /* Tunnetut komennot: */ TYHJA, /* Lopun tunniste */ POISTU, NOLLAA, LISAA } komento_tyyppi; typedef enum { /* K„ytetyt laskurityypit ja niiden tunnisteet */ TYHJA_LASKURI, /* Lopun tunniste */ HENKILOAUTOJA, KUORMA_AUTOJA } laskuri_tunniste_tyyppi; nappain_tyyppi nappaimet[] = { /* x y lev kork */ { 'X',"eXit" ,{{ 2, 2},{ 0, 0}}, POISTU , 0 }, { 'N',"Nollaa" ,{{30,13},{ 0, 0}}, NOLLAA , 0 }, { 'H',"Henkil”autoja" ,{{13, 5},{ 0, 0}}, LISAA , HENKILOAUTOJA }, { 'K',"Kuorma-autoja" ,{{38, 5},{ 0, 0}}, LISAA , KUORMA_AUTOJA }, { 0 ,NULL ,{{ 0, 0},{ 0, 0}}, TYHJA , 0 } }; /****************************************************************************/ /* Globaalit laskurit: */ laskuri_tyyppi laskurit[] = { /* x y lev kork */ { HENKILOAUTOJA, 0 , "%19ld ",{{10, 8},{20, 1}} }, { KUORMA_AUTOJA, 0 , "%19ld ",{{35, 8},{20, 1}} }, { TYHJA_LASKURI, 0 , NULL ,{{ 0, 0},{ 0, 0}} } }; /****************************************************************************/ int laske(nappain_tyyppi *nappaimet,laskuri_tyyppi *laskurit) { komento_tyyppi komento; int lisa_viesti; while (1) { komento = lue_komento(nappaimet,laskurit,&lisa_viesti); switch (komento) { case LISAA : lisaa_laskuria(laskurit,lisa_viesti); break; case NOLLAA : nollaa_laskurit(laskurit); break; case POISTU : return 0; } } } /****************************************************************************/ void piirra_naytto(nappain_tyyppi *nappaimet,laskuri_tyyppi *laskurit) { int i; tyhjenna_ruutu(); for (i=0; nappaimet[i].valinta_kirjain; i++) piirra_nappula(&nappaimet[i]); for (i=0; laskurit[i].tunnus; i++) piirra_laskuri(&laskurit[i]); } /****************************************************************************/ int main(void) { alusta_nappulat(); piirra_naytto(nappaimet,laskurit); laske(nappaimet,laskurit); return 0; }