Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Algorthymus um Memory-Karten zumischen


xxx2 - Do 03.04.08 12:57
Titel: Algorthymus um Memory-Karten zumischen
Hoi hoi,

ich möchte ein Memory-Spiel in C# programmieren.

Doch leider bin ich noch ziemlich am Anfang von C#.

Deshalb weiß ich leider nicht wie ich bei meinem Memory Spiel die Karten mischen kann
und das so das bei jedem Spielstart die Karten an einer anderen Stelle liegen.

Mfg xxx2


Delete - Do 03.04.08 14:15

Aus meinem Delphi Memory Spiel:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TMemoryField.Shuffle;
var
  i, i2             : Integer;

  procedure Swap(i1, i2: Integer);
  var
    Help            : Integer;
  begin
    Help := TCard(FCards.Items[i1]).Value;
    TCard(FCards.Items[i1]).Value := TCard(FCards.Items[i2]).Value;
    TCard(FCards.Items[i2]).Value := Help;
  end;

begin
  for i := 0 to FCards.Count - 1 do
  begin
    i2 := Random(FCards.Count - 1);
    Swap(i, i2);
  end;
end;


Th69 - Do 03.04.08 14:29

Für C# (bzw. .NET) brauchst du dann die System.Random-Klasse.

Du erstellst dir also erst ein Array deiner Memorykarten und vertauschst dann zufällig jede Karte einmal mit einer anderen (dies ist zufällig genug).


BenBE - So 06.04.08 15:52

Alternativ kann man auch Fisher-Yates nutzen ...Gibt's nen DelphiLib-Eintrag zu.