Apua TurboPascaliin?

Caft

Olen siis tekemässä eräänlaista matopeliä, mutta se ei oikein toimi. Olisi kivaa, jos joku osaisi auttaa.. Tässä on koodi, jonka olen tehnyt tähän mennessä:

program matopeli;
uses graph, grafiikka, crt;
var
merkki:char;
x1, x2, x3, x4:integer; {mato}
y1, y2, y3, y4:integer {"madon ruoka"}
pisteet:integer;
begin
grafiikkatilaan;
randomize;
x1:=275;
x2:=325;
x3:=50*random(7) 100;
x4:=x3 50;
y1:=225;
y2:=175;
y3:=50*random(5) 100;
y4:=y3 50;
pisteet:=0;
setcolor(yellow);
rectangle(100, 100, 500, 400); {pelialue}
rectangle(90, 90, 510, 410);
_maalaa(95, 95, yellow, yellow);
delay(1000);
setcolor(green);
rectangle(x1, y1, x2, y2);
_maalaa(x1 25, y1 25, green, green);
delay(500);
setcolor(red);
rectangle(x3, y3, x4, y4);
_maalaa(x3 25, y3 25, red, red);
if keypressed then
merkki:=readkey;
repeat
case merkki of
_YNUO: begin
inc(x1, 50);
inc(x2, 50);
inc(y1, 50);
inc(y2, 50);
end;
_ANUO: begin
dec(x1, 50);
dec(x2, 50);
dec(y1, 50);
dec(y2, 50);
end;
_ONUO: begin
inc(x1, 50);
inc(x2, 50);
end;
_VNUO: begin
dec(x1, 50);
dec(x2, 50);
end;
end;
setcolor(green);
repeat
rectangle(x1, y1, x2, y2);
_maalaa(x1 25, y1 25, green, green);
if (x1=x3) and (x2=x4) and (y1=y3) and (y2=y4) then
begin
inc(pisteet, 1);
setcolor(black);
rectangle(x3, y3, x4, y4);
_maalaa(x3 25, y3 25, black, black);
end
else
inc(pisteet, 0);
end;
delay(100);
until keypressed;
merkki:=readkey;
setcolor(black);
rectangle(x1, y1, x2, y2);
_maalaa(x1 25, y1 25, black, black);
until (x1500) or (y1400);
delay(500);
writeln('Kuolit.');
delay(500);
if pisteet1 then
begin
writeln('Sait ',pisteet,' pistettä.');
end
else
writeln('Sait ',pisteet,' pisteen.');
end;
odotaESC;
end.

28

