Delphi-PRAXiS

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

Bellla 29. Jun 2011 18:53

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

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!
weißt heißt : wenn die instanziert wird :oops:
und wohin gehört sie eigentlich???

Bellla 29. Jun 2011 18:55

AW: Schüler in NOT wegen schere stein papier (2.unit muss genutzt werden)
 
sry wenn ich nerve aber ich versuche schlau zu werden.
was heißt
Delphi-Quellcode:
CASE byComputerzug OF
was sagt dieses befehl
das ist doch eine schleife und das benutz man wenn man mehrere if then bedingungen hat... ist doch kompakter oder?

TiGü 29. Jun 2011 19:17

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

Zitat von Bellla (Beitrag 1109030)
sry wenn ich nerve aber ich versuche schlau zu werden.
was heißt
Delphi-Quellcode:
CASE byComputerzug OF
was sagt dieses befehl
das ist doch eine schleife und das benutz man wenn man mehrere if then bedingungen hat... ist doch kompakter oder?

Das heißt soviel wie: Im Fall das "ByComputerzug" z.B. den Wert "1" hat, dann mache irgendwas, wenn Wert "2" mache was anderes, wenn "3" dann...

Aber so geht das nicht vernünftig weiter.
Als ordentlicher Schüler wirst du ja hoffentlich gelernt haben Informationen zu recherieren, zu lesen, zu verstehen und anzuwenden, nicht wahr?
Hier ist erstmal eine Starthilfe, die dich weiter bringt, ansonsten müsstest du ja immer warten bis wir dir die Grundlagen vorkauen.
Das will und macht hier keiner gerne und das verschwendet deine und unsere Zeit.

Hilfreiche Links:
http://downloads.delphi-treff.de/DelphiStarter.pdf
http://www.delphi-treff.de/tutorials/
http://de.wikibooks.org/wiki/Program...:_Druckversion

Bellla 29. Jun 2011 19:32

AW: Schüler in NOT wegen schere stein papier (2.unit muss genutzt werden)
 
ja sry was soll ich tun...bei uns in der klasse versteht das niemand
danke für die hilfe

TiGü 29. Jun 2011 19:56

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

Zitat von Bellla (Beitrag 1109038)
ja sry was soll ich tun...bei uns in der klasse versteht das niemand
danke für die hilfe

Was tut ihr, wenn ihr in Biologie das Thema Ökologie habt und die Zusammenhänge eines Ökosystems skizzieren sollt?
Was tut ihr, wenn in Deutsch eine Gedichterörterung ansteht?
Was tut ihr, wenn in Mathematik eine Arbeit über Trigonometrie geschrieben wird?

Antworte auf diese Fragen und du antwortest dir selbst, was du zu tun hast in Sachen Delphi und Programmierung.
Des Weiteren hattest du für deine "Bilderschleife" schon Mal die case Anweisung verwendet, daher frage ich mich, ob es sich hier um ausgeprägte Leere zwischen den Ohren handelt, Vergesslichkeit oder fatales Desinteresses für den Lernstoff?!?

Bellla 29. Jun 2011 20:25

AW: Schüler in NOT wegen schere stein papier (2.unit muss genutzt werden)
 
ja das liegt wohl daran dass ich dieses fach einfach nicht oft habe und es neu ist. Über die ferien hinweg vergisst man vieles, es fällt oft unterricht aus. ich hatte jetzt zum beispiel 4 wochen kein info-unterricht.

mathe bio chemie das ist alles total leicht...ich bin gut in der schule...aber delphi versteh ich einfach nicht, genauso wie die anderen.

Daniel 29. Jun 2011 20:39

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

Zitat von Bellla (Beitrag 1109054)
[...] Aber delphi versteh ich einfach nicht, genauso wie die anderen.

Das ist kein Problem und geht so manchem so. Du solltest aber einsehen, dass Dir so ziemlich sämtliche Grundlagen fehlen und ein Blick in die Lektüre bzw. etwas Recherche ("Was macht case?") die naheliegendsten Schritte für Dich sein sollten. Nicht jeder mag ein Software-Entwickler werden und manchmal muss man sich in der Schule oder Uni mit Dingen befassen, die einen schlichtweg nicht interessieren - dafür hat hier auch jeder Verständnis.

Nur ist dieses Forum da, um Hilfestellung für denjenigen zu leisten, der sich - Interesse hin oder her - da duchbeißt. Du hingegen vermittelst mir den Eindruck, komfortabel und mit überschaubarem Einsatz zur Lösung kommen zu wollen in der Hoffnung, dass Dir irgendwer schon die relevanten Stellen in Deinem Projekt umsetzen wird.


Wenn Du konkrete Fragen hast, darfst Du sie hier gern stellen. Ich befürchte nur, dass Du derzeit fachlich gar nicht dazu in der Lage bist - es hängt alles nur davon ab, ob Du Willens bist, Dich da mit Hilfe der o.g. Links reinzufuchsen. Und bis dahin mache ich hier mal zu.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 Uhr.

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