Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
08.03.2005, 19:55
Exec



hiho

und zwar müssen wir für die schule eine projektarbeit in info schreiben - und zwar in tp

mein problem jetzt ist:
ich wollte mich zu hause nicht mit der dos-oberfläche abgeben und hab mir dev-pas (bloodshed.net) gezogen und installiert, weil mir das ja eine bekannte oberfläche bietet ...
es benutzt die freepascal-compiler und leider gibts da probleme beim compilen:
mit den dos-freepascal läufts, wie gewollt, mit dem devpas nicht

hier der code

Quellcode:repeat
     begin
          gotoXY(EingabeX,EingabeY);
          write('Zielkoordinate-X: ');
          readln(Ziel.x);
          write('Zielkoordinate-Y: ');
          readln(Ziel.y);
     end;
     until CheckKoordinate(Ziel) = true;
Quellcode:function CheckKoordinate(Feld:Koordinate):boolean;
begin
     if (Feld.x > 8) or (Feld.y > 8) then
     begin
        write('Ungltiger Zug!');
        CheckKoordinate := false;
     end;

     if (SpielerKo.x = Feld.x) and (SpielerKo.y = Feld.y) then
     begin
        write('Ungltiger Zug!');
        CheckKoordinate := false;
     end;

     if (SpielerKo.x = Feld.x) then
     begin
        if (SpielerKo.y > Feld.y) then
           writeln('SpielerKo.y > Feld.y')
        else if (SpielerKo.y < Feld.y) then
           writeln('SpielerKo.y < Feld.y');
        CheckKoordinate := true;
     end;

     if (SpielerKo.y = Feld.y) then
     begin
        if (SpielerKo.x > Feld.x) then
           writeln('SpielerKo.x > Feld.x')
        else if (SpielerKo.x < Feld.x) then
           writeln('SpielerKo.x < Feld.x');
        CheckKoordinate := true;
     end;

     if (SpielerKo.x <> Feld.x) and (SpielerKo.y <> Feld.y) then
     begin
        write('Ungltiger Zug!');
        CheckKoordinate := false;
     end;

end;
das ganze soll bewirken, dass auf einem 8*8 - feld (schachbrett) zwei türme nur waagerecht bzw senkrecht bewegt werden dürfen, also keine diagonalen oder freien bewegungen - dafür die funktion zum überprüfen der zielkoordinaten (2d-record)
SpielerKo.x/.y sind die aktuellen Spielerkoordinaten, rest ergibt sich von selbst
ansonst fragen :)

zum problem:
mit den dos-freepascal-compilern geht alles wie gewollt, mit den freepascal von devpas gehts nicht - bewegungen auf jedes feld sind möglich :\

danke für die eventuelle hilfe :)

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
001
09.03.2005, 10:37
Spin



Ich würde einen Beschwerdebrief an die Schulleitung schreiben, wer heutzutage seinen Schülern Pascal beibringt hat was verpasst.
Sorry, kann dir leider nicht helfen ^^

--

( www.opera.com | www.miranda-im.org )
http://www.ironoak.de

zum Seitenanfang zum Seitenende Profil || Suche
002
09.03.2005, 14:33
Kriz



Sehr sinnvoll, dein Post o_O Pascal ist eine Lernsprache...
---
Evtl. benutzt der Win32/Linux-FreePascal Compiler eine andere API für das Positionieren im Konsolenmodus? Reine Für-DOS-Compiler benutzen auch gerne direkte ASM-Zugriffe auf die Hardware und sowas mag Win32 eigentlich garnicht (ist bei C/C++ mit ASM auch so).

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
003
09.03.2005, 20:38
.1.



Außerdem kann man mit Object Pascal dann auch noch was anfangen -> Delphi

--

zum Seitenanfang zum Seitenende Profil || Suche
004
10.03.2005, 15:39
theDon



ja, als erweiterte lernsprache. oder als folterwerkzeug. (aber da gibts ja auch COBOL.)

und jetzt mal zurueck zum thema hier.

sehe ich das richtig, dass sich das mit beiden compilern compilen laesst, aber nur bei einem kompilat die ueberpruefung funktioniert?

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
005
10.03.2005, 15:54
Exec



lässt sich mit beiden einwandfrei compilen, überprüfung funktioniert allerdings nur bei der dos-variante richtig ...
mit den if-klauseln da wird ein waagerechter zug als ungültig ausgegeben, bzw sollte - denn das macht wie gesagt nur die dos-version
bei devpas wird true zurückgegeben, auch wenn's eigentlich nich sein dürfte (sprich: waagerechter zug)

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
006
11.03.2005, 10:57
Mahwa



Wenn ich mir das so betrachte reg ich mich richtig über meinen Informatikunterricht auf. Wir machen immer nur die grobste Grundlage, nie mehr. Liegt vill daran das meine Infolehrerin keinen Plan hat. Letztens hatten wir ne Wiederholung, in der allen ernstes solche Dinge standen wie "Wie öffnet man einen Ordner" "Wie erstellt man ein Textdokument" und "Was ist eine Ordnerstruktur".
Das war dann echt die höhe von Billigaufgaben...

Bei Turbo Pascal hab ich mich dann selbst weitergebracht und könnte nach zirka 2 Stunden dann mehr als die Lehrerin, genauso wie die hälfte der Klasse. Aber da haben wir auch nur Taschenrechner in allen möglichen Arten gemacht...

--

zum Seitenanfang zum Seitenende Profil || Suche
007
11.03.2005, 19:16
theDon



mahwa: ich hab nichts gegen $random-rant, aber dann bitte auch in einem thread, wo das hinpasst. hier nicht.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
008
14.03.2005, 00:33
The_Overmind



Quellcode:function CheckKoordinate(Feld:Koordinate):boolean;
var
     result: boolean;
begin
     result := NOT ((Feld.x > 8) OR (Feld.y > 8) OR (Feld.x < 1) OR (Feld.y < 1));

     result := result AND (((Feld.x = SpielerKo.x) AND (Feld.y <> SpielerKo.y)) OR ((Feld.x <> SpielerKo.x) AND (Feld.y = SpielerKo.y)));

     if NOT result then
          WriteLn('Da ist was faul...');

     CheckKoordinate := result;
end;
Hat keine IF Klauseln (okokok, es hat eine einzige) und könnte funktionieren. Ansonsten: Nimm wieder die DOS Oberfläche, mir schmeckt sie zwar auch nit aber besser als ein Kompilat was nit löppt.

--

*jubel* *freu* ja ja ja...fast so gut wie Sex. Ich kann spielen.. © by Tarischa


Dieser Beitrag wurde am 14.03.2005 um 00:36 von The_Overmind bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
14.03.2005, 17:27
KhanRKerensky



Ich weiß zwar nicht ob das in Pascal auch schon so war, aber "Result" ist (zusammen mit dem Namen der Funktion) sowieso schon der Rückgabewert der Funktion und muss daher nicht deklariert werden. Sparst noch ein paar Zeilchen.

Quellcode:result := result AND (((Feld.x = SpielerKo.x) AND (Feld.y <> SpielerKo.y)) OR ((Feld.x <> SpielerKo.x) AND (Feld.y = SpielerKo.y))); Kann man wenn ich das richtig sehe zu
Quellcode:result := result AND ((Feld.x = SpielerKo.x) XOR (Feld.y = SpielerKo.y)); kürzen.
((a AND !b) OR (!a AND b)) dürfte ja ein (a XOR b) sein.

--

"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book

zum Seitenanfang zum Seitenende Profil || Suche
010
14.03.2005, 17:41
The_Overmind



Result gibts bei TurboPascal noch nicht und wenn man <Funktionsname> := xyz; setzt wirkt sich das wie nen exit; inner Funktion aus. Deswegen muss man das bei TP mitdeklarieren.

Beim XOR hast Du auf alle Fälle recht, hab ich gar nicht mehr dran gedacht. TP kennt auch XOR.

--

*jubel* *freu* ja ja ja...fast so gut wie Sex. Ich kann spielen.. © by Tarischa

zum Seitenanfang zum Seitenende Profil || Suche
011
15.03.2005, 06:39
KhanRKerensky



Ach deswegen macht das mein Lehrer immer so. Gut zu wissen. Wobei ich ein exit nach einer Zuweisung auf Funktionsname/Result bei Delphi begrüßen würde.

--

"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book

zum Seitenanfang zum Seitenende Profil || Suche