Spiel erstellen

  • hi,

    ich hätte da mal paar fragen. kann man überhaupt mit autoit spiele erstellen? wen ja was für programme braucht man dafür? auserdem mit was muss ich mich am meisten auskennen also z.b. variable (ist eig sowiso überall wichtig^^) aber ich denk mal mit gui werde ich da nicht weit kommen oder?

    also ich hab mir ein ziel gesetzt ich will ein spiel erstellen wie z.b. mario snake oder sowas in der art. also ein einfaches spiel

  • wenn du Neueinsteiger in AutoIt bist, dann kannst du ein Spiel erstmal vergessen.

    Nach einer gewissen Zeit sind Spiele wie Pong aber machbar...

    Nimm dir nicht zuviel vor, denn am ende ist die Enttäuschung dann sehr groß.
    Ich arbeite grade mit einem Freund an einem Spiel und obwohl wir beide in AutoIt mehr oder weniger gut sind (ich eher weniger^^) kommen wir nich so gut vorran. . .
    An deiner Stelle würde ich mir eher bestehnde Projekt angucken und versuch mich da irgenwie einzubrinegn...

    Nichts desto trotz, kann ich dir nur das GDIPLus Tut hier irgdenwo im Forum empfehlen.

    FLOSCHLO

  • die angegebene seite beantowrtet mir keiner meiner fragen <.< oder ich bin zu blöd sie zu finden auserdem funktioniert keiner der versionen

  • die angegebene seite beantowrtet mir keiner meiner fragen <.< oder ich bin zu blöd sie zu finden auserdem funktioniert keiner der versionen

    sollte nur eine veranschaulichung sein was alles möglich ist. du kannst dir da auch den quelltext ansehen um zu verstehen was du alles benötigst. ist aber zugegebener maßen ein wirklich hochgestecktes ziel.
    wenn dann musst du dich an ein wirklich sehr leichtes thema wagen.
    ich zB hab mir erst kleine scripte gebastelt die mir bestimmte arbeiten am pc vereinfachen. es muss auch nicht soo sinnvoll sein. wichtig ist es das man dabei etwas lernt.
    hierbei sind mir immer wieder probleme bei der umsetzung aufgefallen und ich musste nach neuen wegen suchen. so lernt man und hat dennoch spaß da das script immer besser und funktionsfähiger wurde.

  • also GDI + sag ich mal wenn man spiele programmieren will kann man echt afangen sich da mal einzulesem

  • (Soweit ich weiß) Ist AutoIt fürt komplexe 3-D Spiele nicht in der Lage, es ist durchausmöglich einen 3d Würfel rotieren zu lassen (Rotate Cube).
    Ich bevorzuge einfache 2d Games, die machen Spaß und sind (relativ) einfach zu schreiben.

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • ache 2d Games, die machen Spaß


    Da irrst du dich.
    Mit der IrrLicht (okay, die engine ist nicht in autoit gecodet, aber in autoit kann sie verwendet werden) ist es sehr wohl möglich, komplexe 3D Spiele zu schreiben.

  • Spiele sind sehr gut möglich. Ich meiner Signatur stehen ein paar von mir. Du wirst sicherlich 2D erstmal benutzen, dafür ist GDI+ wohl am besten geeignet in Autoit. programme brauchst du nur deine programmierungsumgebung, wenn du keine Grafiken o.ä. brauchst, das hängt ja alles vom Spiel ab. Und glaub mir, mario ist ziemlich komplex und nicht gerade leicht. Das würde lange dauern, gibt es auch nur einmal in diesem Forum. Snake ist in einfacher Form gut für Anfänger geeignet, man kann es sich natürlich auch schwerer machen, wie eigentlich bei allem. Wenn du aber wirklich gar kein kein Durchhaltevermögen hast rate ich dich vom Spiele programmieren ab, ansonsten kannst du mit ein bisschen Übung mit GDI+ und Autoit sicherlich dein erstes Spiel programmieren

  • Muss ja nicht unbedingt immer gleich GDI+ sein. Sieh dir mal in meiner Signatur das Spiel "Eat'n Sleep" an.
    Es ist sehr einfach geschrieben (auch noch umständlich, damals hatte ich nur wenig Programmiererfahrung) und tut bis zu einem bestimmten Grad hin seinen Zweck.

    Ass Programme brauchst du nur Scite (was die meisten ja nutzen), evtl. ein Bildbearbeitungsprogramm (Paint oder Photoshop wenn vorhanden) und, falls du dich mit Guis schon etwas auskennst, den Grobentwurf jedoch optisch vronehmen möchtest, den mit Scite mitgelieferten Formdesigner Koda (nicht empfehlenswert, aber für einen groben Entwurf durchaus nutzbar). Die deutsche Hilfsversion wäre übrigens auch nicht schlecht.

    Möchtest du ein größeres Spiel mit individuellem Design machen, ist auf jeden Fall GDI+ oder Quickdraw zu verwenden.

    Besonders auskennen solltest du dich natrülich mit den Basics, das bedeutet die Grundsätze einer Gui sollten dir geläufig sein, du solltest gut mit Varaiblen und (eventuell mehrdimensionalen) Arrays (nicht zwingend notwendig für ein einfaches Spiel, erleichtert dir jedoch viel Schreibarbeit und Aufwand) hantieren können und natürlich solltest du die Schleifentypen beherrschen. Möchtest du Spielstände oder Einstellungen speichern, empfehle ich dir die Inifunktionen.

    Mein Tipp: Fange erstmal klein mit einem Spiel innerhalb einer Gui ein (z.B. Memory). Steigere dich dann langsam und komme irgendwann bei GDI+ oder Quickdraw an.

  • Hier mal ein kleines Pingpong Spiel mit AutoIt, sehr simpel gemacht aber es funktioniert.
    Beschreibung im Script enthalten

    Spiel mit GUI
    [autoit]


    $hGUI = GUICreate("Titel",300,300);Erstellt ein Fenster welches noch unsichtbar ist
    $Ball = GUICtrlCreateCheckbox("",10,10,10,10,1);Erstellt eine Checkbox welche fast wie ein Ball aussieht
    $Spieler = GUICtrlCreateButton("",10,175,20,50);Erstellt ein Button mit dem der Spieler den Ball abwehrt
    $Gegner = GUICtrlCreateButton("",270,175,20,50);Erstellt ein Button mit dem der NPC(Nicht-Spieler-Charakter) den Ball abwehrt
    Global $SpielerPos = 175;Dort ist der Schläger des Spielers
    $NPCPos = 175;Und hier der des NPC's
    $Ball_Pos_X = 145;Hier ist die Breiten Koordinate des Balles, welche möglicht in der Mitte sein sollte
    $Ball_Pos_Y = 145;Hier ist die höhen Koordinate des Balles, welche möglicht in der Mitte sein sollte
    ;Die mitte von 300 (den so breit und hoch ist die GUI) wäre natürlich 150 aber wir müssen noch die hälfte des Balles abziehen(10/2=5)(300/2-5=145)

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

    $Ball_X_Bewegung = (Random(0,1,1)-0.5)*10; Gibt dem Ball schwung in eine beliebige richtung
    ;Die Funktion Random gibt einen "Zufälligen wert zwischen den ersten beiden Parametern aus(0 und 1) dieser wert ist auf eine Ggnze Zahl gerundet...
    ;weil der Dritte Parameter eine 1 ist aber vergiss den dritten Parameter erstmal, der ist zimlich egal. Zumindest wirde eine 0 oder eine 1 -0.5 genommen (=-0.5 o. =0.5)...
    ; und dan mal 10 damit der Ball gut schwung kriegt (=-5 o. =5). Der schwung wird dem Ball später in jeden Schleifen durchgang zur höhen oder breiten Koordinate hinzugefügt.
    ;Beispiel: ein Schleifen durchgang dauert 0.2 sekunden und der Ball hat eine Geschwindigkeit von (X:5 ,Y:2) dann würde er in einer sekunde sich 25 Koordinaten nach Rechts...
    ;Bewegt haben( 1/0.2*5) und 10 nach unten( 1/0.2*2 )
    $Ball_Y_Bewegung = Random(-5,5,1); wird genause festgelegt nur dass es dieses mal sich nicht zwingend bewegen muss sondern einen Beliebigen wert zwischen -5 und 5 haben kann
    GUISetState(1,$hGUI); Macht das Fenster sichtbar damit der Spieler etwas sehen kann^^
    HotKeySet("{Down}","Spieler_bewegt_nach_unten");Wenn der Spieler auf Down(Steuerkreuz) drückt wird die Funktion "Spieler_bewegt_nach_unten" aufgerufen
    HotKeySet("{Up}","Spieler_bewegt_nach_oben");Wenn der Spieler auf Up(Steuerkreuz) drückt wird die Funktion "Spieler_bewegt_nach_oben" aufgerufen
    While 1;Hier beginnt das Spiel
    ;Hier wird die Position des Balles neu berechnet (wie oben erklärt)
    $Ball_Pos_X = $Ball_Pos_X+$Ball_X_Bewegung
    $Ball_Pos_Y = $Ball_Pos_Y+$Ball_Y_Bewegung
    GUICtrlSetPos($Ball,$Ball_Pos_X,$Ball_Pos_Y);Hier wird der Ball(Checkbox) an die neue Position gesetzt

    ;Hier wird überprüft ob der Ball den schläger des Spielers berührt

    If $Ball_Pos_X < 30 Then; Ist der Ball nah genug an deiner Seite um deinen Schläger berühren zu können
    If $Ball_Pos_Y+10 > $SpielerPos Then ;Ist dein Schläger hoch genug um den Ball zu erwischen
    If $Ball_Pos_Y < $SpielerPos+50 Then ;Ist dein Schläger tief genug um den Ball zu erwischen
    $Ball_Pos_X = 30 ; Setzt den Ball vor den Schläger um zu verhindern das dieser im schläger hängen bleibt
    $Ball_X_Bewegung = $Ball_X_Bewegung * -1;Dreht die Bewegung um
    $Ball_X_Bewegung = $Ball_X_Bewegung * 1.3;macht den Ball etwas schneller
    EndIf
    EndIf
    EndIf

    ;Hier wird überprüft ob der Ball den schläger des NPCs berührt

    If $Ball_Pos_X > 260 Then
    If $Ball_Pos_Y+10 > $NPCPos Then
    If $Ball_Pos_Y < $NPCPos+50 Then
    $Ball_Pos_X = 260
    $Ball_X_Bewegung = $Ball_X_Bewegung * -1
    EndIf
    EndIf
    EndIf

    ;Hier kommt der extem Intelligente NPC^^
    If $Ball_Pos_Y < $NPCPos +25 Then ;ist der Ball höher als der Mittelpunkt des Schlägers
    $NPCPos = $NPCPos - 5
    GUICtrlSetPos($Gegner,270,$NPCPos)
    EndIf

    If $Ball_Pos_Y > $NPCPos +25 Then ;ist der Ball tiefer als der Mittelpunkt des Schlägers
    $NPCPos = $NPCPos + 5
    GUICtrlSetPos($Gegner,270,$NPCPos)
    EndIf

    If $Ball_Pos_Y <0 Then ; Wenn der Ball oben gegen den Rand stößt, prallt er ab
    $Ball_Pos_Y = 0
    $Ball_Y_Bewegung = $Ball_Y_Bewegung * -1
    EndIf

    If $Ball_Pos_Y > 290 Then ; Wenn der Ball unten gegen den Rand stößt, prallt er ab
    $Ball_Pos_Y = 290
    $Ball_Y_Bewegung = $Ball_Y_Bewegung * -1
    EndIf

    If $Ball_Pos_X < 0 Then ; Wenn der Ball bei deiner Seite den Rand berührt dann...
    HotKeySet("{Down}")
    HotKeySet("{Up}");Dardurch wird verhindert dass du den Schläger(Button) immernoch bewegen kannst, ist natürlich nicht zwingend nötig sieht aber besser aus
    msgbox(0,"","Du hast Verloren.")
    exit;Beendet das Script
    EndIf

    If $Ball_Pos_X > 290 Then ; Wenn der Ball bei deiner Seite den Rand berührt dann...
    HotKeySet("{Down}")
    HotKeySet("{Up}");Dardurch wird verhindert dass du den Schläger(Button) immernoch bewegen kannst, ist natürlich nicht zwingend nötig sieht aber besser aus
    msgbox(0,"","Du hast Gewonnen.")
    exit;Beendet das Script
    EndIf


    sleep(100)
    WEnd

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

    Func Spieler_bewegt_nach_unten()
    $SpielerPos = $SpielerPos+5;Der Button des Spielers bewegt sich 5 Pixel nach unten
    GUICtrlSetPos($Spieler,10,$SpielerPos);Dies neue Position wurde zwar bestimmt aber davon hat der Butten nichts gemerkt, wir müssen ihn erst darauf hinweisen^^
    EndFunc

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

    Func Spieler_bewegt_nach_oben()
    $SpielerPos =$SpielerPos-5;Der Button des Spielers bewegt sich 5 Pixel nach oben
    GUICtrlSetPos($Spieler,10,$SpielerPos);Dass selbe wie oben
    EndFunc

    [/autoit]

    Ich habe leider keine Ahnung wie viel du über AutoIt schon weißt, wenn du etwas nicht verstehst frag einfach.

    Dieses Script soll nur einen Anstoß geben es ist natürlich viel mehr möglich auch mit besserem Interface, dass beste Beispiel ist dafür(wie schon erwähnt wurde)
    "Doodle Jump für Pc" von Ubuntu.

  • @ Zeitriss

    Die Idde mit GUI Elementen ein Spiel zu machen ist GEIL!!!!!!!!!!!!!


    1000 Daumen hoch (ich glaub ich lass mir ein paar dranoperieren)!!!!

    Ich liebe diese Idee

    FLOSCHLO