Einarmiger Bandit

  • Moin,
    Ich habe mein erstes Spiel fertig!!!*freu*
    Es handelt sich um das aus Casinos bekannte "Einarmiger Bandit"
    Das einzige was noch nicht richtig funktioniert ist das auslesen der verschlüsselten Bestenliste, vielleicht weiß ja jemand wo da der Fehler sitzt.
    Ich hoffe auf Rückmeldungen/Kritik..... :)

    Komplettes Spiel mit Bildern (ohne nicht spielbar) ist im Anhang zu finden.
    Die verwendet Grafiken sind selbstverstänlich lizenzfrei :thumbup:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.0.0
    Author: Frithjof

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

    Script Function:
    Ein Speil auf Basis des einarmigen Banditen.

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

    #ce ----------------------------------------------------------------------------

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

    ;Globale Variablen
    Global $Bild_Kirsche = @ScriptDir & "\Kirsche.jpg", $Bild_Banane = @ScriptDir & "\Banane.jpg", $Bild_Apfel = @ScriptDir & "\Apfel.jpg", $Bild_Casino = @ScriptDir & "\Casino.jpg"

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

    ;Includes

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

    #include <GUIConstants.au3>
    #include <Array.au3>
    #include <GuiConstantsEx.au3>
    #include <String.au3>

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

    ;Startbilder

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

    $Bild_Aktuell_1 = $Bild_Casino
    $Bild_Aktuell_2 = $Bild_Casino
    $Bild_Aktuell_3 = $Bild_Casino

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

    ;Startgeld

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

    $Start_Geld = 1000

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

    ;Haupt-GUI

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

    #Region ### START Koda GUI section ### Form=D:\Programme\Autoit\Koda\Forms\Einarmiger Bandit.kxf
    $Form1 = GUICreate("Form1", 800, 548, 193, 115)
    $Pic1 = GUICtrlCreatePic($Bild_Aktuell_1, 64, 176, 166, 173)
    $Pic2 = GUICtrlCreatePic($Bild_Aktuell_2, 318, 176, 166, 173)
    $Pic3 = GUICtrlCreatePic($Bild_Aktuell_3, 574, 176, 166, 173)
    $Label1 = GUICtrlCreateLabel("Geld:", 16, 24, 38, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    $Label2 = GUICtrlCreateLabel($Start_Geld, 64, 24, 70, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    $Label3 = GUICtrlCreateLabel("Einsatz:", 572, 27, 53, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    $Input1 = GUICtrlCreateInput("Ihr Einsatz", 632, 24, 97, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Start = GUICtrlCreateButton("Start", 64, 400, 681, 113, 0)
    GUICtrlSetFont(-1, 20, 800, 0, "Arial")
    $Bestenliste_Button = GUICtrlCreateButton("Bestenliste", 64, 50, 100, 30, 0)
    GUISetOnEvent($GUI_EVENT_CLOSE , "Beenden")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    ;On-Event
    Opt("GUIOnEventMode", 1)
    GUICtrlSetOnEvent($Start, "Start")
    GUICtrlSetOnEvent($Bestenliste_Button, "Bestenliste")

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

    ;Schleife
    While 1
    $Einsatz_Geld = GUICtrlRead($Input1) ;Kontrolliert alle 2 Millisekunden den Einsatz
    Sleep(2)
    WEnd

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

    ;Funktionen

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

    Func Beenden() ;Beenden bei klick auf Kreuz oben rechts
    $Name_Bestenliste = InputBox("Ihr Name", "Geben sie ihren Namen ein, damit dieser in der Bestenliste gespeichert werden kann")
    $Datei_Bestenliste = FileOpen("Bestenliste.txt", 1)
    FileWrite($Datei_Bestenliste, @CRLF)
    $Name_Unlesbar = _StringEncrypt(1, $Name_Bestenliste, "Bestenliste", 1)
    FileWrite($Datei_Bestenliste,"Name:" & $Name_Unlesbar)
    $Punkte_Unlesbar = _StringEncrypt(1,$Start_Geld, "Bestenliste", 1)
    FileWrite($Datei_Bestenliste, @CRLF)
    FileWrite($Datei_Bestenliste,"Punkte:" & $Punkte_Unlesbar)

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

    Exit
    EndFunc

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

    ;Hauptfunktion

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

    Func Start()
    ;Einsatz ?
    If $Einsatz_Geld = "Ihr Einsatz" Then
    MsgBox(0, "Fehler", "Sie müssen einen Einsatz tätigen, bevor sie spielen können!")
    ElseIf $Einsatz_Geld > $Start_Geld Then
    MsgBox(0, "Fehler", "Soviel Geld haben sie nicht!")
    Else
    Start_richtig()
    EndIf
    EndFunc

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

    Func Start_richtig()

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

    $Zufall_Bild_1 = Random(1,3,1) ;Zufallszahlen generieren
    $Zufall_Bild_2 = Random(1,3,1)
    $Zufall_Bild_3 = Random(1,3,1)

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

    If $Zufall_Bild_1 = 1 Then ;Bild 1
    GUICtrlSetImage($Pic1, $Bild_Kirsche)
    ElseIf $Zufall_Bild_1 = 2 Then
    GUICtrlSetImage($Pic1, $Bild_Banane)
    ElseIf $Zufall_Bild_1 = 3 Then
    GUICtrlSetImage($Pic1, $Bild_Apfel)
    EndIf

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

    If $Zufall_Bild_2 = 1 Then ;Bild 2
    GUICtrlSetImage($Pic2, $Bild_Kirsche)
    ElseIf $Zufall_Bild_2 = 2 Then
    GUICtrlSetImage($Pic2, $Bild_Banane)
    ElseIf $Zufall_Bild_2 = 3 Then
    GUICtrlSetImage($Pic2, $Bild_Apfel)
    EndIf

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

    If $Zufall_Bild_3 = 1 Then ;Bild 3
    GUICtrlSetImage($Pic3, $Bild_Kirsche)
    ElseIf $Zufall_Bild_3 = 2 Then
    GUICtrlSetImage($Pic3, $Bild_Banane)
    ElseIf $Zufall_Bild_3 = 3 Then
    GUICtrlSetImage($Pic3, $Bild_Apfel)
    EndIf

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

    If $Zufall_Bild_1 = $Zufall_Bild_2 and $Zufall_Bild_2 = $Zufall_Bild_3 Then ;Vergleiche die 3 Bilder
    Gewinn_Rechnung()
    Else
    Verlust_Rechnung()
    EndIf
    EndFunc

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

    Func Gewinn_Rechnung() ;Rechnet den Gewinn der Runde aus
    $Start_Geld = $Einsatz_Geld * 2 + $Start_Geld
    GUICtrlSetData($Label2, $Start_Geld)
    EndFunc

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

    Func Verlust_Rechnung() ;Rechnet den Verlust der Runde aus
    $Start_Geld = $Start_Geld - $Einsatz_Geld
    GUICtrlSetData($Label2, $Start_Geld)
    EndFunc

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

    Func Bestenliste()
    $Datei_Bestenliste = FileOpen("Bestenliste.txt", 1)
    $Bestenliste_Lesbar = _StringEncrypt(0,(Fileread ($Datei_Bestenliste)), "Bestenliste", 1)
    MsgBox(0,"Bestenliste", $Bestenliste_Lesbar)
    EndFunc

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

    2 Mal editiert, zuletzt von FojhtirfX (3. Mai 2009 um 18:32)

  • Ein paar Fehler/Unschönheiten gibt's noch:

    • Als Gui-Titel hast du noch "Form1"
    • Bestenliste funktioniert nicht, wenn man auf den Button "Bestenliste" klickt, kommt eine leere MsgBoX


    Sonst recht schlicht ;)
    Für's erste Spiel ok.

    Kleiner Tipp: Speicher die Punkte und Namen in einer Ini-Datei - Können viel leichter ausgelesen werden.

    Edit: Warum sind oben im Code 4 Includes, ohne das was dahinter steht?

    lg Jautois

    Einmal editiert, zuletzt von Jautois (3. Mai 2009 um 18:25)

  • Zitat

    Ein paar Fehler/Unschönheiten gibt's noch:

    Als Gui-Titel hast du noch "Form1"
    Bestenliste funktioniert nicht, wenn man auf den Button "Bestenliste" klickt, kommt eine leere MsgBoX


    1. Wird erledigt
    2.Steht doch dabei, dass ich für das Problem eine Lösung suche 8|
    Habe das Gefühl, dass der die Includes nicht mitkopiert, hatte das schon eineige male wenn ich hier was gepostet haben... ?(

  • hab den downlaod mal zur sicherheit getestet
    1. Mit Kaspersky
    2. VirusTotal

    edit..
    achja .. clean ^^

    edit.
    wegen der bestenliste..
    wo spiechert sich die denn ab ?

  • wollte nur auf nummer sicher gehen ^^
    da es hier keine admins gibt die es kontrolieren..
    ahja hab mich verguckt .. jetzt weiß ich wo die bestenliste hin kommt

  • Ja, nur das mit dem öffnen der Bestenliste klappt irgendwie nichht... :(
    Weiß jemand eine Lösung? Ich würde das gerne mit txt lassen und keine ini nehmen.

  • So, update...
    Die Bilder wechseln nun 5 mal sichtbar=Dreheffekt wie beim Original :rolleyes:

  • nice aber wieso cryptest du die bestenlist-werte? vllt geht es wenn du das nicht tust dann kannst du die txt datei zeile für zeile auslesen und dann mit @LF in deiner msgbox ausgeben?

  • Wenn ich die nicht Verschlüssel, kann ja jeder seine Punktezahl einfach ändern

  • stimmt , nicht nachgedacht. dann musst du wohl auf jmd warten der ahnung hat wie du es besser ausgebeb kannst^^

  • versuchs doch erstmal ohne verschlüsselung

    edit.
    in der bestenliste steht nicht der name den man eingegeben hat ^^

  • Also nochmal zur Ini, das geht wirklich ganz einfach.

    [autoit]


    Schreiben:
    IniWrite(@ScriptDir & "\bestenliste.ini","Bestenliste","Spielername","empty")

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

    Lesen:
    IniRead(@ScriptDir & "\bestenliste.ini","Bestenliste","Spielername","Kein Name eingetragen")

    [/autoit]

    Zur Verschlüsselung:
    Du kannst die Einträge in der Bestenliste gerne Verschlüsseln, aber das bringt nichts. Denn das Passwort "Bestenliste" und das Level "1" stehen selbst im Code ;)
    Ich habe das bisher immer mit einer Dll gelöst, die mir Checksummen erstellt.

    [autoit]

    $Name_Unlesbar = _StringEncrypt(1, $Name_Bestenliste, "Bestenliste", 1)

    [/autoit]
  • Zitat

    Zur Verschlüsselung:
    Du kannst die Einträge in der Bestenliste gerne Verschlüsseln, aber das bringt nichts. Denn das Passwort "Bestenliste" und das Level "1" stehen selbst im Code
    Ich habe das bisher immer mit einer Dll gelöst, die mir Checksummen erstellt.


    Ja , das ist schon klar, man kann aber auch schnell das Passwort ändern und das Script dannn nur noch als .exe anbieten, dies hier ist ja noch in Entwicklung.

  • Ich weiß dass, das Thema längst veraltet ist, aber ich wollte noch mal sagen das man bei diesem Spiel einfach Geld bekommen kann in dem man einen Negativen Wert eingibt, dass sollte, falls der Ersteller hier mal rein guckt, mal geändert werden:


    Die Funktion, wie sie ist:

    Spoiler anzeigen
    [autoit]


    Zeile 86
    Func Start()
    ;Einsatz ?
    If $Einsatz_Geld = "Ihr Einsatz" Then
    MsgBox(0, "Fehler", "Sie müssen einen Einsatz tätigen, bevor sie spielen können!")
    ElseIf $Einsatz_Geld > $Start_Geld Then
    MsgBox(0, "Fehler", "Soviel Geld haben sie nicht!")
    Else
    Start_richtig()
    EndIf
    EndFunc

    [/autoit]


    Die Funktion, wie sie (meiner Meinung nach) sein sollte:

    Spoiler anzeigen
    [autoit]


    Zeile 86
    Func Start()
    ;Einsatz ?
    If $Einsatz_Geld = "Ihr Einsatz" Then
    MsgBox(0, "Fehler", "Sie müssen einen Einsatz tätigen, bevor sie spielen können!")
    ElseIf $Einsatz_Geld > $Start_Geld Then
    MsgBox(0, "Fehler", "Soviel Geld haben sie nicht!")
    ElseIf $Einsatz_Geld < 1 Then
    MsgBox(0, "Fehler", "Der Einsatz ist zu gering")
    Else
    Start_richtig()
    EndIf
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von Zeitriss (28. Januar 2010 um 20:43)

  • Hab mir das auch mal angeschaut^^

    So die momentane Funktion:

    [autoit]

    Func Start()
    ;Einsatz ?
    If $Einsatz_Geld = "Ihr Einsatz" Then
    MsgBox(0, "Fehler", "Sie müssen einen Einsatz tätigen, bevor sie spielen können!")
    ElseIf $Einsatz_Geld > $Start_Geld Then
    MsgBox(0, "Fehler", "Soviel Geld haben sie nicht!")
    Else
    Start_richtig()
    EndIf
    EndFunc

    [/autoit]

    So sollte die Funktion stimmen ;):

    [autoit]

    Func Start()
    $stringcheck=StringInStr($Einsatz_Geld,"-") ;Einsatz ?
    If $Einsatz_Geld = "Ihr Einsatz" Then
    MsgBox(0, "Fehler", "Sie müssen einen Einsatz tätigen, bevor sie spielen können!")
    ElseIf $Einsatz_Geld > $Start_Geld Then
    MsgBox(0, "Fehler", "Soviel Geld haben sie nicht!")
    ElseIf $Einsatz_Geld = "" Then
    MsgBox(0, "Fehler", "Sie müssen einen Einsatz tätigen, bevor sie spielen können!")
    ElseIf $Einsatz_Geld = "0" Then
    MsgBox(0, "Fehler", "Sie müssen einen Einsatz tätigen, bevor sie spielen können!")
    ElseIf $stringcheck>0 Then
    MsgBox(0, "Fehler", "Sie können keinen negativen Betrag eingeben!")
    Else
    Start_richtig()
    EndIf
    EndFunc

    [/autoit]


    MfG hellboy

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

    2 Mal editiert, zuletzt von hellboy3 (19. Januar 2010 um 10:21)