C# Problem beim Anzeigen von Bildern

Basser92

Newbie
Dabei seit
Apr. 2011
Beiträge
3
Ich programmiere grade ein Pokerspiel und habe ein kleines Problem mit dem Ausgeben bzw. Anzeigen der verschiedenen Kartenbilder.
Die Karten habe ich in ein Array gepackt, lasse mithilfe eines Zufallsgenerators eine Karte auswählen und packe diese dann in ein zweites Array rein. Bei allen Karten wird vorher geprüft, ob sie schon in meinem zweiten Array sind. Falls ja, wird eine neue Karte gewählt, um doppelte Karten zu vermeiden.

Beim Starten des Programmes hat es mir jedoch 7 gleiche Karten angezeigt (von 9 Karten), obwohl die Werte unterschiedlich waren. Woran kann das liegen?

Ich muss dazusagen, dass ich noch Anfänger bin. Also bitte nicht zu kompliziert erklären ;)
 

Tumbleweed

Captain
Dabei seit
März 2008
Beiträge
3.598
Hast du vielleicht das Bild in der Karten-Klasse statisch deklariert? Ich befürchte ein bisschen code musst du rausrücken. :)
 
P

phelix

Gast
Wär doch deutlich einfacher, die Karten aus dem ersten Array zu entfernen wenn sie ins zweite kommen... zudem auch performanter.
 

Tumbleweed

Captain
Dabei seit
März 2008
Beiträge
3.598
Ich würde auch jeder Karte eine ID geben, damit sie auf jeden Fall einzigartig ist.
 

Basser92

Newbie
Ersteller dieses Themas
Dabei seit
Apr. 2011
Beiträge
3
Kein Problem.

Code:
Sprung1: Zahl12 = Zufall.Next(0, 52);
            Zahl2 = Karten[Zahl12];
            if (Zahl2 == Zahl1)
            {
                goto Sprung1;
            }
            Ergebnis[1] = Zahl2;

Das ist meine Schleife, um die Karten auszuwählen. Das hab ich dann für alle 9 Karten gemacht (Ich weiß, es ist kompliziert, aber ich weiß nicht, wie es anders gehen soll xD)

Code:
if (Karte1 == 27)
            {
                pictureBoxFeld1.Image = Poker_Spiel.Properties.Resources.kreuz2c_152;
            }

Und so gebe ich die Bilder aus. Je nach Karte und Position variiert der Wert der Variable und die pictureBox.

EDIT: @phelix: Leider hab ich keine Ahnung von Arrays. So hatte ich mir das eigentlich auch gedacht, hab aber gelesen, dass man keine Zeilen aus dem Array löschen kann. Lediglich den Wert 0 setzen, was mir aber nichts bringt, da dieser Wert dann auch ausgewählt werden kann.
 
Zuletzt bearbeitet:

Tumbleweed

Captain
Dabei seit
März 2008
Beiträge
3.598
Oh je oh je ich glaube du wagst dich da bereits an ein zu großes Projekt heran. Dir fehlen noch ein paar Grundlagen wie die Komposition von Objekten. ;)

Und goto verbanne mal ganz schnell aus deinem Wissensschatz. Das benutzt man nicht mehr!
 

Basser92

Newbie
Ersteller dieses Themas
Dabei seit
Apr. 2011
Beiträge
3
Das kann gut sein :D Wir sollten in Informatik ein Spiel programmiern und da ein Kumpel und ich gern pokern ham wir uns gedacht, dass wir versuchen Poker zu programmiern.

Ich weiß, dass goto nicht schön ist. Ich würde das auch gerne übersichtlicher machen, aber mir fällt auf die schnelle keine Schleife ein, die funktioniert :D

Mir gehts es im Moment bei dem Projekt nur dadrum, dass die Ausgabe funktioniert. Es ist nämlich ein bisschen verwirrend, dass die generierten Werte vorhanden sind, aber nicht so ausgegeben werden, wie sie sollen.

EDIT: Dann experimentiere ich mal ein bisschen mit der for-Schleife rum und les ein bisschen was über die List<T>. Mal schauen, ob ich das auf die Reihe krieg.
 
Zuletzt bearbeitet:

DoNG

Lt. Junior Grade
Dabei seit
Sep. 2008
Beiträge
401
Keine Schleife? Na dann hier:
Code:
do
{
   Zahl12 = Zufall.Next(0, 52);
   Zahl2 = Karten[Zahl12];
} while (Zahl2 == Zahl1);
Ergebnis[1] = Zahl2;

Und die einfachere Art:
Code:
List<int> deck = new List<int>(9);
int karte;
for (int i = 0; i < 9; i++) // 9 Karten in der Hand
{
   do
   {
      karte = Random.Next(0,52);       
   } while (deck.Count > 0 && deck.Any(k=>k == karte)) // Überprüfen ob wir schon Karten in der Hand haben, falls ja dann ob eine der Karte schon gezogen wurde
   deck.Add(karte);
}
 
Zuletzt bearbeitet:
Top