Künstliche intelligenz

  • Allgemein

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von vbfreak96.

    Künstliche intelligenz

    Hallo

    Ich wollt mal fragen wie man am besten einen computer player programmiert!

    Ich wollte daraus ein Strategiespiel machen! Der Computer soll zum beispiel den menschlichen nspieler irgendwann angreifen!

    Wie geht das?

    vb-checker schrieb:

    Mit viiielen If-Bedingungen ?! So würd ichs machen
    jo also man sollte es z.B. so machen, das der gegner erst sein imperium baut und dann eiheiten ausbildet, dann evtl. den player ausspioniert und dann, fals er mehr bzw. stärkere einheiten hat, angreift. Man sollte die ifs natürlich so machen dass das ganze sinn macht :rolleyes:
    also für eine Figur die gegen jemanden kämpfen und laufen und Handeln usw. kann dann wird das ziemlich lange dauern! aber viele If-Anwendungen zufall etc. stimmt schon!
    aber man müsste ja zB das aktuelle Schwert beachten welches eine Stärke von 1-10(zB)hat und muss aus diesen Werten dann eine zufallszahl bilden und sowas zu programmieren kann glaube ich Jahre dauern!

    wieso benötigen spiele produzenten auch so lange? ^^
    Große Spielefirmen brauchen nicht lange für Spiele, aber die Entwickler da arbeiten auch in einem riesigen Team und es sind absolute Pro´s :whistling: Dann kann man sowas schon in einem halben bis ganzen Jahr schaffen. Aber allein - kannst du eigentlich jetzt schon aufgeben (wenn es was gutes werden soll).
    wie kevin schon gesagt hat .... an einem "richtigem" spiel sitzen sehr sehr viele entwickler dran! selbst wenn man sich mit freunden zusammensetzt und eine Strategie macht dauert das ewig, also an eine K.I. würde ich mich nie alleine wagen!
    Es kommt aber auch auf das Spiel an. xD TicTacTou kann man auch selber Strategien entwickeln =) Aber ich gebe dir schon Recht. Das dauert ewig bis es perfekt ist. Wenn man perfekt überhaupt sagen kann, denn kein PC ist perfekt
    Eine richtige KI wird es eh nicht werden, sondern nur ein haufen von Abfragen

    Ist der ComputerCharakter vor dem SpielerCharakter -> wähle eine Waffe -> führe eine Aktion aus (Schlagen z.B.) -> Schlägt der Spieler zurück, reaktionszeit Berechnen -> Schild hochhalten wenn Gegnerwaffe noch weit genug weg ist -> Schadenspunkte minimieren usw.

    Ich habe mal für meinen eigenen Chat eine Bot KI geschrieben, die die von den usergeschriebenen Texte analysiert sobald der Name des Bots auftaucht. Es wird anhand von Wörtern überprüft um was für einen Inhalt es sich handelt, ob es eine Frage oder Aussage ist, hiernach wird entschieden, aus welcher Kategorie eine Textphrase aus der DB geholt wird, die zu dem Text des Users passt, wenn keine analyse möglich ist, wird eine Phrase wieder gegeben, die immer passt, z.B. "Ist dir langweilig %username%". Dieses "einfache" Script ist aber bereits einige hundert Zeilen lang und ich saß über 2 Wochen dran, bis es etwa so funktionierte, wie ich mir es mir vorstellte!

    Nur mal so als Vergleich ^^ wobei Texteanalysieren wohl noch einfacherer ist als irgendwelche Figuren zu Steuern, weil da weitaus mehr Parameter berücksichtig werden müssen!
    Ich würde eine Klasse definieren, in der verschiedene Parameter wie Widerstand, Stärke,

    Geschwindigkeit,... mit Zahlen von 1 bis 10 definiert sind.
    Wird vom Gegenüber z.B. ein Schlag durchgeführt, dann ermittelst du eine Zufallszahl,
    ebenfalls zwischen 1 u. 10. Liegt diese über deiner Widerstand-Variable, dann war der
    Schlag ein Treffer, ansonsten hast du den Schlag pariert(die Deckung oben)

    VB.NET-Quellcode

    1. class KI
    2. public Event evPerformSchlag
    3. public event evWurdegeschlagen
    4. public event evSchlagWurdePariert
    5. 'Zahl zwischen 1 und 10
    6. Dim Widerstand as integer
    7. Dim Stärke as integer
    8. Dim Geschwindigkeit as integer
    9. Sub Schlag
    10. 'Event auslösen
    11. Raiseevent evPerformschlag
    12. Zufallszahl zwischen 1 u. 10 ermitteln
    13. if zufallszahl > =stärke then
    14. Schlag geht von mir durch
    15. else
    16. Schlag geht ins Leere
    17. end if
    18. end sub
    19. Sub WerdeGeschlagen
    20. Zufallszahl zwischen 1 u. 10 ermitteln
    21. if zufallszahl > =widerstand then
    22. 'Voll auf die Zwölf
    23. Raiseevent evWurdegeschlagen
    24. else
    25. 'Schlag des Gegners pariert
    26. raiseevvent evSchlagWurdePariert
    27. end if
    28. end sub
    29. End class


    Eventuell kann man in die Events noch einbauen, woher der Schlag kommt (od. Wohin der Schlag geht). Wenn die Kraft flöten geht, dann macht man halt keine ZZ zwischen 1 und 10, sonder nur mehr zwischen 1 und 9.

    ...nur ein Denkansatz... LG, der_Kurt