Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Programm Böse Sechs (https://www.delphipraxis.net/194653-programm-boese-sechs.html)

Coolend 17. Dez 2017 16:20

Programm Böse Sechs
 
Hey Leute
ich bin neu hier und habe ne frage zu einem Programm.
Bin ein kompletter Anfänger in Lazarus und muss folgendes Programm schreiben.
Eine Konsolen Anwendung reicht ich brauche keine GUI.

Würfeln und die Augenzahl wird addiert.
Sobald man eine 6 würfelt werden die Punkte zurückgesetzt.
Man soll auch selber entscheiden können wann man die Punkte Sichern will, also mit einer Fragen.

Ich bin mittlerweile so weit das er Würfelt mit einer for-schleife. Aber ich weiß nicht wie ich jetzt weiter machen soll. Wäre über hilfe sehr dankbar.

Schönes Wochenende noch :)
LG Coolend

Quellcode:
Delphi-Quellcode:
program boese_sechs;
var i,wurf,spielstand : integer;
var e,j,n: string;
begin
writeln('Spielregeln: Es wird solange gewuerfelt bis der Spieler eine 6 Wuerfelt oder man den Zug beendet.');
writeln('Sobald die Zahl 6 gewuerfelt wird ist der Zug vorbei und die Punkte werden auf 0 gesetzt.');
writeln('Die Punktezahl ergibt sich aus der Augenzahl des Wuerfels');
writeln('Ziel ist es die Hoehere Punktzahl zu erreichen. Die Obergrenze liegt bei 100');
writeln('Druecke Enter um das Spiel zu starten!');
readln();
randomize();

for i:=1 to 100 do
wurf:=random(6)+1;
if (wurf<5) then
spielstand:=spielstand+wurf else
  writeln('Du hast eine 6 gewuerfelt und Verloren! :(');

writeln('Dein Spielstand ist: ',spielstand);

writeln('Willst du weiter spielen? Dann druecke "Enter"');
readln();

end.

LTE5 17. Dez 2017 16:38

AW: Programm Böse Sechs
 
Delphi-Quellcode:
for i:=1 to 100 do
 wurf:=random(6)+1;

if (wurf<5) then
 spielstand:=spielstand+wurf
else
 writeln('Du hast eine 6 gewuerfelt und Verloren! ');

writeln('Dein Spielstand ist: ',spielstand);
Das kann so nicht funktionieren. Da fehlen begin und end.

Bei ordentlicher Formatierung sieht man das.
Hier wird 100x wurf := verabeitet.

Coolend 17. Dez 2017 16:41

AW: Programm Böse Sechs
 
Ok danke aber er soll das ja nicht 100 mal machen sonder solange bis eine 6 gewürfelt wird dann ist ende.

LTE5 17. Dez 2017 16:46

AW: Programm Böse Sechs
 
Zitat:

Ok danke aber er soll das ja nicht 100 mal machen sonder solange bis eine 6 gewürfelt wird dann ist ende.
Dann musst du das auch genau so hinschreiben. Da steht aber von 1 bis 100 aktuell.

Ist das vorgefertigter Code vom Lehrer?

Coolend 17. Dez 2017 16:50

AW: Programm Böse Sechs
 
Ne ist mein erstes Programm was ich schreiben soll. Habe nur die Info bekommen:
Würfeln von 1-6, wenn eine 6 gewürfelt wurde ist es vorbei und man hat verloren.
Man kann die Punkte nach jedem Wurf entweder speichern oder weiter würfeln.
Habe aber allerdings keine ahnung was genau da der richtige Befehl ist.

z.B Würfelt 3
würfeln Ja oder Nein?
wenn ja dann alte Würfelanzahl(3) + neue zahl
wenn nein dann speichern (3)
Wenn 6 dann Verloren und ende.
Und bis maximal 100 punkte

LTE5 17. Dez 2017 16:52

AW: Programm Böse Sechs
 
Geh deinen Code mal Wort für Wort durch und beantworte mir dann folgende Frage:

was passiert, nachdem einmal gewürfelt wurde exakt?

Coolend 17. Dez 2017 17:09

AW: Programm Böse Sechs
 
Genau das ist mein Problem ich habe keine ahnung was jetzt kommt.
Habe jetzt die while-schleife ausprobiert.
Delphi-Quellcode:
while (wurf<>6) do
wurf:=random(6)+1;
begin
  spielstand:=spielstand+wurf
end;
writeln(spielstand);
readln();
end.
aber da kommt auch nichts richtiges zustande.
Ist die while schleife denn richtig oder die for-schleife ?

LTE5 17. Dez 2017 17:11

AW: Programm Böse Sechs
 
Das zweite sieht schon besser aus, ist aber trotzdem falsch.
Lies mal Wort für Wort durch was dein Programm macht und stell das dann dem gegenüber was es machen soll.

Hat euch eurer Lehrer keine Grundlagen beigebracht?

Coolend 17. Dez 2017 17:30

AW: Programm Böse Sechs
 
Delphi-Quellcode:
while (wurf<>6) do
      begin
        wurf:=random(6)+1;
        Writeln('Dein Wurf war: ',wurf);
        spielstand:=spielstand+wurf;
        writeln('Dein aktueller Spielstand lautet: ',spielstand,', Weitermachen? "J" oder "N"');
        readln(e);
        if e=N then
        writeln('Dein aktueller Punktestand lautet: ',spielstand);
        if wurf=6 then
        spielstand:=0;
        writeln('Du hast verloren dein Spielstand lautet: ',spielstand);
      end;
readln();
end.
Folgendes Problem:
Er erkennt das mit dem "J" und "N" nicht.
Wie geht das richtig?
Und wenn der Wurf 6 ist soll das spiel aufhören und nicht noch weiter addieren.

LTE5 17. Dez 2017 17:36

AW: Programm Böse Sechs
 
Zitat:

if e=N then
Überlege mal, von welchem Datentyp deine Eingabe ist. Wie vergleicht man sowas dann?

Und das andere Problem. Such mal bei Google nach delphi cancel loop. Nicht aber blind kopieren, sondern lesen und lernen.
Und immer an begin end denken.

Beispiel
Delphi-Quellcode:
 // Pseudocode!
WENN keine = ahnung DANN
 X;
 Y;
Im obigen Beispiel würde, wenn WENN wahr ist, nur X ausgeführt werden.
So ist es richtig, wenn beide ausgeführt werden sollen
Delphi-Quellcode:
 // Pseudocode!
WENN keine = ahnung DANN
 BEGIN
  X;
  Y;
 END;
Deswegen ist eine ordentliche Formatierung Pflicht!
Hier im Forum gibt es übrigens Delphi-Tags.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz