![]() |
Hilfe bei MasterMind Problem
Hallo!
Ich bin verzweifelt: Ich bin beim MasterMind Spiel und komme nicht mehr weiter. ich habe zwei arrays mit farben: spieler-array[] spiel-array[] nun muss ich den spieler-array mit dem array des spiels vergleichen und auswerten. wieviele farben sind am richtigen ort, welche vorhanden aber am falschen ort. das ist ja einfach, aber im spieler-array können zwei gleiche farben vorkommen, und im spiel-array auch. mein ansatz:
Delphi-Quellcode:
kann mir jemand denkanstöße verpassen, wie ich das regeln könnte?
procedure TMainForm.btnTipClick(Sender: TObject);
var treffer, halbtreffer, iloop,loop:Integer; begin treffer:=0;//farbe am richtigen ort halbtreffer:=0; //farbe vorhanden aber am falschen ort anz:=0 for loop := 0 to level do begin if playerColors[loop] = gameColors[loop] then begin inc(treffer); Continue; end; for iloop:=0 to level do begin if (playerColors[loop] = gameColors[iloop]) then inc(halbtreffer); end; end; addTipLabels; if treffer = level+1 then ShowMessage('JUPPI, gewonnen! Mit '+#13+IntToStr(versuche)+' Versuchen!'); end; vielen dank, Florian |
Re: rauchender Kopf...
Hallo thaflo,
du musst die merken, welche Felder im Spielarray schon bewertet sind. Diese beruecksichtigst du dann nicht mehr. Auch auf der Spielerseite musst du dir merken, welches Feld schon bewertet wurde und dieses dann im zweiten Durchlauf auslassen. Der erste Durchlauf prueft nur auf "ganz richtig" der zweite Durchlauf auf "fast richtig" (falscher Platz). |
Re: rauchender Kopf...
Moin zusammen,
geh an die sache am besten so ran wie du es auch per "hand" lösen würdest! |
Re: rauchender Kopf...
oder einfach alles mit allem vergleichen
das wäre dann so in etwa: spiel[1] - spieler[1] spiel[1] - spieler[2] spiel[1] - spieler[3] spiel[1] - spieler[4] spiel[2] - spieler[1] spiel[2] - spieler[2] spiel[2] - spieler[3] spiel[2] - spieler[4] spiel[3] - spieler[1] spiel[3] - spieler[2] spiel[3] - spieler[3] spiel[3] - spieler[4] spiel[4] - spieler[1] spiel[4] - spieler[2] spiel[4] - spieler[3] spiel[4] - spieler[4] also zusammengefasst:
Delphi-Quellcode:
denn du willst doch nur ausgeben, wie poft weiss uznd we oft schwarz, oder?
for i:=1 to 4 do //für alle felder in spiel
for j:=1 to 4 do //für alle felder in spieler if spiel[i]=spieler[j] //wenn die farbe gleich ist then if i=j //wenn die position und die farbe gleich ist, dann schwarz+1 then schwarz:=schwarz+1 else weiss:=weiss+1; //wenn farbe gleich und position verschieden dann weiss+1 oder war schwarz nur richtige farbe und weiss richtigeb farbe und position? :gruebel: :gruebel: :gruebel: naja, ich hoffe der code hilft... |
Re: rauchender Kopf...
hallo glkbkk
alles mit allem vergleichen ist wohl kaum die richtige lösung. was machst du denn wenn du schon einen schwarzen hast. dann zählst du ihn bei den weissen ja noch einmal! :gruebel: |
Re: rauchender Kopf...
stimmt, es musste heissen
for i:=1 to 4 do for j:=i to 4 do.... dann sollte es funzen ausserdem, sind doch nur 16, jetzt sogar nur 10.... |
Re: rauchender Kopf...
willst du partikeleffekte für den rauchenden kopf verwenden ?
|
Re: rauchender Kopf...
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Danke für die Tipps, Mr Spock seiner hat geholfen. @MikeS -danke- aber das hab ich vor dem posten hier versucht :-) @glkbkk - bei der lösung stimmt das ergebnis nicht. Habs so gelöst:
Delphi-Quellcode:
Es funktioniert, anbei das Spiel, bitte Feedback.
...
for loop := 0 to level do begin spiel[loop]:=gameColors[loop]; //array kopieren spieler[loop]:=playerColors[loop]; //array kopieren end; for loop := 0 to level do begin //treffer aussortieren if spieler[loop] = spiel[loop] then begin inc(treffer); spieler[loop]:=0; spiel[loop]:=0; end; end; for loop:=0 to level do for iloop:=0 to level do if (spieler[loop] = spiel[iloop])and (spieler[loop]<>0) then begin inc(halbtreffer); spiel[iloop]:=0; spieler[loop]:=0; end; ... Vielen Dank, Florian |
Re: rauchender Kopf...
naja hätte jetzt gedacht du merkst selber was ich meine..
es ist besser den topicnamen etwas aussagekräftiger zu gestalten :) |
Re: Hilfe bei MasterMind Problem
hab ihn jetzt geändert, ok so? :wink:
Gruss, florian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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