HI!
Bitte helft mir ich sitze nun schon stunden- und tagelang an diesem Problem. Bitte erwartet nicht zuviel von mir, da man in der 11.Klasse bei uns net wirklich viel im Unterricht lernt:-(
Viele von euch kennen bestimmt das Spiel "Mastermind". Der Spieler Versucht eine ihm nicht bekannte,mehrstellige Zahl zu zu bestimmen, indem er mehrmals Zahlen rät oder kombiniert, die jeweils vom Moderator bewertet werden. Ziel ist es so wenig wie möglich Versuche dafür zu benötigen.
Ich habe versucht dieses Spiel zu proggen. Leider mit mäßigem Erfolg. Hier mein Code für die Prozedur die die eingegebene Zahl bewertet.
Kleine Erklärung zur Funktion:
z=vom PC generierte Zahl, die es zu erraten gilt
a und b sind die Bewertungen(ein * für jede richtige Zahl an der richtigen Stelle und ein ! für eine richtige Zahl an der falschen Stelle
level=Anzahl der Stellen, die die zu erratene Zahl haben soll
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:
| procedure TForm1.Button1Click(Sender: TObject); var e,a,b,z:string; i,f:integer; begin z:=x; a:=''; b:=''; e:=edit1.Text; if length(e)<>level then showmessage ('Bitte Eingabe Korrigieren')else begin; for i:=1 to level do if e[i]=z[i] then begin z[i]:='a'; a:=a+'*';end; for i:=1 to level do if (z[i]<>'a') then begin for f:=1 to level do begin if (z[f]<>'a') then begin if e[f]=z[i] then begin z[f]:='a'; z[i]:='a'; b:=b+'!';end; end; end; end; inc(versuche); if length(a+b)=0 then a:=' -- '; listbox1.Items.add(e+' '+a+b); panel1.Caption:=IntToStr(versuche)+'. Versuch'; if e=x then showmessage('Sie haben die Zufallszahl nach '+IntToStr(versuche)+ ' Versuchen erraten'); end; end; |
Mein Problem ist am besten in einem Beispiel formuliert:
generierte Zahl: 1234
vom user eingegebene Zahl: 4321
Bewertung: !! <-- Es müsste allerdings !!!! erscheinen
