AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe bei MasterMind Problem

Ein Thema von thaflo · begonnen am 13. Jul 2004 · letzter Beitrag vom 14. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2      
thaflo

Registriert seit: 7. Jul 2004
10 Beiträge
 
#1

Hilfe bei MasterMind Problem

  Alt 13. Jul 2004, 18:23
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:
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;
kann mir jemand denkanstöße verpassen, wie ich das regeln könnte?

vielen dank,
Florian
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2

Re: rauchender Kopf...

  Alt 13. Jul 2004, 18:27
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).
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
MikeS

Registriert seit: 3. Mai 2003
Ort: München
157 Beiträge
 
Delphi 7 Professional
 
#3

Re: rauchender Kopf...

  Alt 13. Jul 2004, 19:52
Moin zusammen,

geh an die sache am besten so ran wie du es auch per "hand" lösen würdest!
Mike Schröder
Fleiß kann man vortäuschen, faul muss man schon selber sein!
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#4

Re: rauchender Kopf...

  Alt 13. Jul 2004, 20:48
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:
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
denn du willst doch nur ausgeben, wie poft weiss uznd we oft schwarz, oder?
oder war schwarz nur richtige farbe und weiss richtigeb farbe und position?

naja, ich hoffe der code hilft...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
MikeS

Registriert seit: 3. Mai 2003
Ort: München
157 Beiträge
 
Delphi 7 Professional
 
#5

Re: rauchender Kopf...

  Alt 13. Jul 2004, 21:15
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!
Mike Schröder
Fleiß kann man vortäuschen, faul muss man schon selber sein!
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#6

Re: rauchender Kopf...

  Alt 13. Jul 2004, 21:41
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....
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#7

Re: rauchender Kopf...

  Alt 13. Jul 2004, 22:37
willst du partikeleffekte für den rauchenden kopf verwenden ?
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
thaflo

Registriert seit: 7. Jul 2004
10 Beiträge
 
#8

Re: rauchender Kopf...

  Alt 14. Jul 2004, 10:23
Zitat von supermuckl:
willst du partikeleffekte für den rauchenden kopf verwenden ?
Was hast du denn geschluckt?

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:
...
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;
...
Es funktioniert, anbei das Spiel, bitte Feedback.

Vielen Dank,
Florian
Angehängte Dateien
Dateityp: exe prmastermind.exe (453,5 KB, 24x aufgerufen)
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#9

Re: rauchender Kopf...

  Alt 14. Jul 2004, 10:31
naja hätte jetzt gedacht du merkst selber was ich meine..

es ist besser den topicnamen etwas aussagekräftiger zu gestalten
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
thaflo

Registriert seit: 7. Jul 2004
10 Beiträge
 
#10

Re: Hilfe bei MasterMind Problem

  Alt 14. Jul 2004, 10:49
hab ihn jetzt geändert, ok so?

Gruss,
florian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:39 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