![]() |
Hänge bei units und umsetzung fest
Liste der Anhänge anzeigen (Anzahl: 1)
hey,
ich bin am das Spiel Böse eins am Programieren und habe einige Probleme Das Spiel Man würfelt so lange, bis man die Zahl eins erreicht hat oder vorher die summierten würfeln Zahlen gespeichert hat. Wer ne eins Würfelt bekommt seinen Aktuellen Spielstand gelöscht, sofern er sie nicht vorher gespeichert hat. Problem Ich versuche grade die Spiele zum laufen zu bringen, habe einen Unit würfel und einen unit gamer. ICh weiß aber nicht wie ich den Spielstand auf dem Hauptfenster ändern soll ?. Für euer hilfe wäre ich dankbar. |
Re: Hänge bei units und umsetzung fest
Ui Ui du hast noch nicht viel programmiert, was.
Also
Delphi-Quellcode:
ist man ganz Böse
Procedure dice();
Begin randomize; Zahl := trunc(random(6)) + 1; Case Zahl Of 1: fenster_frm.Image1.Picture.LoadFromFile('one.bmp'); 2: fenster_frm.Image1.Picture.LoadFromFile('two.bmp'); 3: fenster_frm.Image1.Picture.LoadFromFile('tree.bmp'); 4: fenster_frm.Image1.Picture.LoadFromFile('four.bmp'); 5: fenster_frm.Image1.Picture.LoadFromFile('five.bmp'); 6: fenster_frm.Image1.Picture.LoadFromFile('six.bmp'); End; End; Du greifst auf eine Andere Unit und deren Objekte und überhaupt und böse zu.
Delphi-Quellcode:
und in unit1
function dice():integer;
Begin result := random(6) + 1; End;
Delphi-Quellcode:
Wenn du das schon unbedingt so kompliziert machen willst.
Procedure Tfenster_frm.dice_btnClick(Sender: TObject);
Begin Case dice Of 1: Image1.Picture.LoadFromFile('one.bmp'); 2: Image1.Picture.LoadFromFile('two.bmp'); 3: Image1.Picture.LoadFromFile('tree.bmp'); 4: Image1.Picture.LoadFromFile('four.bmp'); 5: Image1.Picture.LoadFromFile('five.bmp'); 6: Image1.Picture.LoadFromFile('six.bmp'); End; End; Allerdings gäbe es da noch ettliche Verbesserungen .. Mir scheint das sind 4 Spieler also baust du dir eine Spieler Klasse und machst 4 instanzen davon, KEINE globalen Variablen und dann eine Vernünftige Spielsteuerung von Unit1 aus. Ich hoffe ich habe dir nicht all zu viele Fremdwörter um die Ohren gehaun. [Edit] Ach ja Randomize wird nur 1 mal aufgerufen, und nicht jedesmal in Dice. |
Re: Hänge bei units und umsetzung fest
Liste der Anhänge anzeigen (Anzahl: 2)
danke für den tipp mit dem würfeln ^^..
Habe jetzt mal weiter gebastelt und habe ein Problem Jedesmal wenn ich würfle zählt es die summen nicht richtig zusammen !? .. Laut bilder würfel zeigt es ne 3 und dann ne 5 an ! aber als SUmme kommt da zb 7 raus oder so ... Anhang habe ich hochgeladen |
Re: Hänge bei units und umsetzung fest
Lol,
Du rufst dice auf, jeder Aufruf erzeugt einen neuen Zufallswert, willst du mit dem Wert noch mehr machen, so must du ihn zwischenspeichern. In etwa so :
Delphi-Quellcode:
Procedure Tfenster_frm.dice_btnClick(Sender: TObject);
Var Dice_result: Integer; Begin Dice_result := dice; Case Dice_result Of 1: Image1.Picture.LoadFromFile('one.bmp'); 2: Image1.Picture.LoadFromFile('two.bmp'); 3: Image1.Picture.LoadFromFile('tree.bmp'); 4: Image1.Picture.LoadFromFile('four.bmp'); 5: Image1.Picture.LoadFromFile('five.bmp'); 6: Image1.Picture.LoadFromFile('six.bmp'); End; If Dice_result = 1 Then Begin If spieler = 1 Then Begin punkte_1 := 0; summe_edt.Text := floattostr(punkte_1); spieler := 2; gamer_label.Caption := 'Spieler 2 ist am Zug' End Else Begin punkte_2 := 0; summe_edt.text := floattostr(punkte_2); spieler := 1; gamer_label.Caption := 'Spieler 1 ist am Zug' End; End Else Begin If spieler = 1 Then Begin punkte_1 := punkte_1 + Dice_result; summe_edt.text := floattostr(punkte_1); End Else Begin punkte_2 := punkte_2 + Dice_result; summe_edt.Text := floattostr(punkte_2); End; End; End; |
Re: Hänge bei units und umsetzung fest
Liste der Anhänge anzeigen (Anzahl: 1)
Dankee für die hilfe jetzt hänge ich an einem weiteren problem xD !!..
Ich habe versucht im Spiel einen Limit berreich zu erstellen das ich zb bei eingabe im edit fel 500 Punkte dann die MSG kommt das Spiele XYZ gewonnnen hat.. es kommt aber folgende fehler meldeung :( .. [Warnung] ufenster.pas(126): Variable 'limit' ist möglicherweise nicht initialisiert worden [Fehler] ufenster.pas(134): Deklaration erwartet, aber 'ELSE' gefunden [Fehler] ufenster.pas(135): '.' erwartet, aber ';' gefunden [Fataler Fehler] Badone.dpr(6): Verwendete Unit 'ufenster.pas' kann nicht compiliert werden |
Re: Hänge bei units und umsetzung fest
Hallo,
was machst du denn da?
Delphi-Quellcode:
procedure Tfenster_frm.limit_radiobtnClick(Sender: TObject);
var limit : integer; begin IF limit_radiobtn.Checked = true THEN limit := StrToInt(limit_edt.Text);{wenn der Code hier nicht ausgeführt wurde dann ist die Variable 'limit' möglicherweise nicht initialisiert worden} IF limit = punkte_2 THEN ShowMessage('Winner ist (game2_edt.Text)') ELSE IF limit = punkte_1 THEN ShowMessage('Winner ist (game1_edt.Text)') ELSE END;//<-- hier ist die Prozedur schon zu Ende Else.//was soll denn der Punkt hier bringen? END; limit := 0; end. |
Re: Hänge bei units und umsetzung fest
ich verusch halt die limit grenze zu bestimmen und , dejenige der sie erreicht hat, soll halt als gewinner angezeigt werden,
Delphi-Quellcode:
procedure Tfenster_frm.limit_radiobtnClick(Sender: TObject); var limit : integer; begin IF limit_radiobtn.Checked = true THEN limit := StrToInt(limit_edt.Text);{hier habe ich versucht halt im limit edt von str in integer umzuwandeln} IF limit = punkte_2 THEN ShowMessage('Winner ist (game2_edt.Text)') ELSE IF limit = punkte_1 THEN ShowMessage('Winner ist (game1_edt.Text)') ELSE END;//hier soll eigentlich nix passieren hmm mus noch mal ändern :(.. Else//hier soll eigentlich nix passieren hmm mus noch mal ändern :(.. END; limit := 0; end. |
Re: Hänge bei units und umsetzung fest
wenn Du den Abschnitt nur behandeln willst wenn Limit gewählt ist:
Delphi-Quellcode:
Wenn der Abschnitt immer durchlaufen werden soll:
procedure Tfenster_frm.limit_radiobtnClick(Sender: TObject);
var limit : integer; begin IF limit_radiobtn.Checked THEN begin limit := StrToInt(limit_edt.Text); IF limit = punkte_2 THEN ShowMessage('Winner ist (game2_edt.Text)') ELSE begin // hier muss kein begin+end, ist aber übersichtlicher nach dem else IF limit = punkte_1 THEN ShowMessage('Winner ist (game1_edt.Text)'); end; END; limit := 0; end;
Delphi-Quellcode:
procedure Tfenster_frm.limit_radiobtnClick(Sender: TObject);
var limit : integer; begin IF limit_radiobtn.Checked THEN limit := StrToInt(limit_edt.Text); else limit := 12345; // sonst inst unklar, welcher Wert in Limit steht! IF limit = punkte_2 THEN ... stahli |
Re: Hänge bei units und umsetzung fest
Liste der Anhänge anzeigen (Anzahl: 1)
ich habe jetzt 2 würfeln und will das bei einer 1 den spieler wechselt !? ..
habe das mit
Delphi-Quellcode:
klappt aber irgendwie nicht
If (Dice_result = 1 or Dice2_result = 1) Then Begin
If spieler = 1 Then Begin punkte_1 := 0; summe_edt.Text := floattostr(punkte_1); spieler := 2; gamer_label.Caption := game2_edt.Text End Else Begin punkte_2 := 0; summe_edt.text := floattostr(punkte_2); spieler := 1; gamer_label.Caption := game1_edt.Text End; End Else Begin If spieler = 1 Then Begin punkte_1 := punkte_1 + Dice_result; summe_edt.text := floattostr(punkte_1); End Else Begin punkte_2 := punkte_2 + Dice_result; summe_edt.Text := floattostr(punkte_2); End; End; |
Re: Hänge bei units und umsetzung fest
Was heißt "klappt nicht"? Ändere die erste Zeile erst einmal.
Delphi-Quellcode:
If (Dice_result = 1) or (Dice2_result = 1) Then Begin
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 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 by Thomas Breitkreuz