Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Schüler in NOT wegen schere stein papier (2.unit muss genutzt werden) (https://www.delphipraxis.net/161316-schueler-not-wegen-schere-stein-papier-2-unit-muss-genutzt-werden.html)

Bellla 28. Jun 2011 22:03

Schüler in NOT wegen schere stein papier (2.unit muss genutzt werden)
 
Hallo,
ich bin neu hier und weiß nicht ob ich das jetzt nach den regeln schreibe.
also ich muss eine aufgabe lösen.
Es geht um das spiel schere stein papier.
der spieler erhält zu spielbeginn einen bonus von 10 punkten. man soll sich dann für einen Spielzug entscheiden:stein schere oder papier.
wir ein button namens ok bestättigt nimmt der computer auch ein spielzug vor. dieser wird ausgegeben, beide werden verglichen und der punktestand wir neu berechnet und ausgegeben.
verliert der spieler wird der punktestand um 1 vermindert, gewinnt er, um eins erhöht.mit 20 gewinnt er mit 0 verliert er. in der 2 unit sind die daten unter type bis implementation vorgegeben.

das wichtige bei dem ganzen ist, dass wir eine 2. unit benutzen müssen.

ich habe so angefangen:

Unit 1 (Uhaupt bei mir)
Delphi-Quellcode:
    unit UHaupt;

    interface

    uses
       Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
       Dialogs,USpiel, StdCtrls, ExtCtrls;

    type
          TFAnwendung = class(TForm)
           RGSpielzug: TRadioGroup;
           BOK: TButton;
           EComputerzug: TEdit;
           Edit2EPunktestand: TEdit;
           LComputerzug: TLabel;
           Punktestand: TLabel;
           procedure FormCreate(Sender: TObject);
           procedure FormDestroy(Sender: TObject);
         private
           { Private-Deklarationen }
         public
           { Public-Deklarationen }
       end;

     var
          FAnwendung: TFAnwendung;
          Spiel:TSpiel;
 

     implementation

       {$R *.dfm}

        procedure TFAnwendung.FormCreate(Sender: TObject);
          begin
          Spiel:=TSpiel.Create(10);
          end;

        procedure TFAnwendung.FormDestroy(Sender: TObject);
          begin
          Spiel.Free;
          end;

         end.

2.Unit

Delphi-Quellcode:
unit USpiel;

interface
type
     TSpiel=class
     private
        byPunkte,
        byComputerzug,
        bySpielerzug:byte;
        procedure SpielrugAuswerten;

     public
        constructor Create(byPkt:byte);

        function Punktestand:byte;

        procedure Spielzug(byZug:byte);

        function Computerzug:string
        end;


implementation
 constructor TSpiel.Create(byPkt:byte);
 begin
 bypunkte:=byPkt;  [COLOR="Red"] versteh ich nicht. bypunkte ist der Punktestand warum macht man das dann so und warum ranomize, wir brauchen doch keinen zufall[/COLOR]
 randomize;

 end;

 function TSpiel.Punktestand:byte;
 begin
 end;


 procedure TSpiel.Spielzug(byZug:byte);
 begin
 end;


 function TSpiel.Computerzug:string
 begin
 end;


end.

UND WIE ES WEITERGEHEN SOLL WEI? ICH NICHT



betonen muss ich, dass ich nicht will dass mir jemand meine aufgabe machen soll...aber ich versteh wirklich nichts. wenn ihr wollt dass ich alleine drauf kommen soll wird das glaub nicht klappen.
ich bin eine Niete :( am freitag ist die letzte klassenarbeit, dann muss ich das nie wieder machen. ich bin in not :(
bitte helft mir

BUG 28. Jun 2011 22:15

AW: Schüler in NOT wegen schere stein papier (2.unit muss genutzt werden)
 
Ich wollte schon sagen: schöner Anfang mit Trennung von Überfläche und Logik, aber scheint ja vorgegeben zu sein.

Zitat:

versteh ich nicht. bypunkte ist der Punktestand warum macht man das dann so
Du übergibst dem Konstruktor einen Startwert für den Punktestand.

Zitat:

warum ranomize, wir brauchen doch keinen zufall
Es wäre sicher schön, wenn der Computergegner zufällige Züge macht und nicht immer den Gleichen :mrgreen:

Aphton 28. Jun 2011 22:18

AW: Schüler in NOT wegen schere stein papier (2.unit muss genutzt werden)
 
Zitat:

bypunkte:=byPkt; versteh ich nicht. bypunkte ist der Punktestand warum macht man das dann so und warum ranomize, wir brauchen doch keinen zufall
randomize;
Wie es aussieht, hast du diesen Code kopiert und verstehst nicht, was er macht.
Ein Randomize setzt den Seed Wert des Zufallszahlengenerators und sorgt damit dafür, dass bei jedem Start Random eine andere Abfolge von Zufallszahlen zurückliefert. Fehl am Platz ist sie jedoch trotzdem - denn sie wird immer aufgerufen, wenn instanziert wird, was ja nicht wirklich geschehen muss - es reicht, wenn dies wirklich nur 1x geschieht!

Weiters ist es für den Anfang so Ok.

Zu den einzelnen Funktion:
  1. Punktestand() soll ja den "Punktestand" zurückliefern. Dieser ist gespeichert in byPunkte. Also einfach als Result zurückliefern!
  2. Spielzug() hier soll nun Schere, Stein oder Papier für Computer und Spieler gezogen werden. Du kannst denen einzelne Werte zuweisen (als Konstanten deklarieren):
    Schere = 0
    Stein = 1
    Papier = 2
    Also einfach ein Random(3) [liefert 0, 1 oder 2 zurück] aufrufen und den einzelnen Variablen (byComputerzug, bySpielerzug) zuweisen.
    Und je nachdem, wie die Züge aussehen, inkrementierst oder dekrementierst du die Variable byPunkte:
    • wenn (bySpielerzug = Schere) dann
      wenn (byComputerzug = Papier) dann
      inkrementieren (Gewinn)
      sonst
      dekrementieren (Niederlage)
    • wenn (bySpielerzug = Stein) dann
      wenn (byComputerzug = Schere) dann
      inkrementieren
      sonst
      dekrementieren
    • wenn (bySpielerzug = Papier) dann
      wenn (byComputerzug = Stein) dann
      inkrementieren
      sonst
      dekrementieren

Edit: Je nachdem, wie viele Punkte man hat, kannste noch eine Nachrichtausgabe erfolgen lassen (20 oder 0 Punkte)...
Aber das solltest du schon selber schaffen!

Achja noch etwas - rock always wins!

Bellla 28. Jun 2011 22:21

AW: Schüler in NOT wegen schere stein papier (2.unit muss genutzt werden)
 
ok. ich versuchs mal. ich schreib dann morgen ob ichs schaffe :D danke

ps: showmessage bekomme ich noch hin :DDDD

Bellla 29. Jun 2011 17:51

AW: Schüler in NOT wegen schere stein papier (2.unit muss genutzt werden)
 
Mag eine dumme Frage für euch sein, aber wann benutz man
= und wann :=
ich versuch die grundlagen zu verstehen

p80286 29. Jun 2011 17:53

AW: Schüler in NOT wegen schere stein papier (2.unit muss genutzt werden)
 
mit := wird ein Wert zugewiesen,
mit = wird auf Gleichheit geprüft.

Könnte es sein, daß Du eklatante Grundlagenlücken hast?

Gruß
K-H

Bellla 29. Jun 2011 18:15

AW: Schüler in NOT wegen schere stein papier (2.unit muss genutzt werden)
 
ja kann sein :(

Delphi-Quellcode:
procedure TForm1.BOKClick(Sender: TObject);
begin
IF RGSSP.Itemindex=-1 THEN Showmessage('Bitte wählen')
ELSE BEGIN
       spiel.Spielzug(RGSSP.Itemindex);
       Spiel.SpielZugAuswerten;
       EComputerzug.Text:=Spiel.Computerzug;                
       EPunktestand.Text:=IntToStr(Spiel.Punktestand);
       IF Spiel.Punktestand=0 THEN BEGIN
                                    Showmessage('Loooooser!');
                                    Spiel:=TSpiel.Create(5);  
[B][COLOR="black"][COLOR="Red"]muss ich das spiel hier auf den startpunktestand zurücksetzen oder reicht es auch nur unten, bei neues spiel[/COLOR][/COLOR][/B]
                                   END;
       IF Spiel.Punktestand=10 THEN BEGIN
                                    Showmessage('Du SchnickSchnackSchnuck-Gott!');
                                    Spiel:=TSpiel.Create(5);
                                   END;
     END;


end;
Delphi-Quellcode:
procedure TForm1.NeuesSpiel1Click(Sender: TObject);
begin
Spiel:=TSpiel.Create(5);
RGSSP.Itemindex:=-1;
EComputerzug.Text:='';
EPunktestand.Text:='';
end;

end.

Bellla 29. Jun 2011 18:45

AW: Schüler in NOT wegen schere stein papier (2.unit muss genutzt werden)
 
achso für die antwort da oben
Zitat:

Zitat:
warum ranomize, wir brauchen doch keinen zufall
Es wäre sicher schön, wenn der Computergegner zufällige Züge macht und nicht immer den Gleichen
ich weiß schon dass randomize für meinen gegner ist, aber wie bezieht sich das auf den gegner.
von wo weiß delphi wenn ich randomize; hinschreibe, dass nur die auswahl des computers zufällig ist.
ich hätte irgendwie bycomputerzug =zufall hingeschrieben

Aphton 29. Jun 2011 18:49

AW: Schüler in NOT wegen schere stein papier (2.unit muss genutzt werden)
 
Hast du dir meine Antwort überhaupt durchgelesen?

Bellla 29. Jun 2011 18:50

AW: Schüler in NOT wegen schere stein papier (2.unit muss genutzt werden)
 
ja hab ich...mom ich les mal oben nochmal


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:50 Uhr.
Seite 1 von 2  1 2      

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