• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

[TurboPascal 7] Einige Einsteigerfragen

Danielovitch

Spiele-Enthusiast/in
Registriert
09.06.2003
Beiträge
1.928
Reaktionspunkte
0
Hallo allerseits =)
Also, wir haben heute im Informatikkurs angefangen, n bisschen mit Turbo Pascal rumzubasteln. Und ich als fleißiger Schüler will natürlich zu Hause weiterbasteln ;-)
Ich arbeite jetzt an nem simplen Elfmeterschießen-Spiel, in dem der Spieler eine Zahl von 1-9 für die Position des Schusses eingibt. Dazu meine Fragen:

1.: Man kann ja im PROGRAM-Teil am Anfang Variablen einstellen. Ich möchte, dass der Name, den der Spieler später eingeben soll, auch als Variable erkannt wird - wie mach ich das? Ich kenn bei VARS nur Integer *g*
2.: Wie kann ich einstellen, dass das Programm nach dem Schuss eine Zufallszahl zwischen 1 und 9 wählt, damit es dem Zufall überlassen bleibt, ob der Keeper den Ball hält? (Jaja, ich weiß, keine Zahl ist zufällig, weil die CPU alles berechnet, blabla)
3.: Wie kann ich einstellen, dass ein Text zentriert wird?
4.: Kann man eine andere Schritgröße einstellen?

So weit erst mal, im Laufe der Zeit werd ich hier sicherlich noch mehr Fragen posten *g*

Liebe Grüße, Daniel
 
Welche Stufe bist du denn? 9? oder 11?

*seufz* Ach, das gute alte TP ... erinnert mich an meine supergeile Facharbeit in der 9. Schife versenken in TP. Supergeiles Intro, aber das Spiel klappte nicht, weil der Lehrer zu dumm war, mir zu erklären, wie ich mit Arrays arbeiten kann :rolleyes:



Danielovitch am 07.09.2005 16:42 schrieb:
1.: Man kann ja im PROGRAM-Teil am Anfang Variablen einstellen. Ich möchte, dass der Name, den der Spieler später eingeben soll, auch als Variable erkannt wird - wie mach ich das? Ich kenn bei VARS nur Integer *g*
var Variablenname: String;
readln(Variablenname);

String ist zwischen 2 und 255 Zeichen lang, ein einzelnes Zeichen ist vom Typ Char.
readln(Variablenname) bedeutet, dass der Spieler einen Namen eingibt und diesen mit Enter abschließt. Der Name (ohne Enter) ist dann in der Variable gespeichert.


Danielovitch am 07.09.2005 16:42 schrieb:
2.: Wie kann ich einstellen, dass das Programm nach dem Schuss eine Zufallszahl zwischen 1 und 9 wählt, damit es dem Zufall überlassen bleibt, ob der Keeper den Ball hält? (Jaja, ich weiß, keine Zahl ist zufällig, weil die CPU alles berechnet, blabla)
var schuss: integer;
schuss := random(9) + 1;
case schuss of
1: Was passiert dann?
2: Und jetzt?
...
9: Und nun?
end;

random(x) liefert einen ganzzahligen Wert zwischen 0 und x-1.


Danielovitch am 07.09.2005 16:42 schrieb:
3.: Wie kann ich einstellen, dass ein Text zentriert wird?
Eine Bildschirmzeile sind 80 Zeichen, richtig? Also kannst du es folgendermaßen primitiv machen:
var i: Integer;
Text: String;
Text := 'Der Text halt';
for i:= 1 to ((80 - Length(Text))/2) Text := ' ' + Text;
writeln(Text);

Oder das ganze manuell, indem du writeln(' ' + Text); und dabei zwischen ' ' so viele Leerstellen einfügst, wie du brauchst.


Danielovitch am 07.09.2005 16:42 schrieb:
4.: Kann man eine andere Schritgröße einstellen?
Ich kann mich nicht mehr dran erinnern, ob/dass wir das gemacht hätten. Glaube mich aber ganz dunkel daran erinnern zu können, dass man die Schriftart und -größe aber nicht ändern kann.


Bitte beachten!
Ich habe mit Turbo Pascal in der 9 gearbeitet und danach immer nur noch mit Delphi, also gebe ich keinerlei Garantie ab, dass meine Lösungen richtig sind oder die am besten geeigneten.
Aber wenn ich im Abi in Info in der mündlichen Prüfung eine 1+ dieses Jahr geschafft habe, dann kann ich nicht hoffentlich nicht ganz falsch liegen. ;-) :-P
 
Danke schon mal dafür. Ich habe jetzt noch zwei Fragen:

1.: Wie kann ich einstellen, dass, nachdem feststeht, ob's ein Tor war oder nicht, einen Spielstand anzeigen lassen?
2.: Ist es möglich, dass nach dem Anzeigen des Spielstandes wieder geschossen wird?

EDIT: Ich bin übrigens in der 11 ;-)
 
Danielovitch am 07.09.2005 18:01 schrieb:
Danke schon mal dafür. Ich habe jetzt noch zwei Fragen:

1.: Wie kann ich einstellen, dass, nachdem feststeht, ob's ein Tor war oder nicht, einen Spielstand anzeigen lassen?
1. Du musst zwei Variablen deklarieren, eine für die Anzahl der verwandelten Tore und eine für die gehaltenen
Tore_verwandelt, Tore_gehalten : integer

nachdem du die Zufallszahl erzeugt hast musst du prüfen ob der Keeper den Ball gehalten hat, also

if keeper = schuss then Tore_gehatlen = Tore_gehalten + 1
else Tore_verwandelt = Tore_verwandelt + 1;


Mit WriteLN dann den Spielstand ausgeben:

WriteLN('Gehaltene Tore : ',Tore_gehalten,' - Verwandelte Tore : ',Tore_verwandelt');

2.: Ist es möglich, dass nach dem Anzeigen des Spielstandes wieder geschossen wird?

Das mit dem Widerholen kannst du mit ner Schleife machen oder mit goto.
Goto sollte man sich nicht angewöhnen, ist ein sehr schlechter Programmierstil ;-)
deklariere eine String Varable, z.B.
Nochmal : String
Du machst eine schleife um das ganze Programm:
Gleich nach dem BEGIN schreibst du

Repeat

und vor das END. schreibst du

Write('Nochmal? '); (oder irgendwas in der Art)
Readln(nochmal);
UNTIL nochmal = 'n';
 
Da fällt mir ein ... hatte vorhin was vergessen.

Und zwar wollte ich dir noch den Tipp geben, dass du dich ja mal im Netz umschauen kannst nach Seiten zu Turbo Pascal.
Allerdings gleich wieder mit dem Hinweis, dass es zu Konflikten führen könnte, wenn du dir dort etwas aneignest und dein Lehrer die Sachen anders will oder sonst was dran auszusetzen hat.


Habe mal ein paar Seiten rausgesucht, die dir viele Infos liefern:
www.webplain.de
www.uni-kassel.de
www.tutorials.at
 
Noch mal ne Frage: Ich habe vor, bei meinem Elfmeterschussprogramm (*g*) die Schussstärke mit einzubauen. Wie krieg ichs hin, dass es, wenn man die Schussstärke zwischen 1 und 5 auswählen kann, z.B. bei 1 wahrscheinlicher wird, dass der Torwart den Ball kriegt, oder es bei 5 wahrscheinlicher wird, dass man drüber schießt?
 
Zurück