Program matopeli; uses graph,grafiikka,crt; VAR. merkkiluettu,herkkutarkistettu : boolean;

Samankaltaiset tiedostot
end; end else begin if aani=true then begin sound(247); delay(100); sound(220); delay(200); nosound; end; end;

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

TAMPEREEN TEKNILLINEN YLIOPISTO

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi

Kielioppia: toisin kuin Javassa

Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta.

Vektorit. Kertausta Seppo Lustig (Lähde: avoinoppikirja.fi)

TAMPEREEN TEKNILLINEN YLIOPISTO

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Avaruuden muoto. Kuvaus: Tehtävässä pohditaan avaruuden muotoa ja pelataan ristinollaa erilaisilla pinnoilla.

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Scratch ohjeita. Perusteet

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Ohjelmointiharjoituksia Arduino-ympäristössä

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100


Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla.

Ratkaiseva päätöskierros


Swiss timer kellokonsoli käyttöohje

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Ohjelmoinnin peruskurssi Y1

11. Javan toistorakenteet 11.1

TAITAJA 2007 ELEKTRONIIKKAFINAALI KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä:

Puzzle-SM Loppukilpailu Oulu

12. Javan toistorakenteet 12.1

Puzzle SM Pistelasku

Äänellä vauhtia robottiin

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

- Passiivi-lauseessa ei ole tärkeää, kuka tekee. Yleisesti tehdään. (something is done)

Eye Pal Solo. Käyttöohje

Java-kielen perusteet

20. Javan omat luokat 20.1

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

11. Javan valintarakenteet 11.1

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Etupaneeli. ON LINE valo on sammunut jos virhetila tai painettu PAUSE. Näytöllä lukee ON LINE => tulostin on valmis

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

Kenguru 2014 Junior sivu 1 / 8 (lukion 1. vuosikurssi)

TAULUKON TEKEMINEN. Sisällysluettelo

12. Javan toistorakenteet 12.1

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

XXIII Keski-Suomen lukiolaisten matematiikkakilpailu , tehtävien ratkaisut

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Java-kielen perusteet

Ohjelmointityökalu Scratch

Metodien tekeminen Javalla

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Algoritmit 1. Demot Timo Männikkö

Taulukot. Jukka Harju, Jukka Juslin

R. Puranen. GEOLOGINEN TUTKIMUSLAITOS Geofysiikan osasto HP-ohjelmaseloste

Kenguru Student (lukion 2. ja 3. vuosi) sivu 1 / 6

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003

Osa 7: Hahmojen ohjelmointi ja hienosäätö

Kenguru 2016 Ecolier (4. ja 5. luokka)

INDUKTIIVISEN PÄÄTTELYN HARJOITUSPAKETTI ENSIMMÄISELLE LUOKALLE

Harjoitus 4 (viikko 47)

Java-kielen perusteet

Piirrä kuvioita suureen laatikkoon. Valitse ruutuun oikea merkki > tai < tai =.

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

13. Loogiset operaatiot 13.1

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2 3

Jypelin käyttöohjeet» Ruutukentän luominen

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Alkuun HTML5 peliohjelmoinnissa

11. Javan valintarakenteet 11.1

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)


Kenguru 2019 Mini-Ecolier 2. ja 3. luokka

RINNAKKAINEN OHJELMOINTI A,

Luento 2: Viivan toteutus

Kenguru 2018 Ecolier (4. ja 5. luokka)

Jypelin käyttöohjeet» Miten lisään ohjaimet peliin

Kenguru 2011 Cadet (8. ja 9. luokka)

Algoritmit 2. Luento 13 Ti Timo Männikkö

Java-kielen perusteita

1. Taustatietoa näppäimistönkuuntelusta

Datatähti 2019 loppu

Kenguru 2017 Student lukio

Windows 8.1 -käyttöjärjestelmän käytön aloitus

Geogebra -koulutus. Ohjelmistojen pedagoginen hyödyntäminen

17. Javan omat luokat 17.1

