| Autor |
Beitrag |
Blubba
      
Beiträge: 16
|
Verfasst: Mo 20.02.12 11:56
Ich habe Versucht ein zahlen Rätsel zu machen wollte aber noch das auf einem Label eine Zeit angezeigt wird wie lange das Spiel schon geht. Und wie kann ich einfügen, dass der Neustart das Neustartet welcher Schwierigkeitsgrad gewählt ist. Er Setzt dann nur die die Labels zurück aber die Versuche bleiben gleich. Vorher hatte ich das er immer den Einfachen Modus startet.
Mfg Der Blubb
danke im Voraus
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113:
| procedure TForm1.FormCreate(Sender: TObject); begin Randomize; Wurfel := Random(101); Versuch := 7; end;
procedure TForm1.bTestenClick(Sender: TObject); begin Zahl := StrtoInt(edEingabe.Text); Versuch := Versuch-1; lBeginnen.Caption := ' '; Ergebnis := Versuch; if Versuch > 0 then begin lVersuche.Caption := 'Sie haben noch ' +InttoStr(Versuch)+' Versuche.'; end; if Versuch = 0 then begin lVersuche.Caption := 'Sie haben Leider keine Versuche mehr'; end; if Versuch < 0 then begin ShowMessage('Verstehen sie nicht. Sie haben keine Versuche mehr'); ShowMessage('Die Zahl war ' +InttoStr(Wurfel)); end; if Zahl > Wurfel then begin lAusgabe.Caption := 'Die Zahl ist leider zu groß!'; end; if Zahl < Wurfel then begin lAusgabe.Caption := 'Die Zahl ist leider zu klein!'; end; if (Zahl = Wurfel) And (Ergebnis >= 0 ) then begin lAusgabe.Caption := 'Herzlichen Glückwunsch!!!'; lBeginnen.Caption := 'Wählen sie einen Schwierigkeitsgrad'; end; end;
procedure TForm1.ComputerverrtdieZahl1Click(Sender: TObject); begin ShowMessage('Spiel Fair sonst hat es doch kein Sinn das ich mich hier Stunden lang hinsetzte und du dann schummeln willst.'); end;
procedure TForm1.ZumGewinnen1Click(Sender: TObject); begin lVersuche.Caption := 'Sie haben keine Versuche mehr' +#10#13+ 'da sie Schummeln' +#10#13+ 'wollten. Klicken Sie Neustart' +#10#13+ 'um von vorne zu beginnen.'; Versuch := 0; end;
procedure TForm1.Schlieen1Click(Sender: TObject); begin close; end;
procedure TForm1.Neustarten1Click(Sender: TObject); begin Randomize; edEingabe.Text := ''; lAusgabe.Caption := ''; if Optionen1 = oEasy then begin Wurfel := Random(101); Versuch := 7; lVersuche.Caption := 'Sie haben 7 Versuche'; end; if Optionen1 = oMedium then begin Wurfel := Random(101); Versuch := 5; lVersuche.Caption := 'Sie haben 5 Versuche'; end; if Optionen1 = oHard then begin lAusdenken.Caption := 'Ich denke mir eine Zahl von 0 bis 200. Viel Spaß beim Raten'; Wurfel := Random(201); Versuch := 7; lVersuche.Caption := 'Sie haben 7 Versuche'; end; end; procedure TForm1.oEasyClick(Sender: TObject); begin Randomize; Wurfel := Random(101); Versuch := 7; lVersuche.Caption := 'Sie haben 7 Versuche'; edEingabe.Text := ''; lAusgabe.Caption := ''; end;
procedure TForm1.oMediumClick(Sender: TObject); begin Randomize; Wurfel := Random(101); Versuch := 5; lVersuche.Caption := 'Sie haben 5 Versuche'; edEingabe.Text := ''; lAusgabe.Caption := ''; end;
procedure TForm1.oHardClick(Sender: TObject); begin lAusdenken.Caption := 'Ich denke mir eine Zahl von 0 bis 200. Viel Spaß beim Raten'; Randomize; Wurfel := Random(201); Versuch := 7; lVersuche.Caption := 'Sie haben 7 Versuche'; edEingabe.Text := ''; lAusgabe.Caption := ''; end; |
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mo 20.02.12 13:40
Blubba hat folgendes geschrieben : | | wollte aber noch das auf einem Label eine Zeit angezeigt wird wie lange das Spiel schon geht |
Dazu kannst du eine Timer-Komponente nutzen. Beim Start des Spiels rufst du startTime:=GetTickCount auf. Im Timer erhälst du mittels GetTickCount-startTime die vergangene Zeit (in ms glaub ich). Dies kannst du dann einfach ausgeben.
Blubba hat folgendes geschrieben : | | Und wie kann ich einfügen, dass der Neustart das Neustartet welcher Schwierigkeitsgrad gewählt ist. Er Setzt dann nur die die Labels zurück aber die Versuche bleiben gleich. |
Eigentlich gilt hier: eine Frage pro Thread. Da es dein Erster ist, will ich mal nicht so sein
Du schreibst in Optionen1 nie etwas rein. Das solltest du (vermutlich) beim Einstellen des Schwierigkeitsgrads tun (oMediumClick usw). Zudem solltest du es irgendwann mal initialisieren beim Start des Programms.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Blubba 
      
