Watten - Das Spiel von dem meine Klasse nicht genug bekommt! :D

  • Hallo liebe AutoIt-Gemeinde!
    Ihr kennt warscheinlich das Kartenspiel "Watten". Ich würde gerne eine PC-version machen und hab irgendwie keinen Ansatz, wie ich:
    1. die Karten nicht doppelt ausgebe,
    2. welche Karte den Stich macht.
    Ich will bitte erst noch mal keine Scripte, sonst lern ich ja nichts.
    MfG. tobi_girst

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

  • Gefunden im englischen Forum! Aber das hilft mir nicht weiter.
    Ich glaub, ich mach mir erstmal alles selber. Schritt für Schritt :D
    1) Wie kann ich Dateinahmen zufallsgesteuert mischen, aber so dass keine doppelt kommt? ZB Array, mir "unter1.bmp", "unter2.bmp", ... drinnen?
    Edit: Wer einen Scanner und Watterkarten (doppeldeutsch, 36 Blatt) hat, würde mich um f´jede Karte freuen!

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

    Einmal editiert, zuletzt von tobi_girst (28. Mai 2009 um 21:30)

  • Watten?

    Wir im Pott kennen nur WACKEN *fg*

    Öhm ich meine unser "King of Array" aka BugFix hatte vor kurzem noch ein angepasstes Script/UDF hier geposted welches die Windowskarten "zur Verfügung" stellt.

    Ich denke bei Fragen zur Programmierlogik ist ein wenig Quelltext hilfreich :thumbup: viel Spaß beim Coden...

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

  • Doppeldeutsche Spielkarten brauch ich, nicht die 'Solitär'-Karten ;(
    Brauche halt etwas QT bitte

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

  • Doppeldeutsche Spielkarten brauch ich, nicht die 'Solitär'-Karten ;(

    Höh ? Doppeldeutsch ? Ich kenne Skat-Blätter und Poker/Romme/Bridge etc. beide kannste mit den Windows Karten / Farben ideal umsetzen *grübel*

    Wenn dir das zu schwer ist, bastel dir ersteinmal ein Array mit allen Karten - wenn diese verteilt sind, kannste sie ja rauslöschen etc.

    Wenn du das nicht alles im Kopf zusammen denken kannst, "male" ersteinmal schriftlich alle Schritte auf - Programmablauf, Module etc - diese kansnt du dann Step by Step codieren und später zusammenfügen, bzw erweitern.

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

  • @kal_el: Thx, aber da fehlt die "WELI" (Schell 6er)
    ctec: thx, werd ich machen!
    MfG. tobi_girst

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

  • Speichere doch alle Daten in einem normalem Array, und dann nehme folgende Funktion:

    [autoit]

    Local $temp[1] = [0], $X = 1
    Local $numElements = Ubound($myArray) - 1
    ;Loop through all array elements
    For $X = 1 to $numElements
    ;Store copy of current element
    $temp[0] = $myArray[$X]
    ;MsgBox(0, 0, "$temp[0] = " & $myArray[$X])

    $random = Random($X, $numElements, 1)
    ;MsgBox(0, 0, "Random number = " & $Random)
    ;Overwrite current element with random element
    $myArray[$X] = $myArray[$random]
    ;MsgBox(0, 0, "$myArray[$X] = " & $myArray[$x] & " - swapped data w/ " & $random)

    [/autoit][autoit][/autoit][autoit]

    ;Overwrite random element with original copy of current element
    $myArray[$random] = $temp[0]
    Next
    EndFunc ;==>ArrShuffle

    [/autoit]

    So aus dem englischem Forum...

  • muh_kuh: Danke, aber ich hab schon welche in der richtigen Größe!
    @MattiasG.: Da fehlt die 1. Zeile (Func (..)

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

  • So, ich hab jetz die 1. Zeile, der Code ist etwas verändert als deiner.(Link)
    Aber wie verwende ich die Func? Wie soll ich sie einbauen?

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    Opt ("guicoordmode", 0)
    $cards = _FileListToArray (@scriptdir & "\cards", "*.bmp", 1)
    $card=$cards[Random (1, 32, 1)]
    $back = "herz-ass.bmp"
    $cardwidht = 50
    $cardwidth = 129;150
    $cardheight = 200

    [/autoit] [autoit][/autoit] [autoit]

    $card_1 = "cards\" & $cards [Random (1, 32, 1)]
    $card_2 = "cards\" & $cards [Random (1, 32, 1)]
    $card_3 = "cards\" & $cards [Random (1, 32, 1)]
    $card_4 = "cards\" & $cards [Random (1, 32, 1)]
    $card_5 = "cards\" & $cards [Random (1, 32, 1)]

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate ("Watten - Programmiert von Tobias Girstmair (http://www.girstmair.tk)", 800-104, 800-50);, 0, 0)
    GUICtrlCreateLabel ("Derzeit nur Stich-Watten (Ohne Ansagen, ohne Spezial-Karten)", 0, 0)
    GUICtrlCreatebutton ("", 25, 25, $cardwidth, $cardheight, 0x0080)
    GUICtrlSetImage (-1, "cards\back\back.bmp")
    GUICtrlCreatebutton ("", 129, 0, $cardwidth, $cardheight, 0x0080)
    GUICtrlSetImage (-1, "cards\back\back.bmp")
    GUICtrlCreatebutton ("", 129, 0, $cardwidth, $cardheight, 0x0080)
    GUICtrlSetImage (-1, "cards\back\back.bmp")
    GUICtrlCreatebutton ("", 129, 0, $cardwidth, $cardheight, 0x0080)
    GUICtrlSetImage (-1, "cards\back\back.bmp")
    GUICtrlCreatebutton ("", 129, 0, $cardwidth, $cardheight, 0x0080)
    GUICtrlSetImage (-1, "cards\back\back.bmp")

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreatebutton ("", -330, 250, $cardwidth, $cardheight, 0x0080)
    ;~ GUICtrlSetImage (-1, $cards[random (1, 31, 1)])
    $card__2 = GUICtrlCreatebutton ("", 90, 05, $cardwidth, $cardheight, 0x0080)
    ;~ GUICtrlSetImage (-1, $cards[random (1, 31, 1)])

    [/autoit] [autoit][/autoit] [autoit]

    $1 = GUICtrlCreatebutton ($card_1, -360+90-6, 250, $cardwidth, $cardheight, 0x0080)
    GUICtrlSetImage (-1, $card_1)
    $2 = GUICtrlCreatebutton ($card_2, 129, 0, $cardwidth, $cardheight, 0x0080)
    GUICtrlSetImage (-1, $card_2)
    $3 = GUICtrlCreatebutton ($card_3, 129, 0, $cardwidth, $cardheight, 0x0080)
    GUICtrlSetImage (-1, $card_3)
    $4 = GUICtrlCreatebutton ($card_4, 129, 0, $cardwidth, $cardheight, 0x0080)
    GUICtrlSetImage (-1, $card_4)
    $5 = GUICtrlCreatebutton ($card_5, 129, 0, $cardwidth, $cardheight, 0x0080)
    GUICtrlSetImage (-1, $card_5)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel ("0 : 0", 90, -20)
    GUISetState ()
    While 1
    Switch GUIGetMsg()
    Case -3
    Exit 0
    Case $1
    GUICtrlSetImage ($card__2, $card_1)
    GUICtrlDelete ($1)
    Case $2
    GUICtrlSetImage ($card__2, $card_2)
    GUICtrlDelete ($2)
    Case $3
    GUICtrlSetImage ($card__2, $card_3)
    GUICtrlDelete ($3)
    Case $4
    GUICtrlSetImage ($card__2, $card_4)
    GUICtrlDelete ($4)
    Case $5
    GUICtrlSetImage ($card__2, $card_5)
    GUICtrlDelete ($5)
    EndSwitch
    WEnd
    #Region Func
    Func _ArrayShuffle(ByRef $aArray, $iBase = 0, $iUBound = Default)
    If Not IsArray($aArray) Then Return SetError(1, 0, 0)
    If UBound($aArray, 0) <> 1 Then Return SetError(2, 0, 0)

    Local $temp, $rand
    If $iUBound = Default Or $iUBound = 0 Then $iUBound = UBound($aArray) - 1
    For $i = $iBase To $iUBound
    $temp = $aArray[$i]
    $rand = Random($iBase, $iUBound, 1)
    $aArray[$i] = $aArray[$rand]
    $aArray[$rand] = $temp
    Next
    EndFunc
    #EndRegion Func

    [/autoit]


    Momentan verwendet er einfach $cards[Random (1, 32, 1)]

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)