139

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • turbokysyjä

      Minkäläinenkäännösyksikkö (eli unit)
      grafiikka (grafiikka.pas) on?

      • Caft

        Suomenkielinen versio graph:sta, joka tukee mm. _maalaa ja grafiikkatilaan -komentoja.


      • turbo
        Caft kirjoitti:

        Suomenkielinen versio graph:sta, joka tukee mm. _maalaa ja grafiikkatilaan -komentoja.

        Olisiko siitä (grafiikka.pas -tiedostosta) mahdollista saada listaus


      • pascall
        turbo kirjoitti:

        Olisiko siitä (grafiikka.pas -tiedostosta) mahdollista saada listaus

        Minulla ei ole mahdollisuutta katsoa sitä, mutta sen tiedot ovat (kai) sivulla, josta dosboxin voi ladata. Valitse sieltä "finnish language file" tai jotain sen kaltaista.


      • Tuolta
        pascall kirjoitti:

        Minulla ei ole mahdollisuutta katsoa sitä, mutta sen tiedot ovat (kai) sivulla, josta dosboxin voi ladata. Valitse sieltä "finnish language file" tai jotain sen kaltaista.

        http://www.dosbox.com/download.php?main=1


      • ei_löytynyt

    • ex-delphisti

      Koodaileeko joku vielä Turbo Pascalilla? :)

    • hyvä on
      • pascal -täsmennys.

        GNU pascalin ????

        juuri GNU pascal on niitä pascaleita, joiden rajoittuneisuuden takia pascalilla on huono maine C -koodaajien keskuudessa. ko. C -koodaajat eivät tietenkään käsitä, että on parempiakin "pascaleita" , lainausmerkit siksi, että nuo paremmat ovat itseasiassa objectpascaleita.

        tuo objectpascal on suunniteltu siten, että pascal on objectpascalin osajoukko.

        Eli pääosin: jos jokin lähdekoodi on kelvollista pascalia, se on samalla kelvollista objectpascalia, mutta sama ei aina päde toisinpäin.

        Esimerkkejä objectpascal -kääntäjistä:

        1) se parhain: Delphi (kaupallinen, maksullinen ja vain windows -ympäristöön, tosin uusimmat Delphit osaavat tuottaa binäärejä myös esim iOS:lle, mutta Delphi IDE toimii vain windowsissa)

        2) Freepascal ( Lazarus ).

        JOS käytät Freepascalia ( ja mahdollisesti myös Lazarusta ), suosittelen lisäämään jokaisen käännösyksikön alkuun:

        {$MODE Delphi}

        jos siellä on jo:

        {$MODE objectpascal} , tuon voi kommentoida näin:

        {$MODE Delphi} // {$MODE objectpascal}

        Freepascal ja Lazarus ovat ilmaisia, eli voit laillisesti imuroida netistä.

        huonoa verrattuna Delphiin:

        1) asennus ei viimeistele kaikkea tarvittavaa, vaan vaatii manuaalista säätämistä.
        Muistaakseni piti asettaa joku hakemistonimi, josta tarvittava FCL -lähdekoodi löytyy, ilman tuota käsintehtäväksi jäävää asetusta homma ei toimi.

        2) debuggeri (joka perustuu GDB:hen) on suorastaan ala-arvoinen Delphin integroituun debuggeriin verrattuna. Noh, Delphin debuggeri on alunperin Borlandin käsialaa ja uudempia versioita on muokannut Embarcadero. Delphin debuggeri siis ei ole riippuvainen GDB:stä. GDB taas on laadultaan ala-arvoinen debuggeri, kuten niin moni GPL -lisensioitu avoimen lähdekoodin ohjelma.

        GDB on tehty pääasiassa C/C -koodaajien tarpeisiin, niin Lazaruksen GDB:hen pohjautuva debuggeri ei ymmärrä objectpascalin property:jä lainkaan !

        Lisäksi, koska C ja C käsittelevät muuttujanimet merkkikokoherkkinä, toisin kuin pascal ja objectpascal, niin Lazaruksen debuggerissa muuttujan nimen isoilla/pienillä kirjaimilla on eri merkitys (jollei sitten tätä ole uusimmassa versiossa korjattu).

        Mutta siis gnu pascaliin verrattuna freepascal on ylimvoimaisesti laadukkaampi tuote, vaikka Delphille laadussa häviääkin.

        Myös Delphin ja freepascalin tavassa käsitellä merkkijonoja on eroja, kokeile vaikkpa:

        var

        Q : Integer;
        S : String;

        begin
        S := 'jää';
        Q := length(S);
        writeln('merkkijonon "', S, '" pituus on ', Q, ' merkkiä.');
        end;


        Delphissä (komentorivisovelluksessa) tuo tulostaa
        merkkijonon "jää" pituus on 3 merkkiä.

        mutta freepascalissa ei ole syytä yllättyä tällaisesta:
        merkkijonon "jää" pituus on 5 merkkiä.

        tämä johtuu siitä, että ainakin linux -versiossa freepascalin oletus on koodata merkkijonot UTF-8 -koodauksella, jolloin "ä" ja"ö" -kirjain ottaa 2 tavua yhden sijasta.

        Delphi taas koodaa merkkijonot (jos on suomen- tai englanninkielinen windows, tai jokin useimmista muista länsieurooppalaisista kieliversioista windowsista käytössä) näin:

        a) Delphi 2009 ja uudemmat:

        Delphi koodaa merkkijonot UTF-16 -koodauksella.

        a) Delphi (vanhemmat kuin Delphi 2009)

        Delphi koodaa merkkijonot Windows-1252 -koodauksella.

        Lisäksi: Delphi 2009 ja uudemmat:

        Delphi 2009:n saa myös koodaamaan merkkijonot Windows-1252 -koodauksella näin:

        type
        TWin1252String = AnsiString(1252);

        var
        S : TWin1252String; // muuttujassa S käytetään Windows-1252 -koodausta.

        toki voi myös:

        var
        S2 : AnsiString;

        tällöin muuttuja S2 käyttää windowsin kiinteäkokoista 8 -bittistä oletuskoodausta, joka siis on suomen- ja englanninkielisessä (ja vaikkapa myös ruotsin- ja saksankielisessä) windowsissa em. Windows-1252, mutta esim. venäjän- ja thaikielisissä windowseissa on oma kansallinen standardi, jota muuttuja S2 käyttää Windows-1252:n sijasta.

        Noissa kansallisissa standardeissa on se käytäntö, että merkkikoodit 0..127 ovat sellaisenaan jenkki-ascii -merkkivalikoima, mutta koodit 128..255 ovat kunkin kansallisen standardin mukaisia, ja eri maiden koodit 128..255 ovat epäyhteensopivia keskenään.

        Eli koodeilla 128..255 on venäjänkielisessä windowsissa kyrilliset merkit, mutta thaikielisessä windowsissa thaikielen merkistö.


        Juuri tämän sekavuuden takia on kehitetty Unicode ja sen eri ilmenemismuodot kuten UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE.

        Vielä Unicodesta Microsoftilaisessa kielenkäytössä:

        Jos Microsoft käyttää termiä Unicode, se yleensä tarkoittaa UTF-16LE, jollei asiayhteydessä ole nimenomaisesti toisin kerrottu.


      • pascal -täsmennys. kirjoitti:

        GNU pascalin ????

        juuri GNU pascal on niitä pascaleita, joiden rajoittuneisuuden takia pascalilla on huono maine C -koodaajien keskuudessa. ko. C -koodaajat eivät tietenkään käsitä, että on parempiakin "pascaleita" , lainausmerkit siksi, että nuo paremmat ovat itseasiassa objectpascaleita.

        tuo objectpascal on suunniteltu siten, että pascal on objectpascalin osajoukko.

        Eli pääosin: jos jokin lähdekoodi on kelvollista pascalia, se on samalla kelvollista objectpascalia, mutta sama ei aina päde toisinpäin.

        Esimerkkejä objectpascal -kääntäjistä:

        1) se parhain: Delphi (kaupallinen, maksullinen ja vain windows -ympäristöön, tosin uusimmat Delphit osaavat tuottaa binäärejä myös esim iOS:lle, mutta Delphi IDE toimii vain windowsissa)

        2) Freepascal ( Lazarus ).

        JOS käytät Freepascalia ( ja mahdollisesti myös Lazarusta ), suosittelen lisäämään jokaisen käännösyksikön alkuun:

        {$MODE Delphi}

        jos siellä on jo:

        {$MODE objectpascal} , tuon voi kommentoida näin:

        {$MODE Delphi} // {$MODE objectpascal}

        Freepascal ja Lazarus ovat ilmaisia, eli voit laillisesti imuroida netistä.

        huonoa verrattuna Delphiin:

        1) asennus ei viimeistele kaikkea tarvittavaa, vaan vaatii manuaalista säätämistä.
        Muistaakseni piti asettaa joku hakemistonimi, josta tarvittava FCL -lähdekoodi löytyy, ilman tuota käsintehtäväksi jäävää asetusta homma ei toimi.

        2) debuggeri (joka perustuu GDB:hen) on suorastaan ala-arvoinen Delphin integroituun debuggeriin verrattuna. Noh, Delphin debuggeri on alunperin Borlandin käsialaa ja uudempia versioita on muokannut Embarcadero. Delphin debuggeri siis ei ole riippuvainen GDB:stä. GDB taas on laadultaan ala-arvoinen debuggeri, kuten niin moni GPL -lisensioitu avoimen lähdekoodin ohjelma.

        GDB on tehty pääasiassa C/C -koodaajien tarpeisiin, niin Lazaruksen GDB:hen pohjautuva debuggeri ei ymmärrä objectpascalin property:jä lainkaan !

        Lisäksi, koska C ja C käsittelevät muuttujanimet merkkikokoherkkinä, toisin kuin pascal ja objectpascal, niin Lazaruksen debuggerissa muuttujan nimen isoilla/pienillä kirjaimilla on eri merkitys (jollei sitten tätä ole uusimmassa versiossa korjattu).

        Mutta siis gnu pascaliin verrattuna freepascal on ylimvoimaisesti laadukkaampi tuote, vaikka Delphille laadussa häviääkin.

        Myös Delphin ja freepascalin tavassa käsitellä merkkijonoja on eroja, kokeile vaikkpa:

        var

        Q : Integer;
        S : String;

        begin
        S := 'jää';
        Q := length(S);
        writeln('merkkijonon "', S, '" pituus on ', Q, ' merkkiä.');
        end;


        Delphissä (komentorivisovelluksessa) tuo tulostaa
        merkkijonon "jää" pituus on 3 merkkiä.

        mutta freepascalissa ei ole syytä yllättyä tällaisesta:
        merkkijonon "jää" pituus on 5 merkkiä.

        tämä johtuu siitä, että ainakin linux -versiossa freepascalin oletus on koodata merkkijonot UTF-8 -koodauksella, jolloin "ä" ja"ö" -kirjain ottaa 2 tavua yhden sijasta.

        Delphi taas koodaa merkkijonot (jos on suomen- tai englanninkielinen windows, tai jokin useimmista muista länsieurooppalaisista kieliversioista windowsista käytössä) näin:

        a) Delphi 2009 ja uudemmat:

        Delphi koodaa merkkijonot UTF-16 -koodauksella.

        a) Delphi (vanhemmat kuin Delphi 2009)

        Delphi koodaa merkkijonot Windows-1252 -koodauksella.

        Lisäksi: Delphi 2009 ja uudemmat:

        Delphi 2009:n saa myös koodaamaan merkkijonot Windows-1252 -koodauksella näin:

        type
        TWin1252String = AnsiString(1252);

        var
        S : TWin1252String; // muuttujassa S käytetään Windows-1252 -koodausta.

        toki voi myös:

        var
        S2 : AnsiString;

        tällöin muuttuja S2 käyttää windowsin kiinteäkokoista 8 -bittistä oletuskoodausta, joka siis on suomen- ja englanninkielisessä (ja vaikkapa myös ruotsin- ja saksankielisessä) windowsissa em. Windows-1252, mutta esim. venäjän- ja thaikielisissä windowseissa on oma kansallinen standardi, jota muuttuja S2 käyttää Windows-1252:n sijasta.

        Noissa kansallisissa standardeissa on se käytäntö, että merkkikoodit 0..127 ovat sellaisenaan jenkki-ascii -merkkivalikoima, mutta koodit 128..255 ovat kunkin kansallisen standardin mukaisia, ja eri maiden koodit 128..255 ovat epäyhteensopivia keskenään.

        Eli koodeilla 128..255 on venäjänkielisessä windowsissa kyrilliset merkit, mutta thaikielisessä windowsissa thaikielen merkistö.


        Juuri tämän sekavuuden takia on kehitetty Unicode ja sen eri ilmenemismuodot kuten UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE.

        Vielä Unicodesta Microsoftilaisessa kielenkäytössä:

        Jos Microsoft käyttää termiä Unicode, se yleensä tarkoittaa UTF-16LE, jollei asiayhteydessä ole nimenomaisesti toisin kerrottu.

        "ko. C -koodaajat eivät tietenkään käsitä, että on parempiakin "pascaleita" , lainausmerkit siksi, että nuo paremmat ovat itseasiassa objectpascaleita."

        Roskaa joka tapauksessa. Ei ole standardoitu kieli ja huonosti siirrettävissä.

        Missään Pascalissa ei ole mitään sellaista miksi sitä kannattaisi käyttää nykypäivänä missään tarkoituksessa. AINA löytyy järkevämpi työkalu tempun tekemiseen.

        Se sitten riippuu projektista mikä on paras työkalu tähän. Perstuntumalta sanoisin matopelien tekemisessä parhaan työkalun olevan Typescript ja piirto ihan vaan canvasille: http://www.w3schools.com/html/html5_canvas.asp

        Tässä sitten Typescript: http://www.typescriptlang.org/


      • Lazarus ja pi
        M-Kar kirjoitti:

        "ko. C -koodaajat eivät tietenkään käsitä, että on parempiakin "pascaleita" , lainausmerkit siksi, että nuo paremmat ovat itseasiassa objectpascaleita."

        Roskaa joka tapauksessa. Ei ole standardoitu kieli ja huonosti siirrettävissä.

        Missään Pascalissa ei ole mitään sellaista miksi sitä kannattaisi käyttää nykypäivänä missään tarkoituksessa. AINA löytyy järkevämpi työkalu tempun tekemiseen.

        Se sitten riippuu projektista mikä on paras työkalu tähän. Perstuntumalta sanoisin matopelien tekemisessä parhaan työkalun olevan Typescript ja piirto ihan vaan canvasille: http://www.w3schools.com/html/html5_canvas.asp

        Tässä sitten Typescript: http://www.typescriptlang.org/

        Minun Lazaruksella (free pascal) tekemäni sama graafinen ohjelma toimii sekä windows koneessa että raspberry Pi :ssä!

        (Mielestäni aika erilaiset ympäristöt:
        -eri cpu,
        -eri käyttis,
        -eri ikkuinoitijärjestelmä)


      • utf8
        pascal -täsmennys. kirjoitti:

        GNU pascalin ????

        juuri GNU pascal on niitä pascaleita, joiden rajoittuneisuuden takia pascalilla on huono maine C -koodaajien keskuudessa. ko. C -koodaajat eivät tietenkään käsitä, että on parempiakin "pascaleita" , lainausmerkit siksi, että nuo paremmat ovat itseasiassa objectpascaleita.

        tuo objectpascal on suunniteltu siten, että pascal on objectpascalin osajoukko.

        Eli pääosin: jos jokin lähdekoodi on kelvollista pascalia, se on samalla kelvollista objectpascalia, mutta sama ei aina päde toisinpäin.

        Esimerkkejä objectpascal -kääntäjistä:

        1) se parhain: Delphi (kaupallinen, maksullinen ja vain windows -ympäristöön, tosin uusimmat Delphit osaavat tuottaa binäärejä myös esim iOS:lle, mutta Delphi IDE toimii vain windowsissa)

        2) Freepascal ( Lazarus ).

        JOS käytät Freepascalia ( ja mahdollisesti myös Lazarusta ), suosittelen lisäämään jokaisen käännösyksikön alkuun:

        {$MODE Delphi}

        jos siellä on jo:

        {$MODE objectpascal} , tuon voi kommentoida näin:

        {$MODE Delphi} // {$MODE objectpascal}

        Freepascal ja Lazarus ovat ilmaisia, eli voit laillisesti imuroida netistä.

        huonoa verrattuna Delphiin:

        1) asennus ei viimeistele kaikkea tarvittavaa, vaan vaatii manuaalista säätämistä.
        Muistaakseni piti asettaa joku hakemistonimi, josta tarvittava FCL -lähdekoodi löytyy, ilman tuota käsintehtäväksi jäävää asetusta homma ei toimi.

        2) debuggeri (joka perustuu GDB:hen) on suorastaan ala-arvoinen Delphin integroituun debuggeriin verrattuna. Noh, Delphin debuggeri on alunperin Borlandin käsialaa ja uudempia versioita on muokannut Embarcadero. Delphin debuggeri siis ei ole riippuvainen GDB:stä. GDB taas on laadultaan ala-arvoinen debuggeri, kuten niin moni GPL -lisensioitu avoimen lähdekoodin ohjelma.

        GDB on tehty pääasiassa C/C -koodaajien tarpeisiin, niin Lazaruksen GDB:hen pohjautuva debuggeri ei ymmärrä objectpascalin property:jä lainkaan !

        Lisäksi, koska C ja C käsittelevät muuttujanimet merkkikokoherkkinä, toisin kuin pascal ja objectpascal, niin Lazaruksen debuggerissa muuttujan nimen isoilla/pienillä kirjaimilla on eri merkitys (jollei sitten tätä ole uusimmassa versiossa korjattu).

        Mutta siis gnu pascaliin verrattuna freepascal on ylimvoimaisesti laadukkaampi tuote, vaikka Delphille laadussa häviääkin.

        Myös Delphin ja freepascalin tavassa käsitellä merkkijonoja on eroja, kokeile vaikkpa:

        var

        Q : Integer;
        S : String;

        begin
        S := 'jää';
        Q := length(S);
        writeln('merkkijonon "', S, '" pituus on ', Q, ' merkkiä.');
        end;


        Delphissä (komentorivisovelluksessa) tuo tulostaa
        merkkijonon "jää" pituus on 3 merkkiä.

        mutta freepascalissa ei ole syytä yllättyä tällaisesta:
        merkkijonon "jää" pituus on 5 merkkiä.

        tämä johtuu siitä, että ainakin linux -versiossa freepascalin oletus on koodata merkkijonot UTF-8 -koodauksella, jolloin "ä" ja"ö" -kirjain ottaa 2 tavua yhden sijasta.

        Delphi taas koodaa merkkijonot (jos on suomen- tai englanninkielinen windows, tai jokin useimmista muista länsieurooppalaisista kieliversioista windowsista käytössä) näin:

        a) Delphi 2009 ja uudemmat:

        Delphi koodaa merkkijonot UTF-16 -koodauksella.

        a) Delphi (vanhemmat kuin Delphi 2009)

        Delphi koodaa merkkijonot Windows-1252 -koodauksella.

        Lisäksi: Delphi 2009 ja uudemmat:

        Delphi 2009:n saa myös koodaamaan merkkijonot Windows-1252 -koodauksella näin:

        type
        TWin1252String = AnsiString(1252);

        var
        S : TWin1252String; // muuttujassa S käytetään Windows-1252 -koodausta.

        toki voi myös:

        var
        S2 : AnsiString;

        tällöin muuttuja S2 käyttää windowsin kiinteäkokoista 8 -bittistä oletuskoodausta, joka siis on suomen- ja englanninkielisessä (ja vaikkapa myös ruotsin- ja saksankielisessä) windowsissa em. Windows-1252, mutta esim. venäjän- ja thaikielisissä windowseissa on oma kansallinen standardi, jota muuttuja S2 käyttää Windows-1252:n sijasta.

        Noissa kansallisissa standardeissa on se käytäntö, että merkkikoodit 0..127 ovat sellaisenaan jenkki-ascii -merkkivalikoima, mutta koodit 128..255 ovat kunkin kansallisen standardin mukaisia, ja eri maiden koodit 128..255 ovat epäyhteensopivia keskenään.

        Eli koodeilla 128..255 on venäjänkielisessä windowsissa kyrilliset merkit, mutta thaikielisessä windowsissa thaikielen merkistö.


        Juuri tämän sekavuuden takia on kehitetty Unicode ja sen eri ilmenemismuodot kuten UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE.

        Vielä Unicodesta Microsoftilaisessa kielenkäytössä:

        Jos Microsoft käyttää termiä Unicode, se yleensä tarkoittaa UTF-16LE, jollei asiayhteydessä ole nimenomaisesti toisin kerrottu.

        Lazarus käyttää Unicodea (UTF-8) sisäisesti (-> siirrettävyys eri käyttöjärjestelmiin).

        funktio length kertoo merkkijonon viemän tavumäärän.
        funktio UTF8Length kertoo merkkien määrän.

        joten:

        unit Unit1;

        {$mode objfpc}{$H }

        interface

        uses
        Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
        LazUTF8;

        type

        { TForm1 }

        TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
        private
        { private declarations }
        public
        { public declarations }
        end;

        var
        Form1: TForm1;

        implementation

        {$R *.lfm}

        { TForm1 }

        procedure TForm1.Button1Click(Sender: TObject);
        var
        Q, R : Integer;
        S : String;
        begin
        S := 'jää';
        Q := length( S );
        R := UTF8Length( S );
        Memo1.Lines.add('Merkkijonon "' S '" pituus on ' intToStr(Q) ' tavua.');
        Memo1.Lines.add('Merkkijonon "' S '" pituus on ' intToStr(R) ' merkkiä.');
        end;

        end.


      • Lazarus ja pi kirjoitti:

        Minun Lazaruksella (free pascal) tekemäni sama graafinen ohjelma toimii sekä windows koneessa että raspberry Pi :ssä!

        (Mielestäni aika erilaiset ympäristöt:
        -eri cpu,
        -eri käyttis,
        -eri ikkuinoitijärjestelmä)

        Ei varmasti toimi Windowsin tiilinäkymässä, eikä toimi yleisimmässä päätelaitteiden alustassa eli Androidissa eikä monessa muussakaan paikassa ilman säätöä.

        Typescriptillä sitten tekee graafista ohjelmaa mikä toimii joka paikassa.


      • utf8 kirjoitti:

        Lazarus käyttää Unicodea (UTF-8) sisäisesti (-> siirrettävyys eri käyttöjärjestelmiin).

        funktio length kertoo merkkijonon viemän tavumäärän.
        funktio UTF8Length kertoo merkkien määrän.

        joten:

        unit Unit1;

        {$mode objfpc}{$H }

        interface

        uses
        Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
        LazUTF8;

        type

        { TForm1 }

        TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
        private
        { private declarations }
        public
        { public declarations }
        end;

        var
        Form1: TForm1;

        implementation

        {$R *.lfm}

        { TForm1 }

        procedure TForm1.Button1Click(Sender: TObject);
        var
        Q, R : Integer;
        S : String;
        begin
        S := 'jää';
        Q := length( S );
        R := UTF8Length( S );
        Memo1.Lines.add('Merkkijonon "' S '" pituus on ' intToStr(Q) ' tavua.');
        Memo1.Lines.add('Merkkijonon "' S '" pituus on ' intToStr(R) ' merkkiä.');
        end;

        end.

        "Lazarus käyttää Unicodea (UTF-8) sisäisesti (-> siirrettävyys eri käyttöjärjestelmiin)."

        Jos vaikka tekisi matopelin puhelimeen niin miten siirto tapahtuu Androidiin?


      • Laz ja pi
        M-Kar kirjoitti:

        "Lazarus käyttää Unicodea (UTF-8) sisäisesti (-> siirrettävyys eri käyttöjärjestelmiin)."

        Jos vaikka tekisi matopelin puhelimeen niin miten siirto tapahtuu Androidiin?

        Yleisesti Lazarus/freepascal ympäristössä ohjelmia siirreetään kahdella tavalla:
        - tehdään ristikäännös toisessa systeemissä kohdesysteemiin tai
        käännetään lähdekoodeista kohdesysteemissä. Huomoi Pascalin erilainen, "kevyempi" käännösprosessi verrattuna C-pohjaisiin kieliin. Pascal koodaajalla C-koodin kääntäminen näyttää todella "tuskaiselta". Eli esim. Raspberry PI:ssä
        Lazarus toimii aika jouhevasti vaikka alla oleva "rauta" on mitä on. Pascalin kääntäminen ei ole hidasta joten se onnistuu kevyemmissä laitteissakin.

        FreePascal / Lazarus ympäristö on harrastajien taidonnäyte. Tiimi tekee sitä mikä kiinnostaa ja työn tulos on avointa lähdekoodia jota voi kukin hyödyntää
        (esim liittyä tekemään sitä haluamaansa suuntaan).

        En ole ollut tekemisissä Androidin suhteen mutta näyttää siltä että jotkut FreePascal harrastajat ovat osoittaneet kiinnostusta siihen suuntaan.

        Android ympäristö perustuu paljolti javan tavukoodiin (välikoodi) ja jni rajapintoihin.
        Olen saanut sen käsityksen että javan tavukoodi on sen verran rajoittunutta ettei siihen pystytä kääntämään kaikkea pascalia vaan joudutaan tyytymään pascalin osajoukkoon. Käytännön Android laitteet tottakai pohjautuvat aina johonkin prosessoriin ja Pascal on tehty käännettäväksi suoraan konekieleksi -> että ohjelmat voidaan toteuttaa myös niin että ne käännetään suoraan konekieleksi ja hyödynnetään jni-rajapintoja. Eli Android ympäristössä voidaan käyttää javan tavukoodia että laitteen konekieltä.

        FreePascalin /Lazaruksen mahdollisuuksista Android ympäristössä voi
        lukea sivulta http://wiki.freepascal.org/Android_Programming
        http://wiki.freepascal.org/Android
        Esim. Seuraava PDF:n voisi lukea:
        http://sourceforge.net/projects/laztoapk/files/Lazarus and Android.pdf/download
        Luulisin että ehkä ensimmäiset FreePascal android sovellukset tehtiin 2011

        Aiheen lisäkysymykset voisi laittaa Lazarus foorumille jossa on oma osio Androidille
        http://forum.lazarus.freepascal.org/index.php/board,43.0.html


      • Laz ja pi kirjoitti:

        Yleisesti Lazarus/freepascal ympäristössä ohjelmia siirreetään kahdella tavalla:
        - tehdään ristikäännös toisessa systeemissä kohdesysteemiin tai
        käännetään lähdekoodeista kohdesysteemissä. Huomoi Pascalin erilainen, "kevyempi" käännösprosessi verrattuna C-pohjaisiin kieliin. Pascal koodaajalla C-koodin kääntäminen näyttää todella "tuskaiselta". Eli esim. Raspberry PI:ssä
        Lazarus toimii aika jouhevasti vaikka alla oleva "rauta" on mitä on. Pascalin kääntäminen ei ole hidasta joten se onnistuu kevyemmissä laitteissakin.

        FreePascal / Lazarus ympäristö on harrastajien taidonnäyte. Tiimi tekee sitä mikä kiinnostaa ja työn tulos on avointa lähdekoodia jota voi kukin hyödyntää
        (esim liittyä tekemään sitä haluamaansa suuntaan).

        En ole ollut tekemisissä Androidin suhteen mutta näyttää siltä että jotkut FreePascal harrastajat ovat osoittaneet kiinnostusta siihen suuntaan.

        Android ympäristö perustuu paljolti javan tavukoodiin (välikoodi) ja jni rajapintoihin.
        Olen saanut sen käsityksen että javan tavukoodi on sen verran rajoittunutta ettei siihen pystytä kääntämään kaikkea pascalia vaan joudutaan tyytymään pascalin osajoukkoon. Käytännön Android laitteet tottakai pohjautuvat aina johonkin prosessoriin ja Pascal on tehty käännettäväksi suoraan konekieleksi -> että ohjelmat voidaan toteuttaa myös niin että ne käännetään suoraan konekieleksi ja hyödynnetään jni-rajapintoja. Eli Android ympäristössä voidaan käyttää javan tavukoodia että laitteen konekieltä.

        FreePascalin /Lazaruksen mahdollisuuksista Android ympäristössä voi
        lukea sivulta http://wiki.freepascal.org/Android_Programming
        http://wiki.freepascal.org/Android
        Esim. Seuraava PDF:n voisi lukea:
        http://sourceforge.net/projects/laztoapk/files/Lazarus and Android.pdf/download
        Luulisin että ehkä ensimmäiset FreePascal android sovellukset tehtiin 2011

        Aiheen lisäkysymykset voisi laittaa Lazarus foorumille jossa on oma osio Androidille
        http://forum.lazarus.freepascal.org/index.php/board,43.0.html

        "Olen saanut sen käsityksen että javan tavukoodi on sen verran rajoittunutta ettei siihen pystytä kääntämään kaikkea Pascalia"

        Väärin meni. Se on tietysti turing täydellinen ja tekee kaiken. Sun Microsystems aikoinaan kaavaili tekevänsä prosessorejakin jotka ajoivat suoraan sitä Javan tavukoodia..

        Oleellisesti tässä vaan on kyse siitä, että FreePascal/Lazarus on yksinkertaisesti väärä työkalu (tähänkin) käyttötarkoitukseen.

        Koko Lazaruksen idea itseasiassa onkin lähinnä Delphillä tehtyjen legacy ohjelmien tekohengittäminen. Uusia ohjelmistoprojekteja sillä ei pääsääntöisesti kannata aloittaa.

        "Huomoi Pascalin erilainen, "kevyempi" käännösprosessi verrattuna C-pohjaisiin kieliin. Pascal koodaajalla C-koodin kääntäminen näyttää todella "tuskaiselta"."

        C-kieli kääntyy kyllä todella vauhdikkaasti. Jos se kääntyy hitaasti niin sitten on tehty jotain pahasti väärin, kuten esim. tungettu implementointia otsikkotiedostoihin, käännellään komponentteja uusiksi vaikka ne olisi jo valmiiksi käännettyinä tms.


      • Kätevää osaajille
        M-Kar kirjoitti:

        "ko. C -koodaajat eivät tietenkään käsitä, että on parempiakin "pascaleita" , lainausmerkit siksi, että nuo paremmat ovat itseasiassa objectpascaleita."

        Roskaa joka tapauksessa. Ei ole standardoitu kieli ja huonosti siirrettävissä.

        Missään Pascalissa ei ole mitään sellaista miksi sitä kannattaisi käyttää nykypäivänä missään tarkoituksessa. AINA löytyy järkevämpi työkalu tempun tekemiseen.

        Se sitten riippuu projektista mikä on paras työkalu tähän. Perstuntumalta sanoisin matopelien tekemisessä parhaan työkalun olevan Typescript ja piirto ihan vaan canvasille: http://www.w3schools.com/html/html5_canvas.asp

        Tässä sitten Typescript: http://www.typescriptlang.org/

        Nykyisten Pascalien eräs piirre on se että korkean tason kieleen voi sijoittaa myös assemblykieltä eli prosessorin omaa konekieltä. Tosin tämä ominaisuus ei sovellu kuin ohjelmointiexperteille
        joilla on hanskassa myös assemblykoodi. Alemman tason ohjelmointi ei rajoitu pelkkään bittien käsittelyyn
        vaan lisäksi voi siis hyödyntää assemblyä!


      • GTK7KDE
        M-Kar kirjoitti:

        Ei varmasti toimi Windowsin tiilinäkymässä, eikä toimi yleisimmässä päätelaitteiden alustassa eli Androidissa eikä monessa muussakaan paikassa ilman säätöä.

        Typescriptillä sitten tekee graafista ohjelmaa mikä toimii joka paikassa.

        Javakin toimii aika monessa järjestelmässä mutta sen ikkunointijärjestelmää ei voi vaihtaa (muuttamatta lähdekoodia niinkuin Lazarusksessa on mahdollista. Lazaruksestahan saadaan samasta lähdekoodista tuki eri ikkunointijärjestelmille).


      • andoi
        Laz ja pi kirjoitti:

        Yleisesti Lazarus/freepascal ympäristössä ohjelmia siirreetään kahdella tavalla:
        - tehdään ristikäännös toisessa systeemissä kohdesysteemiin tai
        käännetään lähdekoodeista kohdesysteemissä. Huomoi Pascalin erilainen, "kevyempi" käännösprosessi verrattuna C-pohjaisiin kieliin. Pascal koodaajalla C-koodin kääntäminen näyttää todella "tuskaiselta". Eli esim. Raspberry PI:ssä
        Lazarus toimii aika jouhevasti vaikka alla oleva "rauta" on mitä on. Pascalin kääntäminen ei ole hidasta joten se onnistuu kevyemmissä laitteissakin.

        FreePascal / Lazarus ympäristö on harrastajien taidonnäyte. Tiimi tekee sitä mikä kiinnostaa ja työn tulos on avointa lähdekoodia jota voi kukin hyödyntää
        (esim liittyä tekemään sitä haluamaansa suuntaan).

        En ole ollut tekemisissä Androidin suhteen mutta näyttää siltä että jotkut FreePascal harrastajat ovat osoittaneet kiinnostusta siihen suuntaan.

        Android ympäristö perustuu paljolti javan tavukoodiin (välikoodi) ja jni rajapintoihin.
        Olen saanut sen käsityksen että javan tavukoodi on sen verran rajoittunutta ettei siihen pystytä kääntämään kaikkea pascalia vaan joudutaan tyytymään pascalin osajoukkoon. Käytännön Android laitteet tottakai pohjautuvat aina johonkin prosessoriin ja Pascal on tehty käännettäväksi suoraan konekieleksi -> että ohjelmat voidaan toteuttaa myös niin että ne käännetään suoraan konekieleksi ja hyödynnetään jni-rajapintoja. Eli Android ympäristössä voidaan käyttää javan tavukoodia että laitteen konekieltä.

        FreePascalin /Lazaruksen mahdollisuuksista Android ympäristössä voi
        lukea sivulta http://wiki.freepascal.org/Android_Programming
        http://wiki.freepascal.org/Android
        Esim. Seuraava PDF:n voisi lukea:
        http://sourceforge.net/projects/laztoapk/files/Lazarus and Android.pdf/download
        Luulisin että ehkä ensimmäiset FreePascal android sovellukset tehtiin 2011

        Aiheen lisäkysymykset voisi laittaa Lazarus foorumille jossa on oma osio Androidille
        http://forum.lazarus.freepascal.org/index.php/board,43.0.html

        Android sovellus katso lisää:
        http://keskustelu.suomi24.fi/node/12513164


      • silmätvinkkelissä
        utf8 kirjoitti:

        Lazarus käyttää Unicodea (UTF-8) sisäisesti (-> siirrettävyys eri käyttöjärjestelmiin).

        funktio length kertoo merkkijonon viemän tavumäärän.
        funktio UTF8Length kertoo merkkien määrän.

        joten:

        unit Unit1;

        {$mode objfpc}{$H }

        interface

        uses
        Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
        LazUTF8;

        type

        { TForm1 }

        TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
        private
        { private declarations }
        public
        { public declarations }
        end;

        var
        Form1: TForm1;

        implementation

        {$R *.lfm}

        { TForm1 }

        procedure TForm1.Button1Click(Sender: TObject);
        var
        Q, R : Integer;
        S : String;
        begin
        S := 'jää';
        Q := length( S );
        R := UTF8Length( S );
        Memo1.Lines.add('Merkkijonon "' S '" pituus on ' intToStr(Q) ' tavua.');
        Memo1.Lines.add('Merkkijonon "' S '" pituus on ' intToStr(R) ' merkkiä.');
        end;

        end.

        Oho en katsonut niin tarkasti kieltä, tämähän on VisualBASIC:a tämä, tämä ei ole Pascalia. Katsoin huolimattomasti koodia, hmm...


    • ripulipascal

      Normaalisti istutaan vaan pascalla, ripulissa turbopascalla...

      • vihainenlinturipuli

        EI ripulissa istutaan varpusparven päällä, eli pelataan vihaisia lintuja.


    • BOApeliomasellaine

      Minäkin muistan jotain TURBOPascalista, mutta kun sitä kokeilin joskus 11-vuotiaana, siirryin aika nopeasti heti C-kieleen silloin, mutta muistaakseni turbopaskalissa on myös muistaakseni ominaisuutena kirjoittaa joitain pätkiä, mitkä vaativat nopeutta suoraan assemblyllä.

      Näyttää hauskalle tuo suomenkielinen turbopascal :)
      "Maalaa sitä ja piirrä tätä"... :)

      Matopeli on aivan hyvä harjoitteluidea tehdä, ei heti ensimmäiseksi tarvitse tehdä vuosikymmenen parasta keksintöä kuteen Doom 1 oli aikoinaan, ensimmäinen lähes 3D peli, jota seurasi Duke Nukem 3D :)..... ja putki jatkuu.

      • asm movl

        Joo Pascaliin voi lisätä assembly koodia omana lohkona
        muun koodin sekaan näin:

        asm
        movl I,%eax
        end;


      • parempi asm
        asm movl kirjoitti:

        Joo Pascaliin voi lisätä assembly koodia omana lohkona
        muun koodin sekaan näin:

        asm
        movl I,%eax
        end;

        Joo Pascaliin voi lisätä assembly koodia omana lohkona
        muun koodin sekaan paljon fiksummin näin:


        {$ASMMODE INTEL}

        asm
        movl eax,I
        end;

        Valitettavasti oletus on AT&T -syntaksi, joka on)

        a) epäkäytännöllistä

        b) rumaa

        c) takaperoista.

        Eli kun normaalissa (=intel -syntaksi)

        on:

        mov eax, 5

        niin AT&T -syntaksilla sama:

        movl 5, %eax

        eli erot:

        a) AT&T:lle pitää erikseen kertoa "movl" kun intelissä riittää mov

        b) AT&T:ssä parametrit väärinpäin, eli lähde ennen kohdetta !

        c) AT&T rumennettu sillä, että reksiterinimien edellä pakko käyttää % (intel ei tällaista tarvitse, vaan tunnistaa rekisterinimet muutenkin).


    • optimoikoodiasi

      Mielenkiintoista, olisin kyllä käyttänyt C/C kieltä, mutta tulee varmastikin hyvä matopeli, syntaksi on aika pitkä kyllä Pascal-kielellä kirjoitettuna, verrattuna c-kieleen, kun pitää kirjoittaa "maalaa" jne, toisaalta helppo.

      Onhan se mukavaa kun saa tietokoneen tekemään mitä itse haluaa :)

      c:ssä assembly on aika helppoa myös:

      _asm {
      tähän koodia assemblyllä väliin
      }

      Mutta niin jos mennään sitten grafiikkakiihdyttimiin, se on melko helppoa eli vaikeaa c-kielellä, menee directx:n kautta Windowsissa, olikohan sellainen funktio kuin "loadphysicaladdress", jostain grafiikkaelementistä, tulee suora, ei virtuiaalinen vaan FYYSINEN suora osoite videomuistiin jonne voi sitten piirrellä mielenmukaan ;)

      Ei kannata opetella aluksi tuollaisia, on liian monimutkaista aluksi.

    • hyväätuleekai

      Kummallista on tuollainenkin että "pisteet integer" -määritelmä, mitähän mahtaa tarkoittaa.

      Luulen että tarkoittaisi C-kielessä: "int" ;)

      Mitenkäs tuo olisi C:ssä, avaa grafiikkatila, olisi C:ssä openwindow muistaakseni.

      Mutta kyllä hyvä mato-epeli tulee kun käyttää hyvää logiikkaa ei niinkään grafiikkapuolessa, vaan logiikkapuolessa ohjelmoidessa.

    • näyttäähyvälle

      Tuosta voi tulla hyväkin pikkupeli, innostamme tekemään eteenpäin.

      Hassuja nimitelmiä on kyllä, mutta toisaalta hyviäkin tytöille jotka haluavat opetella ohjelmointia.

      En halua sekoittaa C-kieltä heidän juttuun, vaikka olisikin huomattavan tehokkaampaa, syystä että: on varmaan aivan mukavaa tehdä omia juttuja ja saada niitä onnistumaan.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Millä voin

      Hyvittää kaiken?
      Ikävä
      97
      2773
    2. Jotain puuttuu

      Kun en sinua näe. Et ehkä arvaisi, mutta olen arka kuin alaston koivu lehtiä vailla, talven jäljiltä, kun ajattelen sinu
      Ikävä
      104
      2360
    3. Haluan sut

      Haluatko sinä vielä mut?
      Ikävä
      91
      2130
    4. Ampuminen Iisalmessa

      Älytöntä on tämä maailman meno.
      Iisalmi
      16
      1914
    5. Hei A, osaatko

      sanoa, miksi olet ihan yhtäkkiä ilmestynyt kaveriehdotuksiini Facebookissa? Mitähän kaikkea Facebook tietää mitä minä en
      Ikävä
      45
      1757
    6. Pohjola kadulla paukuteltu

      Iltasanomissa juttua.
      Iisalmi
      42
      1756
    7. 124
      1722
    8. Haluaisin aidosti jo luovuttaa ja unohtaa

      Ei tästä mitään tule koskaan.
      Ikävä
      78
      1706
    9. Synnittömänä syntyminen

      Helluntailaisperäisillä lahkoilla on Raamatunvastainen harhausko että ihminen syntyy synnittömänä.
      Helluntailaisuus
      130
      1491
    10. Mitä tämä tarkoittaa,

      että näkyy vain viimevuotisia? Kirjoitin muutama tunti sitten viestin, onko se häipynyt avaruuteen?
      Ikävä
      41
      1294
    Aihe