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.
Apua TurboPascaliin?
28
173
Vastaukset
- 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.
- ei_löytynyt
Tuolta kirjoitti:
DOSBox-0.70-Finnish.zip
tiedostossa on vain tiedostot:
dosbox.conf
Finnish.Ing
- ex-delphisti
Koodaileeko joku vielä Turbo Pascalilla? :)
- hyvä on
No, ei varsinaisesti. Latailin kuitenkin juuri GNU pascal:in verestääkseni vanhoja taitoja:
http://www.gnu-pascal.de/gpc/h-index.html
-On se aina parempaa, kuin joku kälynen C-koodi ;)- 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.htmlAndroid 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
Aivosyöpää sairastava Olga Temonen TV:ssä - Viimeinen Perjantai-keskusteluohjelma ulos
Näyttelijä-yrittäjä Olga Temonen sairastaa neljännen asteen glioomaa eli aivosyöpää, jota ei ole mahdollista leikata. Hä812820Pelotelkaa niin paljon kuin sielu sietää.
Mutta ei mene perille asti. Miksi Venäjä hyökkäisi Suomeen? No, tottahan se tietenkin on jos Suomi joka ei ole edes soda2961635Mikä saa ihmisen tekemään tällaista?
Onko se huomatuksi tulemisen tarve tosiaan niin iso tarve, että nuoruuttaan ja tietämättömyyttään pilataan loppuelämä?2461537- 871371
IL - VARUSMIEHIÄ lähetetään jatkossa NATO-tehtäviin ulkomaille!
Suomen puolustuksen uudet linjaukset: Varusmiehiä suunnitellaan Nato-tehtäviin Puolustusministeri Antti Häkkänen esittel4011349Nyt kun Pride on ohi 3.0
Edelliset kaksi ketjua tuli täyteen. Pidetään siis edelleen tämä asia esillä. Raamattu opettaa johdonmukaisesti, että3961273Esko Eerikäinen tatuoi kasvoihinsa rakkaan nimen - Kärkäs kommentti "Ritvasta" lävähti somessa
Ohhoh! Esko Eerikäinen on ottanut uuden tatuoinnin. Kyseessä ei ole mikä tahansa kuva minne tahansa, vaan Eerikäisen tat381027Kiitos nainen
Kuitenkin. Olet sitten ajanmerkkinä. Tuskin enää sinua näen ja huomasitko, että olit siinä viimeisen kerran samassa paik21009Hyväksytkö sinä sen että päättäjämme ei rakenna rauhaa Venäjän kanssa?
Vielä kun sota ehkäpä voitaisiin välttää rauhanponnisteluilla niin millä verukkeella voidaan sanoa että on hyvä asia kun329864Miksi Purra-graffiti ei nyt olekkaan naisvihaa?
"Pohtikaapa reaktiota, jos vastaava graffiti olisi tehty Sanna Marinista", kysyy Tere Sammallahti. Helsingin Suvilahden254832