• Ich hab mal in meienr Sammlung herumgestöbert und meine alten Programme der künstlichen Intelligenz gefunden, welche mit Algorythmen und welche, die lernen.
    Anfangs hatte ich es noch für QuickBasic:

    Spoiler anzeigen


    Ja, das ist eigentlich nur zum "trainieren" des KI, aber von dem Programm hab ich meine Spiele gegen KI gemacht:
    BlitzBasic Version Algorythmus:

    Spoiler anzeigen


    Version Lernen:

    Spoiler anzeigen

    Der KI speichert sich, zum trainieren des KI:

    Spoiler anzeigen

    Und nun die Autoit Version:
    Es gibt nur KI, Trainieren geht mit der Blitzbasic Datei (Ich hänge von allem noch Exen an)

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=fire.ico
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstants.au3>
    #include <EditConstants.au3>

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

    Global $OnTurn=""
    Global $Lost=""
    Global $normal=Inputbox("Holzzahl wählen","Standard Holzzahl: ","10")
    Global $Count=$normal
    Global Const $Max=3

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

    Global $P[$Max+1]

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

    Global $Experience[$Count+1][$Max+1]
    Global $Used[$Count+1][$Max+1]

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

    Global $Won=0
    Global $Ges

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

    For $i = 1 To $Count
    For $j = 1 To $Max
    $Experience[$i][$j] = 64
    Next
    Next

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

    load()

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

    $Ges=0

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("KI", 981, 230, 21, 125)
    $Label1 = GUICtrlCreateLabel("Es sind noch übrig: ", 16, 8, 164, 17)
    $Label2 = GUICtrlCreateLabel("Der Gegner hat genommen: ", 16, 32, 164, 17)
    $Button1 = GUICtrlCreateButton("1", 16, 64, 49, 25, 0)
    $Button2 = GUICtrlCreateButton("2", 80, 64, 49, 25, 0)
    $Button3 = GUICtrlCreateButton("3", 144, 64, 49, 25, 0)
    Global $Edit1 = GUICtrlCreateEdit("", 16,120, 953, 81, $ES_READONLY)
    GUISetIcon("fire.ico")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    res()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _ex()
    EndSwitch
    $Ges=$Ges+1
    If Mod($Ges,2) Then
    $OnTurn = "You"
    Else
    $OnTurn = "Thinker"
    endif
    Do
    If $OnTurn="Thinker" Then
    guictrlsetdata($Label1,"Es sind noch übrig: "& $Count)
    Do
    For $J=1 To $Max
    $P[$J]=Random(1,2)*$Experience[$Count][$J]/2
    Next
    $Take = 1
    If $P[2] > $P[1] Then
    $xx=$P[1]
    $P[1]=$P[2]
    $P[2]=$xx
    $Take = 2
    endif
    If $P[3] > $P[1] Then $Take = 3
    Until $Take <= $Count
    GUICtrlSetData($Label2,"Der Gegner hat genommen: "&$Take)
    Else
    guictrlsetdata($Label1,"Es sind noch übrig: "& $Count)
    while 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _ex()
    Case $Button1
    $Take=1
    ExitLoop
    Case $Button2
    $Take=2
    ExitLoop
    Case $Button3
    $Take=3
    ExitLoop
    EndSwitch
    WEnd
    guictrlsetdata($Label1,"Es sind noch übrig: "& $Count)
    EndIf

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

    If $OnTurn = "Thinker" Then
    $Used[$Count][$Take] = 1
    EndIf

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

    $Count = $Count - $Take
    If $OnTurn = "You" Then
    $OnTurn = "Thinker"
    Else
    $OnTurn = "You"
    EndIf
    Until $Count <= 1

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

    If $Count = 1 Then
    $Lost = $OnTurn
    Else
    If $OnTurn = "You" Then
    $Lost = "Thinker"
    Else
    $Lost = "You"
    endif
    EndIf
    $Count = $normal

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

    If $Lost = "You" Then
    $Won = $Won + 1
    For $J = 1 To $Count
    For $K = 1 To $Max
    If $Used[$J][$K] Then
    If $Experience[$J][$K] < 16383 Then
    $Experience[$J][$K] = $Experience[$J][$K] * 2
    EndIf
    $Used[$J][$K] = 0
    EndIf
    Next
    Next
    Else
    For $J = 1 To $Count
    For $K = 1 To $Max
    If $Used[$J][$K] Then
    If $Experience[$J][$K] > 1 Then
    $Experience[$J][$K] = $Experience[$J][$K] / 2
    EndIf
    $Used[$J][$K] = 0
    EndIf
    Next
    Next
    EndIf
    res()
    WEnd

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

    Func save()
    filedelete("saveki"&$normal&".txt")
    $file=Fileopen("saveki"&$normal&".txt",1)
    For $i = 1 To $Count
    For $j = 1 To $Max
    FileWriteLine($file,$Experience[$i][$j])
    Next
    Next
    FileClose($file)
    EndFunc

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

    Func load()
    If FileExists("saveki"&$normal&".txt") Then
    $file=Fileopen("saveki"&$normal&".txt",0)
    For $i = 1 To $Count
    For $j = 1 To $Max
    $Experience[$i][$j]=FileReadLine($file)
    Next
    Next
    FileClose($file)
    EndIf
    EndFunc

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

    Func res()
    guictrlsetdata($Edit1,"")
    $txt="Thinker hat "&$Won& " von "&$Ges& " Spielen gewonnen."&@crlf
    For $J = 1 To $Max
    For $K = 0 To $Count-1
    $txt=$txt&$Experience[$Count-$K][$J]&" "
    Next
    $txt=$txt&@crlf
    Next
    guictrlsetdata($Edit1,$txt)
    EndFunc

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

    Func _ex()
    save()
    exit
    EndFunc

    [/autoit]

    Link für Exen:
    http://solidfiles.com/d/1271/

    Ich hoffe es gefällt euch, viel Spaß damit

  • Sorry für die doofe Frage^^ Ist das für ein Game speziell zugeschnitten? Bzw. in welchen hast du´s ausprobiert?

  • ich verstehe die Frage nicht ganz, soweit ich verstehe weist du nicht was das QB-Programm bringt. Das ist einfach nur das Programm für die Erklärung der KI und wie es lernt. Das BB-Programm ist das Spiel