myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Gemeinschaft » .NET-Komponenten und C#-Snippets » Spielkartenbibliothek
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Spielkartenbibliothek

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.241
Entwicklungsumgebung: Visual Studio 2010 Express


inflames2k ist offline

Spielkartenbibliothek

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo, liebe Community,

da ich nach längerer Suche keine Klasse/Klassenbibliothek gefunden habe, die analog zur "cards.dll", welche es bis Windows XP gab, zeichnet, habe ich mir überlegt selbst eine zuerstellen.

Beschreibung:

Die Bibliothek besitzt 2 Klassen, Cards und Card.
Card stellt nur eine Klasse bereit, um einzelne Karten im Projekt nutzen zu können.
In der Klasse Cards befindet sich die Logik. - Ich habe mich auf eine Funktionalität ersteinmal beschränkt, da ich auf mehr momentan nicht angewiesen war.

Unterhalb der Klasse Cards befinden sich 4 enums.

SUIT (Enumerator des Kartentyps, Karo, Herz, Kreuz, Pik)

C#-Code:
public enum SUIT : int
{
    CLUBS = 0,
    DIAMOND = 1,
    HEARTS = 2,
    SPADES = 3
}

RANK (Die Kartenwerte)

C#-Code:
public enum Rank : int
{
    ACE = 0,
    TWO = 1,
    THREE = 2,
    FOUR = 3,
    FIVE = 4,
    SIX = 5,
    SEVEN = 6,
    EIGHT = 7,
    NINE = 8,
    TEN = 9,
    JACK = 10,
    QUEEN = 11,
    KING = 12
}

BACK (Der Hintergrund der Karte)

C#-Code:
public enum BACK : int
{
    BLUE = 0,  // blauer Kartenhintergrund
    RED,         // roter Kartenhintergrund
    UNUSED    // Wenn kein Hintergrund dargestellt werden soll ein roter Kreis
}

und zu guter letzt DrawMode

C#-Code:
public enum DrawMode : int
{
    mdFaceUp = 0,
    mdFaceDown
}

Wie man sieht wäre die Verwendung ganz ähnlich der "cards.dll", die bis Windows XP vorhanden war.

Desweiteren stellt die Klasse DrawCard bereit, in dieser wird die Karte gezeichnet.

C#-Code:
public void DrawCard(IntPtr hdc, int x, int y, int card, int drawmode, int back)
{
    Graphics graph = Graphics.FromHdc(hdc);
    Image imgCard;
    if (drawmode == (int)DrawMode.mdFaceUp)
    {
        imgCard = (Image)Properties.Resources.ResourceManager.GetObject("_" + card.ToString(), System.Globalization.CultureInfo.CurrentCulture);
    }
    else
    {
        imgCard = (Image)Properties.Resources.ResourceManager.GetObject("back_" + back.ToString(), System.Globalization.CultureInfo.CurrentCulture);
    }
    graph.DrawImage(imgCard, x, y, imgCard.Width, imgCard.Height);
    graph.Dispose();
    imgCard.Dispose();
}

Der Parameter "card" berechnet sich hierbei ebenfalls analog zur "cards.dll", nach der Formel: Suite + Rank * 4.

Der mode gibt an, ob die Karte verdeckt oder offen gezeichnet werden soll. - Wichtig ist hierbei, dass auch ein Hintergrund mit angegeben werden muss.

Somit hab ich hier eine andere Vorgehensweise zur "cards.dll" gewählt. Dort gibt es 2 Methoden, von denen eine die Karte und die andere eine verdeckte Karte zeichnet.

Die Karten liegen in der Bibliothek, wie auch aus der Methode DrawCard hervorgeht als Resourcen innerhalb der DLL vor.

Sollten euch Fehler oder Änderungsvorschläge einfallen, bin ich ganz offen und freue mich über Feedback.

Verwendung:

C#-Code:
Cards cards = new Cards();
IntPtr hdc = e.Graphics.GetHdc();
cards.DrawCard(hdc, 0, 0, 0, (int)DrawMode.mdFaceUp, (int)BACK.BLUE);

Hier würde ein Kreuz Ass an der angegebenen Position gezeichnet werden. - In diesem Fall in der linken oberen Ecke.

Schlagwörter: Kartenspiel, Karten, cards.dll, Spielkarten, Kartenspiel, Kartengrafiken


Dateianhang:
unknown PS.Cards.rar (29,44 KB, 608 mal heruntergeladen)

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von inflames2k am 27.02.2010 11:48.

27.02.2010 11:39 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.241
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Fiel mir doch eben auf, dass ich einen Screenshot anbringen sollte.

Der Screenshot stellt das oben genannte Verwendungsbeispiel dar.

inflames2k hat dieses Bild (verkleinerte Version) angehängt:
screen.gif
Volle Bildgröße

28.02.2010 02:24 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 11 Monate.
KleinerHacker
myCSharp.de-Mitglied

Dabei seit: 30.04.2009
Beiträge: 77


KleinerHacker ist offline

Windows 7

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

wie sieht denn das ganze bitte unter Windows 7 aus? Da gibt es ja keine cards.dll mehr. Was kann ich da verwenden?
13.02.2011 10:45 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Siassei Siassei ist männlich
myCSharp.de-Mitglied

Dabei seit: 15.02.2008
Beiträge: 401


Siassei ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von KleinerHacker:
wie sieht denn das ganze bitte unter Windows 7 aus? Da gibt es ja keine cards.dll mehr. Was kann ich da verwenden?

Zitat:
Wie man sieht wäre die Verwendung ganz ähnlich der "cards.dll", die bis Windows XP vorhanden war.

Zitat:
Die Karten liegen in der Bibliothek, wie auch aus der Methode DrawCard hervorgeht als Resourcen innerhalb der DLL vor.

Wer lesen kann ist klar im Vorteil großes Grinsen
13.02.2011 10:59 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 10 Jahre.
Der letzte Beitrag ist älter als 9 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 14.07.2020 12:11