Beiträge: 16
|
Verfasst: Mo 20.02.12 13:45
Ok das mit der Zeit werde ich gleich mal ausprobieren, hört sich nicht schwer an.
Edit: Soll das in FromCreate?
Und zu Punkt 2 weis ich gerade nicht was du genau meinst...
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mo 20.02.12 13:52
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Blubba 
      
Beiträge: 16
|
Verfasst: Mo 20.02.12 13:58
Mh er startet Immer noch nicht die jeweilige If Stelle setzt nur die Labels zurück.
Optionen1 ist das dann eine Variable und wenn ja welchen Typ muss sie bekommen?
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mo 20.02.12 13:59
 Die Variable hast DU doch benutzt in deinem Code, du musst (solltest) doch wissen was sie bedeuted und welchen Typ sie hat.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Blubba 
      
Beiträge: 16
|
Verfasst: Mo 20.02.12 14:03
HiHi ja müsste ich aber eigendlich ist das der name von dem MainMenü und dem Reiter Optionen.
Und da dachte ich, dass wenn Optionen1 auf oEasy steht das eigendlich Starten würde...
Bin noch recht neu Was Delphi angeht.
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mo 20.02.12 14:08
Achso. Das geht so nicht. In dem Vergleich vergleichst du ein Menu mit einem Eintrag. Das ist wie Äpfel und Birnen, die sind nicht gleich
Du solltest dir da eine eigene Variable anlegen, in der du das speicherst.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| type TSpielmodus=(mEasy,mMedium,mHard);
var Spielmodus: TSpielmodus;
Spielmodus:=mEasy;
Spielmodus:=mMedium; if Spielmodus=mEasy then [...] else if Spielmodus=mMedium then [...] |
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Für diesen Beitrag haben gedankt: Blubba
|
|
Blubba 
      
Beiträge: 16
|
Verfasst: Mo 20.02.12 14:12
Birnen Und Äpfel kann man Vergleichen
Also es hat jetzte so geklappt das ich erst ein Modus auswählen muss und dann erfüllt der Neustart Button seine Funktion.
Kann man ein Popup erscheinen lassen bevor es startet? Das man erst den Schwierigkeitsgrad wählen muss?
Dann wäre das Problem schonmal gelöst.
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mo 20.02.12 14:16
Kann man machen (ShowMessage). Das ist aber nicht so gut, weil dann dein Programm fehlerhaft läuft, wenn man das Popup ignoriert. Du kannst auch (etwas unsauber) per Code "draufklicken":
Delphi-Quelltext
ins OnCreate
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Blubba 
      
Beiträge: 16
|
Verfasst: Mo 20.02.12 14:23
Wieso läuft es dann Fehlerhaft?
Ich dachte da so an wie wenn man einen Editor schließt und dann kommt ja auch ien Fenster mit 'Sie haben nciht gespeichert wollen sie Speichern' und dann die 3 Auswahlmöglichkeiten.
Kann man das nciht einbauen?
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mo 20.02.12 14:41
Ah, ok, das kann man natürlich machen. Mir fällt auf Anhieb jetzt keine einfacher Lösung als das hier ein:
www.delphi-library.d...aendern_22600,0.html
Einfacher wäre es wohl, eine eigene Form zu erstellen dafür.
Oder aber das Spiel kann überhaupt nicht beginnen, bis man im Menu eine Schwierigkeit gewählt hat.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Blubba 
      
Beiträge: 16
|
Verfasst: Mo 20.02.12 14:45
Einfach legt jeder auf eigene Weise aus ich versuche Mal durchzusteigen und hoffen zu verstehen.
Naja Übung macht den Meister wenn es auch lange dauert -.-
So hab nun Mal die Zeitausprobiert, GetTickCount ist doch der Befehl und startTime die Variable oder?
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mo 20.02.12 14:48
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Blubba 
      
Beiträge: 16
|
Verfasst: Mo 20.02.12 14:59
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mo 20.02.12 15:05
Für diesen Beitrag haben gedankt: Blubba
|
|
Blubba 
      
Beiträge: 16
|
Verfasst: Mo 20.02.12 15:13
Ähm ja... 0ms
Das Programm will mich mobben-.-
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var startZeit : cardinal;
procedure TForm1.Neustarten1Click(Sender: TObject); begin Randomize; edEingabe.Text := ''; lAusgabe.Caption := ''; startTime := GetTickCount; lZeit.Caption := IntToStr( GetTickCount - startTime )+'ms'; if Optionen1 = oEasy then |
Steht die ganze Zeit auf 0
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mo 20.02.12 15:16
Du musst das Caption des Labels noch in einem Timer setzen (also immer wieder). Also eine TTimer-Komponente nutzen und im OnTimer das Caption setzen. Fertig
Falls es dann flackert, setze Form1.DoubleBuffered:=true;
Edit: Du solltest den Timer erst aktivieren (Enabled:=true) beim Neustart.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Blubba 
      
Beiträge: 16
|
Verfasst: Mo 20.02.12 15:30
Ist das Jetzte Normal das er Den Text immer wieder Löscht der ins Editfeld kommt und den Hinweis? Und jetzte geht das mit Versuchen zurück setzten nichtmehr-.-
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mo 20.02.12 15:34
Es sollte etwa so aussehen:
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.TimerOnTimer(Sender: TObject); begin lZeit.Caption := IntToStr( GetTickCount - startTime )+'ms'; end; |
klingt ganz so aus würdest du hier zu viel machen lassen.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|