Mastermind mit Zahlen
Hallo Forum,
Versuche als Anfänger seit ne knappe Monat einen Mastermind klon mit zahlen zu erstellen bin mit der Prog FAST fertig ( auch mit der nerven ) an einer stelle habe ich einen Bug festgestellt und krieg den irgendwie nicht korrigiert. Ablauf des Spiels ist... beim start des spiels wird 5 separate zahlen von comomputer generiert dieser vom spieler in 5 edit felder erraten werden müssen. bsp. von comp. generierte zahl ( gleiche Zahlen sind erlaubt ) 5 6 1 8 5 vom spieler angegebene zahl 6 5 8 5 5 ergebniss sollte so sein 0 richtige 3 falsche position vorkommende ergebniss ist bei mir 0 richtige 8 falsche pos. die vom spieler gegebene zahl 5 wird 3 mal vergleicht sollte aber NUR einmal vergleicht werden ....
Delphi-Quellcode:
habe vieles probiert leider ohne erfolg....
begin
richtig:=0; for i:=1 to 5 do If code[i] = geraten[i] Then inc(richtig); Label6.Caption:=IntToStr(richtig); // richtige Zahl richtige Position if richtig=5 then begin Image1.Visible:=True; ListBox2.Items.Insert(ListBox2.Items.Count-0,' '+Edit6.Text+' '+' '+Label16.Caption+' '+' '+Counter.Text+'.'+Label18.Caption+' '+' '+Label17.Caption); //Bewertung abgeben end; falsch:=0; // Zähler zurück setzen for i:=1 To 5 Do // zahlen vergleich If code[i]<>geraten[i] Then for j:= 1 to 5 do if geraten[i]=code[j] then inc(falsch); Label7.Caption:=IntToStr(falsch); ListBox1.Items.Insert(Listbox1.Items.Count-1,' '+Edit1.Text+' '+Edit2.Text+' '+Edit3.Text+' '+Edit4.Text+' '+Edit5.Text+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+Label6.Caption+' '+' '+' '+' '+' '+' '+' '+Label7.Caption); if count=10 then begin counter.Color:=clred; if Application.MessageBox('noch ein Versuch?','VERLOREN',36)= 7 then Close //Nochmal versuchen else Edit6.Enabled:=True; Counter.Color:=clWhite; Count:=0; Label6.Caption:=IntToStr(richtig); Label7.Caption:=IntToStr(falsch); ListBox2.Items.Insert(ListBox2.Items.Count-0,' '+Edit6.Text+' '+' '+Label16.Caption+' '+' '+Counter.Text+'.'+Label18.Caption+' '+' '+Label17.Caption); end; end; end; würde mich für eure antworten sehr freuen danke schonmal im voraus... [edit=Dax][delphi]-Tags... :roll: Mfg, Dax[/edit] |
DP-Maintenance
Dieses Thema wurde von "Dax" von "Freeware" nach "Sonstige Fragen zu Delphi" verschoben.
Und die Rubrik.. |
Re: Mastermind mit Zahlen
Zitat:
Hallo dreamsahin, und Willkommen in der DP! :cheers: Wie das Dax korrigiert hat, bitte die Delphi-Tags setzten, wenn Du Quellcode schreibst... Zu Deinem Problem: Du könntest Dir ein Array einbauen, indem Du speicherst, ob die Stelle schon geprüft wurde. |
Re: Mastermind mit Zahlen
@Sunlight7 danke für dein Tip
:cheers: da liegt ja auch mein problem Habe mehrere Arrays versucht aber wie ich es in meiner Algo... einfüge weis ich net..
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Code: Array[1..5] of Integer; Geraten: Array[1..5] of Integer; vergleich: Array[1..5] of Integer; i,j,k,richtig,falsch: integer; name: String; begin richtig:=0; for i:=1 to 5 do If code[i] = geraten[i] Then inc(richtig); Label6.Caption:=IntToStr(richtig); // richtige Zahl richtige Position if richtig=5 then begin Image1.Visible:=True; ListBox2.Items.Insert(ListBox2.Items.Count-0,' '+Edit6.Text+' '+' '+Label16.Caption+' '+' '+Counter.Text+'.'+Label18.Caption+' '+' '+Label17.Caption); //Bewertung abgeben end; falsch:=0; // Zähler zurück setzen for i:=1 To 5 Do // zahlen vergleich If code[i]<>geraten[i] Then for j:= 1 to 5 do if geraten[i]=code[j] then inc(falsch); for k:= 1 to 5 do if geraten[k]=vergleich[k] then Label7.Caption:=IntToStr(falsch); ListBox1.Items.Insert(Listbox1.Items.Count-1,' '+Edit1.Text+' '+Edit2.Text+' '+Edit3.Text+' '+Edit4.Text+' '+Edit5.Text+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+Label6.Caption+' '+' '+' '+' '+' '+' '+' '+Label7.Caption); if count=10 then begin counter.Color:=clred; if Application.MessageBox('noch ein Versuch?','VERLOREN',36)= 7 then Close //Nochmal versuchen else Edit6.Enabled:=True; Counter.Color:=clWhite; Count:=0; Label6.Caption:=IntToStr(richtig); Label7.Caption:=IntToStr(falsch); ListBox2.Items.Insert(ListBox2.Items.Count-0,' '+Edit6.Text+' '+' '+Label16.Caption+' '+' '+Counter.Text+'.'+Label18.Caption+' '+' '+Label17.Caption); end; end; end; @Dax sorry Anfänger fehler.... |
Re: Mastermind mit Zahlen
Hab mir das mal angeguckt:
Warum machst Du das nicht gleich so?
Delphi-Quellcode:
richtig:=0;
falsch:=0; For i:=1 to 5 do If code[i]=geraten[i] then inc(richtig) else inc(falsch); Wozu ist das da?
Delphi-Quellcode:
For k:=1 to 5 do
if geraten[k]=vergleich[k] then Label7.Caption:=IntToStr(falsch); |
Re: Mastermind mit Zahlen
@Sunlight7
zu spät aber danke für dein Tip, Hatte das gleiche was du beschrieben hast auch mal probiert, als ergebniss bekomme ich die richtige zahlen sowie auch ri. zahlen falsche pos. habe immernoch einen bug im code
Delphi-Quellcode:
richtig wird korrekt ausgegeben das problem liegt das jeder angegebene falsche zahl mitgezählt... richtig:=0; falsch:=0; for i:= 1 to 5 do if geraten[i]=code[i] then inc(richtig) else inc(falsch); obwohl nicht geraten wird. |
Re: Mastermind mit Zahlen
Hallo,
sorry, das Problem verstehe ich nicht ganz. Hast Du außer geraten und code noch andere Arrays mit Daten? Nach Deinem Code-Fragment nach kann Richtig+Falsch nur 5 ergeben :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:37 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