Winter Tour 2014 PariScramble Open Sports Coach -golfsimulaattorissa

Kodu Ohjeet. Jos päivityksiä ei löydy niin ohjelma alkaa latautumaan normaalisti.

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3 opettaja: Pasi Ranne

AUTO3030 Digitaalitekniikan jatkokurssi, harjoitus 2, ratkaisuja

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

Sukelluskeräily. Pelihahmon liikuttaminen. Aarre ja pisteet

Transkriptio:

{Matopeli} {Yksinkertainen TurboPascalilla ohjelmoitu matopeli} {Julkaistu GPLv3 lisenssillã } {https://www.gnu.org/licenses/gpl-3.0.html} {Ilari Kuoppala 9D} Program matopeli; uses graph,grafiikka,crt; VAR pisteetx,pisteety : array[1..400] of integer; Merkki,merkki2 : Char; pituus,i herkkux,herkkuy pisteet nelio,viive merkkiluettu,herkkutarkistettu : boolean; huijaus : string; Procedure alkudemo; settextstyle(0,0,3); outtextxy(10,10,'tervetuloa matopeliin!'); settextstyle(0,0,2); outtextxy(10,50,'matoa ohjataan nuolin pp imill '); outtextxy(10,70,'peli alkaa kun painat mit tahansa'); outtextxy(10,90,'n pp int. Voit lopettaa milloin'); outtextxy(10,110,'vain painamalla ESC-n pp int.'); outtextxy(10,130,'lisenssi: GPLv3'); Repeat until keypressed; grafiikkatilaan; End; Procedure valmistelemuuttujat; {valmistelee muuttujat pelin aluksi} Randomize; {Vaaditaan jotta random-lukujen arpominen toimii} pituus:=3; {Madon alkupituus} pisteet:=0; {alkupisteet} nelio:=20; {Madon nelion sivun pituus ja herkun halkaisija} viive:=50; {Viive joka suoritetaan pã Ã loopissa, vaikuttaa madon nopeuteen, mitã suurempi viive sitã hitaampi mato} For i:=1 to pituus do begin {suoritetaan jokaiselle madon pisteelle} pisteetx[pituus-i+1]:=0+i*nelio; {asetetaan madon x koordinaattien arvoiksi luvut neliã n sivun pituuden mukaan, kã Ã nteisessã jã rjestyksessã } pisteety[pituus-i+1]:=0; {asetetaan madon y koordinaattien arvoksi 0, kã Ã nteisessã jã rjestyksessã } {For-loopin loppu} Merkki:= _SPACE; {asetetaan muuttujaan merkki aluksi _SPACE} merkki2:=_onuo; { muuttujaan merkki2 alkuarvo } End; { valmistelemuuttujat } Procedure piirramato; {piirtã Ã madon ja herkun setcolor(yellow); {asetetaan piirtovã ri keltaiseksi}

circle(herkkux+nelio div 2,herkkuy+nelio div 2, nelio div 2); {piirretã Ã n herkku} setcolor(lightgreen); {asetetaan piirtovã ri vaaleanvihreã ksi} rectangle(pisteetx[1],pisteety[1],pisteetx[1]+nelio,pisteety[1]+nelio); {piirretã Ã n madon pã Ã } setcolor(green); {asetetaan piirtovã ri vihreã ksi madon hã ntã Ã varten} For i:=2 to pituus do {tehdã Ã n madon toisesta palikasta viimeiseen palikkaan} rectangle(pisteetx[i],pisteety[i],pisteetx[i]+nelio,pisteety[i]+nelio); {piirretã Ã n palikat} End; { piirramato } Procedure {siirtã Ã matoa taulukossa ja pyyhkii hã nnã n viimeisen pisteen} setcolor(black); {asetetaan piirtovã ri mustaksi} rectangle(pisteetx[pituus],pisteety[pituus],pisteetx[pituus]+nelio,pistee ty[pituus]+nelio); {pyyhitã Ã n madon viimeinen palikka pois ruudulta} For i:=1 to pituus do begin {suoritetaan yhtã monta kertaa kuin madossa on neliã itã } pisteetx[pituus-i+1]:=pisteetx[pituus-i]; {siirretã Ã n neliã n x- koordinaattia 1 taaksepã in taulukossa} pisteety[pituus-i+1]:=pisteety[pituus-i]; {siirretã Ã n neliã n y- koordinaattia 1 taaksepã in taulukossa} End; End; { siirramato } Procedure {tarkistaa meneekã mato reunojen yli ja siirtã Ã madon vastakkaiseen reunaan} begin if pisteetx[1] < 0 then {jos mato menee vasemmasta reunasta yli} pisteetx[1] := 640+pisteetx[1]; {siiretã Ã n mato oikeaan reunaan} if pisteety[1] < 0 then {jos mato menee ylã reunasta yli} pisteety[1] := 460+pisteety[1]; {siirretã Ã n mato alareunaan} pisteetx[1]:=pisteetx[1] mod 640; {siirretã Ã n mato vasempaan reunaan kun se menee oikeasta reunasta yli} pisteety[1]:=pisteety[1] mod 460; {siirretã Ã n mato ylã reunaan kun se menee alareunasta yli} Procedure {tarkistaa osuuko mato itseensã } For i:=2 to pituus do {suoritetaan kaikille madon pisteille paitsi pã Ã lle} if (pisteetx[1]=pisteetx[i]) and (pisteety[1]=pisteety[i]) then {jos mato osuu itseensã } merkki:=_esc; {asetetaan muuttujaan merkki _ESC jolloin peli loppuu} End; { tarkistakuolema }

Procedure nappaimet; {luetaan nã ppã inpainallukset ja siirretã Ã n matoa} {... niin lue merkki } If KeyPressed then begin {jos nã ppã intã painettu} Merkki:= ReadKey; {luetaan mitã nã ppã intã painettu} if Merkki = #0 then {jos merkki on tyhjã, se tarkoittaa ettã kyseessã on laajennettu merkki} Merkki:= ReadKey; {eli luetaan seuraava merkki} Repeat {Toistetaan kunnes mato on varmasti liikkunut} merkkiluettu:=true; {oletusarvona merkki on luettu oikein} Case Merkki Of {tutkitaan mitã nã ppã intã on painettu} _YNUO : if not (merkki2 = _ANUO)then {ylã snuolta painettu, kã Ã nnetã Ã n mato menemã Ã n ylã spã in jos se ei ollut menossa alaspã in} {siirretã Ã n matoa taulukossa} pisteetx[1]:=pisteetx[2]; {luodaan uusi pã Ã madolle} pisteety[1]:=pisteety[2]-nelio; {tarkistetaan menikã pã Ã reunojen yli} piirramato; {piirretã Ã n mato {tarkistetaan osuiko mato itseensã } {asetetaan muuttujaan merkki2 merkki jotta myã hemmin tiedetã Ã n mihin suuntaan mato oli menossa}; End else merkki:=merkki2; {jos mato oli menossa aikaisemmin alaspã in, annetaan sen jatkaa alaspã in} _ANUO : if not (merkki2 = _YNUO) then {alasnuolta painettu, kã Ã nnetã Ã n mato menemã Ã n alaspã in jos se ei ollut menossa ylã spã in} pisteetx[1]:=pisteetx[2]; pisteety[1]:=pisteety[2]+nelio; piirramato; End else merkki:=merkki2; _ONUO : if not (merkki2=_vnuo) then {oikealle painettu} pisteetx[1]:=pisteetx[2]+nelio; pisteety[1]:=pisteety[2]; piirramato; painettu} End else merkki:=merkki2; _VNUO : if not (merkki2=_onuo) then {vasemmalle pisteetx[1]:=pisteetx[2]-nelio; pisteety[1]:=pisteety[2];

piirramato; End else merkki:=merkki2; { luettu nã ppã in nuoli vasemmalle } _ESC : merkki:= _ESC else begin {jos nã ppã in oli joku muu} merkki:=merkki2; {kã sketã Ã n madon jatkaa samaan suuntaan kuin aikaisemmin} merkkiluettu:=false; {merkkiã ei luettu oikein eli suoritetaan case lause uudestaan} End; { case } Until merkkiluettu; {jos merkki luettiin oikein ei toisteta} End; { nappaimet } Procedure arvoherkku; {arpoo herkun paikan} Repeat herkkux:=random(640 div nelio)*nelio; {arvotaan herkun x ja y koordinaatit ruudukossa} herkkuy:=random(460 div nelio)*nelio; herkkutarkistettu:=true; {oletetaan ettã herkku ei ole madon sisã llã } For i:=1 to pituus do {tehdã Ã n madon jokaiselle pisteelle} if (pisteetx[i]=herkkux) and (pisteety[i]=herkkuy) then {tarkistetaan onko herkku madon sisã llã } herkkutarkistettu:=false {jos herkku kuitenkin on madon sisã llã arvotaan herkulle uusi paikka} until herkkutarkistettu; { arvoherkku } Procedure tarkistaherkku; {tarkistetaan onko herkku syã ty} if (pisteetx[1]=herkkux) and (pisteety[1]=herkkuy) then begin {jos herkku on samassa paikassa kuin madon pã Ã } pituus:=pituus+1; {mato kasvaa} setcolor(black); {pyyhitã Ã n herkku} circle(herkkux+nelio div 2,herkkuy+nelio div 2, nelio div 2); arvoherkku; {arvotaan uusi herkku} setcolor(lightgreen); {piirretã Ã n pã Ã uudestaan ettei siitã jã Ã puuttumaan paloja} rectangle(pisteetx[1],pisteety[1],pisteetx[1]+nelio,pisteety[1]+nelio); inc(pisteet,1); {lisã tã Ã n piste} if (pisteet mod 5)=0 then {aina viiden syã dyn herkun vã lein} if not (viive < 10) then dec(viive,1); {vã hennetã Ã n viivettã } setcolor(0); {pyyhitã Ã n edellinen luku} _kirjoitakokluku(70,470,3,pisteet-1); _kirjoitakokluku(180,470,2,49-viive); {piirretã Ã n viive

setcolor(15); {piirretã à n uusi luku} _kirjoitakokluku(70,470,3,pisteet); {piirretã à n pisteet _kirjoitakokluku(180,470,2,50-viive); {piirretã à n viive End; { tarkistaherkku } valmistelemuuttujat; {valmistellaan muuttujat} arvoherkku; {arvotaan herkku aluksi} repeat Merkki:=_SPACE; {nollataan merkki uudestaan huijauskoodin takia} Grafiikkatilaan; {siirrytã à n grafiikkatilaan} alkudemo; {piirretã à n alkuohjeet piirramato; {piirretã à n mato aluksi setcolor(15); OutTextXY(10,470,'Pisteet: Nopeus:'); {lisã tã à n teksti line(0,461,640,461); {piirretã à n kentã n raja _kirjoitakokluku(70,470,3,pisteet); {piirretã à n alkupisteet _kirjoitakokluku(180,470,2,50-viive); {piirretã à n viive ReadKey; {odotetaan nã ppã inpainallusta ennen kuin aloitetaan peli} Repeat {pã à looppi} nappaimet; {luetaan nã ppã imet ja siirretã à n matoa} tarkistaherkku; {tarkisteaan onko herkku syã ty} Delay(viive); {Odotetaan hetki jotta pelin nopeus olisi sopiva} Until Merkki = _ESC; {Tehdà à n tã tã kunnes esciã on painettu} Textmode(lastmode); {siirrytã à n tekstitilaan} writeln('onnittelut! Sait ',pisteet, ' pistett.'); {tulostetaan pisteet} readln(huijaus); {odotetaan nã ppã inpainallusta} until huijaus <> 'kissa2' {huijauskoodi} end. {The End}