AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Schüler in NOT wegen schere stein papier (2.unit muss genutzt werden)
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Bellla · begonnen am 28. Jun 2011 · letzter Beitrag vom 29. Jun 2011
Thema geschlossen
Seite 1 von 2  1 2      
Bellla

Registriert seit: 14. Dez 2010
36 Beiträge
 
#1

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

  Alt 28. Jun 2011, 23:03
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
 
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

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

  Alt 28. Jun 2011, 23:15
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
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
 
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#3

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

  Alt 28. Jun 2011, 23:18
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!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (28. Jun 2011 um 23:23 Uhr)
 
Bellla

Registriert seit: 14. Dez 2010
36 Beiträge
 
#4

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

  Alt 28. Jun 2011, 23:21
ok. ich versuchs mal. ich schreib dann morgen ob ichs schaffe danke

ps: showmessage bekomme ich noch hin DDD

Geändert von Bellla (28. Jun 2011 um 23:24 Uhr)
 
Bellla

Registriert seit: 14. Dez 2010
36 Beiträge
 
#5

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

  Alt 29. Jun 2011, 18:51
Mag eine dumme Frage für euch sein, aber wann benutz man
= und wann :=
ich versuch die grundlagen zu verstehen
 
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

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

  Alt 29. Jun 2011, 18:53
mit := wird ein Wert zugewiesen,
mit = wird auf Gleichheit geprüft.

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

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
 
Bellla

Registriert seit: 14. Dez 2010
36 Beiträge
 
#7

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

  Alt 29. Jun 2011, 19:15
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.

Geändert von Bellla (29. Jun 2011 um 19:35 Uhr)
 
Bellla

Registriert seit: 14. Dez 2010
36 Beiträge
 
#8

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

  Alt 29. Jun 2011, 19:45
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
 
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#9

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

  Alt 29. Jun 2011, 19:49
Hast du dir meine Antwort überhaupt durchgelesen?
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
 
Bellla

Registriert seit: 14. Dez 2010
36 Beiträge
 
#10

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

  Alt 29. Jun 2011, 19:50
ja hab ich...mom ich les mal oben nochmal
 
Thema geschlossen
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:27 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