Du bist nicht angemeldet.

Kontrollzentrum

Spenden

Jeder Euro hilft uns, euch zu helfen.

Adsense

Downloads

Stabil: 3.3.8.1 (Q, H)
Stabil: 3.3.12.0 (Q, H)
Beta: 3.3.11.5 (Q, H)
SciTE: 4/5/2014 (Q, H)
Hilfe Deutsch: 12/23/2013 (Q)
Download: OrganizeIncludes (Q)
Stand: 02.06.2014 - 2:21 Uhr

Lieber Besucher, herzlich willkommen bei: AutoIt.de - Das deutsche AutoIt-Forum. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

  • »BadBunny« ist der Autor dieses Themas

Registrierungsdatum: 30. Mai 2010

  • Private Nachricht senden

1

Sonntag, 6. März 2011, 15:59

Neon Snake

85%

Ja! (45)

15%

Nein! (8)

So, einige von euch werden sicherlich bemerkt haben das ich mich in letzter Zeit mit GDI+, Kollision etc beschäftigt hab. Das perfekte Übungsspiel dazu ist natürlich Snake, es ist 2d, verlangt Kollisionen und ist relativ einfach mit Arrays zu coden.
Ich hab es erstmal ohne irgend welche Bilder oder einem Startbildschirm gemacht, aber den kann man schnell einbauen.

Ich würde mich über gute Kritik, aber auch über Lob freuen.
Es werden wahrscheinlich weitere Powerups folgen, und noch Moduse wie Überleben oder Zeit.
Ich freu mich auch über neue Ideen ;-)

Zur Erkärung (Einzelplayer):

Du bist Snake. Dein Ziel ist es die Gelben Vierecke einzusammeln, dadurch wirst du auch länger.
Manchmal kommen Powerups, die Roten Vierecke die dich für 15 Sekunden schneller machen, und die Weißen die dich um 1/4tel verkürzen.
Man darf nicht mit sich selbst oder den Wänden kollidieren, man kann mit Joystick/Gamepad oder der Tastatur spielen.

Zur Erklärung(Multiplayer):
Ein Spieler spielt mit Joystick, der andere mit den Pfeiltasten. Das Ziel ist es zu überleben und nicht mit sich selbst, der Wand, oder dme anderen Spieler zusammenzustoßen.
Wer die meisten Punkte hat gewinnt das Spiel.

Änderungen:
-Zeit/Länge/Punkte Anzeige im Wenstertitel
-Mauern (selbst erstellen von Mauern durch Array!)
-Zeitaussehen angepasst
-Joystick verwendbar
-Gamepad verwendbar
-Joystick, Gamepad und Tastatur benutzbar!
-Offline Multiplayer Modus
-Offline Modus Multiplayer UND Einzelplayer

Neue Maps werden in einem extra .zip Ordner hochgeladen und können nun von euch einfach verwendet werden. Ich könnt gute Maps hochladen, ich werde sie wenn sie uns gefallen in den Map Ordner setzen. Lasst euch was kreatives einfallen :)

Version 1.9:
-Mapeditor verfügbar
-auslesen der Mapdateien verfügbar (Abspeichern durch "s", zurück durch "z")

Die aktuellste Version gibt es immer HIER
»BadBunny« hat folgende Dateien angehängt:
  • Maps.zip (434 Byte - 254 mal heruntergeladen - zuletzt: 24. Juli 2014, 13:48)
  • Neon Snake v. 1.9.rar (747,65 kB - 276 mal heruntergeladen - zuletzt: 26. Juli 2014, 09:07)
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:




Neon Snake

Dieser Beitrag wurde bereits 41 mal editiert, zuletzt von »BadBunny« (11. April 2011, 21:52) aus folgendem Grund: Kleiner BUG im Mehrspieler Modus behoben


Andy

Märchenonkel

Registrierungsdatum: 3. Dezember 2008

Beruf: Selbstausbeuter :o)

  • Private Nachricht senden

2

Sonntag, 6. März 2011, 16:07

Nice!
Fehlt nur noch ein Timer/Schlangenlänge/Punktezähler per

AutoIt-Quellcode

1
winsettitle()
und ein Netzwerk-Mehrspielermodus auf einem großen Spielfeld und es ist perfekt 8o
ciao
Andy


"Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
"Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt

Registrierungsdatum: 23. April 2010

Wohnort: Schweiz - Heimberg (BE bei Thun)

  • Private Nachricht senden

3

Sonntag, 6. März 2011, 16:09

braucht aba ihrwie recht viel CPU oO
40% 1 Core
10% 2 Core
hmm, und das bei nem 3,2GHz DualCore oO
Sei Klug, stell dich Dumm

Meine Scripte


Widergabeliste Ersteller Erstellt Widergabelisten für verschiedene Player
Language [UDF] Eine UDF mit der man die Beschreibung von vorgegebene Buttons /Labels ändert
Minecraft Item List Eine einfache Liste der Derzeitigen Implementierten Minecraft Blöcke / Items, mit ID
Info Tool Ein kleines Tool welche CPU auslastung und mehr ausgibt
GDI+ Abspann Erstell einen Abspann wie bei Filmen oder Spielen

  • »BadBunny« ist der Autor dieses Themas

Registrierungsdatum: 30. Mai 2010

  • Private Nachricht senden

4

Sonntag, 6. März 2011, 16:12

Das mit der Compterausnutzung hab ich auch schon bemerkt, wie kann man das verbessern?
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:




Neon Snake

TheShadowAE

forever.

Registrierungsdatum: 9. Februar 2010

Beruf: Schüler (Q2)

  • Private Nachricht senden

5

Sonntag, 6. März 2011, 16:53

Sleep(10) in der Hauptschleife

Oscar

Moderator

Registrierungsdatum: 15. Juni 2007

Wohnort: Lehrte

  • Private Nachricht senden

6

Sonntag, 6. März 2011, 18:28

Bugs:
- Der vertikale Teil der Schlange sieht etwas komisch aus:

- Die Zeitanzeige sollte ganze Sekunden anzeigen oder auf max. 3 Nachkommastellen gerundet sein.
- Eine Kollision mit dem Rand sollte zum beenden (verloren) führen.

Ansonsten aber ausbaufähig. :thumbup:

Vorschläge:
- Du könntest "Mauern" einfügen, die man nicht berühren darf.
- Gamepad-Unterstützung

  • »BadBunny« ist der Autor dieses Themas

Registrierungsdatum: 30. Mai 2010

  • Private Nachricht senden

7

Sonntag, 6. März 2011, 19:24

Zitat

- Der vertikale Teil der Schlange sieht etwas komisch aus:

Liegt daran das ich nur Kreise zeichne, ich könnte ales als Rechteck zeichen bis auf den Letzten und den Vorderen.
(So siehts mit rechtecken ind er Mitte aus (finde ich nicht sehr schön)

  Spoiler Spoiler

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=..\Neon Snake.exe
#AutoIt3Wrapper_UseX64=n
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GDIPlus.au3>
#include <Misc.au3>
#include <GUIConstants.au3>
#include <Array.au3>

Opt("GUIOnEventMode", 1)
_GDIPlus_Startup()

;;>> Powerup Ideen
;> Speed (Farbe Rot) ERLEDIGT!
;> Schlange verkürzen (danke an Oscar :-)) weiß

;;>> GUIs Variablen
Global $GuiWidth = 500, $GuiHeight = 500
Global $Punkte = 0, $lange = 0, $Zeit = 200
Global $EndTimer = TimerInit()

;;>> Mauer
Dim $MauerWidth[1] = [$GuiWidth]
Dim $MauerHeight[1] = [$GuiHeight / 16]
Dim $MauerX[1] = [0]
Dim $MauerY[1] = [$GuiHeight / 2 - $MauerHeight / 2]

;;>> Snakes Variablen
Global $warten, $status

Global $SnakeSpeed = 2, $SnakeWidth = 10, $SnakeHeight = 10
Global $Richtung = 27
Global $FoodOn = False, $FoodX, $FoodY, $Wachstum = 4
Global $PUX = $GuiWidth, $PUY = $GuiHeight, $PowerTime, $TimerInit

;;>> Arrays   X--Y
Dim $SnakePos[60][2]
$SnakePos[UBound($SnakePos) - 1][0] = $GuiWidth / 3 * 2
$SnakePos[UBound($SnakePos) - 1][1] = 20
For $i = 0 To UBound($SnakePos) - 1
    $SnakePos[$i][0] = $SnakePos[UBound($SnakePos) - 1][0] - ($SnakeSpeed * UBound($SnakePos)) + ($i * $SnakeSpeed)
    $SnakePos[$i][1] = $SnakePos[UBound($SnakePos) - 1][1]
Next


$hWnd = GUICreate("Neon Snake Punkte [" & $Punkte & "], Länge [" & $lange & "], Zeit [" & $Zeit & "sek.]", $GuiWidth, $GuiHeight)
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
GUISetState()

$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($GuiWidth, $GuiHeight, $hGraphics)
$hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
$hBrush = _GDIPlus_BrushCreateSolid(0xff00ff00)
$hBrushFood = _GDIPlus_BrushCreateSolid(0xffffff00)
$hBrushPU = _GDIPlus_BrushCreateSolid(0xffff0000)
$hBrushPU2 = _GDIPlus_BrushCreateSolid(0xffffffff)

While 1
    Sleep(10)
    _SnakeOpt()
    _SnakeMove()
    _SnakeCrash()
    _SetFood()
    _EatFood()
    _SetPowerup()
    _GetPowerup()

    _GDIPlus_GraphicsClear($hBackbuffer, 0xff8000ff)
    For $i = 0 To UBound($MauerX) - 1
        _GDIPlus_GraphicsFillRect($hBackbuffer, $MauerX[$i], $MauerY[$i], $MauerWidth[$i], $MauerHeight[$i])
    Next
    _GDIPlus_GraphicsFillRect($hBackbuffer, $FoodX, $FoodY, $SnakeWidth, $SnakeHeight, $hBrushFood)
    If $status = 1 Then _GDIPlus_GraphicsFillRect($hBackbuffer, $PUX, $PUY, $SnakeWidth, $SnakeHeight, $hBrushPU)
    If $status = 2 Then _GDIPlus_GraphicsFillRect($hBackbuffer, $PUX, $PUY, $SnakeWidth, $SnakeHeight, $hBrushPU2)
    If _IsPressed(50) Then MsgBox(0, "Pause", "Das Spiel wurde pausiert, wenn sie weiterspielen wollen klicken sie auf OK")
    For $i = 2 To UBound($SnakePos) - 3
        _GDIPlus_GraphicsFillRect($hBackbuffer, $SnakePos[$i][0], $SnakePos[$i][1], $SnakeWidth, $SnakeHeight, $hBrush)
    Next
    _GDIPlus_GraphicsFillEllipse($hBackbuffer, $SnakePos[UBound($SnakePos) - 2][0], $SnakePos[UBound($SnakePos) - 1][1], $SnakeWidth, $SnakeHeight, $hBrush)
    _GDIPlus_GraphicsFillEllipse($hBackbuffer, $SnakePos[UBound($SnakePos) - 1][0], $SnakePos[UBound($SnakePos) - 1][1], $SnakeWidth, $SnakeHeight, $hBrush)
    _GDIPlus_GraphicsFillEllipse($hBackbuffer, $SnakePos[0][0], $SnakePos[0][1], $SnakeWidth, $SnakeHeight, $hBrush)
    _GDIPlus_GraphicsFillEllipse($hBackbuffer, $SnakePos[1][0], $SnakePos[1][1], $SnakeWidth, $SnakeHeight, $hBrush)

    $Split = StringSplit($Zeit - (TimerDiff($EndTimer) / 1000), ".", 2)
    If IsArray($Split) Then
        WinSetTitle("Neon Snake", "", "Neon Snake Punkte [" & $Punkte & "], Länge [" & UBound($SnakePos) & "], Zeit [" & $Split[0] & "sek.]")
    EndIf
    If $Zeit - (TimerDiff($EndTimer) / 1000) <= 0 Then
        MsgBox(0, "Aus", "Es ist aus! Jetzt würdest du zum Spielmenü oder zur Gesammtwertung (wenn Online) kommen!")
        Exit
    EndIf
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $GuiWidth, $GuiHeight)
WEnd

Func _GetPowerup()
    If TimerDiff($PowerTime) >= 15000 Then
        $hBrush = _GDIPlus_BrushCreateSolid(0xff00ff00)
        $SnakeSpeed = 3
    EndIf
    If $SnakePos[UBound($SnakePos) - 1][0] >= $PUX - $SnakeWidth And $SnakePos[UBound($SnakePos) - 1][0] <= $PUX + $SnakeWidth And $SnakePos[UBound($SnakePos) - 1][1] >= $PUY - $SnakeHeight And $SnakePos[UBound($SnakePos) - 1][1] <= $PUY + $SnakeHeight Then
        If $status = 1 Then
            $hBrush = _GDIPlus_BrushCreateSolid(0xffff0000)
            $SnakeSpeed = 5
        EndIf

        If $status = 2 Then
            For $i = 0 to (UBound($SnakePos) - 1) / 2
                _ArrayDelete($SnakePos, $i)
            Next
        EndIf
        $PowerTime = TimerInit()
        $PUX = 2 * $GuiWidth
        $PUY = 2 * $GuiHeight
    EndIf
EndFunc   ;==>_GetPowerup

Func _SetPowerup()
    If TimerDiff($TimerInit) >= 5000 Then
        $PUX = $GuiWidth
        $PUY = $GuiHeight
    EndIf
    If $FoodOn Then Return
    If Random(1, 4, 1) = 3 Then
        $u = False
        Do
            $PUX = Random(1, $GuiWidth - $SnakeWidth, 1)
            $PUY = Random(1, $GuiHeight - $SnakeHeight, 1)
            For $i = 0 To UBound($MauerX) - 1
                If $PUX >= $MauerX[$i] - $SnakeWidth And $PUX <= $MauerX[$i] + $MauerWidth[$i] And $PUY >= $MauerY[$i] - $SnakeHeight And $PUY <= $MauerY[$i] + $MauerHeight[$i] Then
                    $u = False
                Else
                    $u = True
                EndIf
            Next
        Until $u = True
        $TimerInit = TimerInit()
        If Random(1, 5, 1) >= 2 Then
            $status = 1
        Else
            $status = 2
        EndIf
    EndIf
EndFunc   ;==>_SetPowerup

Func _EatFood()
    If TimerDiff($warten) < 500 Then Return
    If $SnakePos[UBound($SnakePos) - 1][0] >= $FoodX - $SnakeWidth And $SnakePos[UBound($SnakePos) - 1][0] <= $FoodX + $SnakeWidth And $SnakePos[UBound($SnakePos) - 1][1] >= $FoodY - $SnakeHeight And $SnakePos[UBound($SnakePos) - 1][1] <= $FoodY + $SnakeHeight Then
        $FoodOn = False
        ReDim $SnakePos[UBound($SnakePos) + $Wachstum][2]
        For $i = 1 To $Wachstum
            $SnakePos[UBound($SnakePos) - $i][0] = $SnakePos[UBound($SnakePos) - $Wachstum - 1][0]
            $SnakePos[UBound($SnakePos) - $i][1] = $SnakePos[UBound($SnakePos) - $Wachstum - 1][1]
        Next
        $Punkte += 1
        $warten = TimerInit()
    EndIf
EndFunc   ;==>_EatFood

Func _SetFood()
    If $FoodOn Then Return
    $u = False
    Do
        $FoodX = Random(1, $GuiWidth - $SnakeWidth, 1)
        $FoodY = Random(1, $GuiHeight - $SnakeHeight, 1)
        For $i = 0 To UBound($MauerX) - 1
            If $FoodX >= $MauerX[$i] - $SnakeWidth And $FoodX <= $MauerX[$i] + $MauerWidth[$i] And $FoodY >= $MauerY[$i] - $SnakeHeight And $FoodY <= $MauerY[$i] + $MauerHeight[$i] Then
                $u = False
            Else
                $u = True
            EndIf
        Next
    Until $u = True
    $FoodOn = True
EndFunc   ;==>_SetFood

Func _SnakeCrash()
    If TimerDiff($warten) <= 200 Then
        Return
    EndIf
    For $i = 0 To UBound($MauerX) - 1
        If $SnakePos[UBound($SnakePos) - 1][0] >= $MauerX[$i] - $SnakeWidth And $SnakePos[UBound($SnakePos) - 1][0] <= $MauerX[$i] + $MauerWidth[$i] And $SnakePos[UBound($SnakePos) - 1][1] >= $MauerY[$i] - $SnakeHeight And $SnakePos[UBound($SnakePos) - 1][1] <= $MauerY[$i] + $MauerHeight[$i] Then
            MsgBox(0, "Verloren", "LOL, du bist gegen eine Wand gerannt!")
            Exit
        EndIf
    Next

    For $i = 0 To UBound($SnakePos) - 9
        If $SnakePos[UBound($SnakePos) - 1][0] >= $SnakePos[$i][0] - $SnakeWidth And $SnakePos[UBound($SnakePos) - 1][0] <= $SnakePos[$i][0] + $SnakeWidth And $SnakePos[UBound($SnakePos) - 1][1] >= $SnakePos[$i][1] - $SnakeHeight And $SnakePos[UBound($SnakePos) - 1][1] <= $SnakePos[$i][1] + $SnakeHeight Then
            MsgBox(0, "Verloren", "Du bist mit dir selber zusammengestoßen!")
            Exit
        EndIf
    Next
EndFunc   ;==>_SnakeCrash

Func _SnakeOpt()
    For $i = 0 To UBound($SnakePos) - 2
        $SnakePos[$i][0] = $SnakePos[$i + 1][0]
        $SnakePos[$i][1] = $SnakePos[$i + 1][1]
    Next

    Switch $Richtung
        Case 25
            $SnakePos[UBound($SnakePos) - 1][0] -= $SnakeSpeed
        Case 26
            $SnakePos[UBound($SnakePos) - 1][1] -= $SnakeSpeed
        Case 27
            $SnakePos[UBound($SnakePos) - 1][0] += $SnakeSpeed
        Case 28
            $SnakePos[UBound($SnakePos) - 1][1] += $SnakeSpeed
    EndSwitch

    If $SnakePos[UBound($SnakePos) - 1][0] >= $GuiWidth Then $SnakePos[UBound($SnakePos) - 1][0] = 0
    If $SnakePos[UBound($SnakePos) - 1][0] <= 0 - $SnakeWidth Then $SnakePos[UBound($SnakePos) - 1][0] = $GuiWidth
    If $SnakePos[UBound($SnakePos) - 1][1] >= $GuiHeight Then $SnakePos[UBound($SnakePos) - 1][1] = 0
    If $SnakePos[UBound($SnakePos) - 1][1] <= 0 - $SnakeHeight Then $SnakePos[UBound($SnakePos) - 1][1] = $GuiHeight
EndFunc   ;==>_SnakeOpt

Func _SnakeMove()
    If _IsPressed(25) And $Richtung <> 27 Then ;;>> Links
        $Richtung = 25
        Return
    EndIf
    If _IsPressed(26) And $Richtung <> 28 Then ;;>> Oben
        $Richtung = 26
        Return
    EndIf
    If _IsPressed(27) And $Richtung <> 25 Then ;;>> Rechts
        $Richtung = 27
        Return
    EndIf
    If _IsPressed(28) And $Richtung <> 26 Then ;;>> Unten
        $Richtung = 28
        Return
    EndIf
EndFunc   ;==>_SnakeMove

Func _exit()
    _GDIPlus_BrushDispose($hBrushPU)
    _GDIPlus_BrushDispose($hBrushFood)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()
    Exit
EndFunc   ;==>_exit

Zitat

- Die Zeitanzeige sollte ganze Sekunden anzeigen oder auf max. 3 Nachkommastellen gerundet sein.

Schon erledigt ;)

Zitat

- Eine Kollision mit dem Rand sollte zum beenden (verloren) führen.

Auch schon erledig ;)

Zitat

- Du könntest "Mauern" einfügen, die man nicht berühren darf.

Gerade fertig

Zitat

- Gamepad-Unterstützung

Wie das? Dafür müsste ich die Gamepadtastendrücke auslesen, das weiß ich leider nicht wie das geht, würde mich über Hilfe freuen :)
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:




Neon Snake

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BadBunny« (6. März 2011, 19:31)


Oscar

Moderator

Registrierungsdatum: 15. Juni 2007

Wohnort: Lehrte

  • Private Nachricht senden

8

Sonntag, 6. März 2011, 19:29

Wie das? Dafür müsste ich die Gamepadtastendrücke auslesen, das weiß ich leider nicht wie das geht, würde mich über Hilfe freuen :)

Das ist gar nicht so schwer. Ich habe das mal für mein Musik-Quiz benutzt.
Dazu habe ich diese Vorlage verwendet:

  Spoiler Spoiler

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
;____________________________________________________________________
;      Original program by Ejoc                           ;
;      Improved by Adam1213 (autoit 3.2 compatiblity + improved labels            ;
;____________________________________________________________________

#include <GUIConstants.au3>

;_________________ SETUP_____________________________________
Local $joy,$coor,$h,$s,$msg

$joy    = _JoyInit()

dim $labels_text[8]=['X', 'Y', 'Z', 'R', 'U', 'V', 'POV', 'Buttons']
dim $labels_no=UBound($labels_text)
dim $labels[$labels_no]
dim $labels_value[$labels_no]
;__________ CONFIG ____________________________________________
;---------- Find the max length of the longest label --------------
$label_len=0
for $text in $labels_text
    $len=stringlen($text)
    if $len>$label_len then
        $label_len=$len
    endif
next
$label_len*=6
;_____________ GUI _______________________________________________
GUICreate('Joystick Test', 200, 200)
GUICtrlCreateLabel('Joystick', 40, 20, 100, 20)
   
for $i=0 to $labels_no-1
    GuiCtrlCreatelabel($labels_text[$i]&':', 10, 60+$i*12, $label_len, 12)
    $labels[$i]=GuiCtrlCreatelabel('', 10+$label_len, 60+$i*12, 70, 12)
    $labels_value[$i]=''
next
GUISetState()
;_____________________________________________________________________

while 1
    $coord=_GetJoy($joy,0)
    for $i=0 to UBound($coord)-1
        if $coord[$i]<>$labels_value[$i] then
            GUICtrlSetData($labels[$i], $coord[$i])
            $labels_value[$i]=$coord[$i]
        endif
    next
    sleep(10)
    $msg =GUIGetMSG()
    if $msg = $GUI_EVENT_CLOSE Then Exitloop
WEnd

$lpJoy=0 ; Joyclose

;======================================
;   _JoyInit()
;======================================
Func _JoyInit()
    Local $joy
    Global $JOYINFOEX_struct    = "dword[13]"

    $joy=DllStructCreate($JOYINFOEX_struct)
    if @error Then Return 0
    DllStructSetData($joy, 1, DllStructGetSize($joy), 1);dwSize = sizeof(struct)
    DllStructSetData($joy, 1, 255, 2)            ;dwFlags = GetAll
    return $joy
EndFunc

;======================================
;   _GetJoy($lpJoy,$iJoy)
;   $lpJoy Return from _JoyInit()
;   $iJoy  Joystick # 0-15
;   Return Array containing X-Pos, Y-Pos, Z-Pos, R-Pos, U-Pos, V-Pos,POV
;         Buttons down
;
;         *POV This is a digital game pad, not analog joystick
;         65535  = Not pressed
;         0    = U
;         4500   = UR
;         9000   = R
;         Goes around clockwise increasing 4500 for each position
;======================================
Func _GetJoy($lpJoy,$iJoy)
    Local $coor,$ret

    Dim $coor[8]
    DllCall("Winmm.dll","int","joyGetPosEx", _
            "int",$iJoy, _
            "ptr",DllStructGetPtr($lpJoy))

    if Not @error Then
        $coor[0]    = DllStructGetData($lpJoy,1,3)
        $coor[1]    = DllStructGetData($lpJoy,1,4)
        $coor[2]    = DllStructGetData($lpJoy,1,5)
        $coor[3]    = DllStructGetData($lpJoy,1,6)
        $coor[4]    = DllStructGetData($lpJoy,1,7)
        $coor[5]    = DllStructGetData($lpJoy,1,8)
        $coor[6]    = DllStructGetData($lpJoy,1,11)
        $coor[7]    = DllStructGetData($lpJoy,1,9)
    EndIf

    return $coor
EndFunc

Registrierungsdatum: 27. Mai 2010

Wohnort: NRW

Beruf: Schüler (Oberstufe)

  • Private Nachricht senden

9

Sonntag, 6. März 2011, 19:29

Schön! Läuft flüssig und funktioniert gut,
aber ich finde es vom Gameplay komisch, dass man sich mit den Bewegungen der Schlage nicht an ein Raster halten muss, sprich ganz kleine "Kurven" fahren kann.
So kann man z.B. nur halb in ein Futterstück reinfahren..

Das verringert allerdings nicht den Spielspaß ;)

MfG,
Fresapore

Registrierungsdatum: 28. März 2009

Beruf: Informatik Student

  • Private Nachricht senden

10

Montag, 7. März 2011, 10:15

Ich finds gut :)

Allerdings gefällt mir der Punkt mir dem "Halb in ein Futterstück reinfahren" nicht so gut, da ich es gewohnt bin ganz schnell runter und rechts zu drücken wenn ich z.B. nur eine Einheit über dem Futter bin :D

AutoIt-Quellcode

1
2
3
4
5
6
7
While $Life = True
            $nMSG = BrainGetMsg()
            Switch $nMSG
                        Case $Idea
                                    _Convert_Idea2Code()
            EndSwitch
WEnd

  • »BadBunny« ist der Autor dieses Themas

Registrierungsdatum: 30. Mai 2010

  • Private Nachricht senden

11

Montag, 7. März 2011, 11:42

Danke für die guten Ideen, man könnte die Überprüfung ein wenig kleiner machen, also das man nicht so weit weg vom Punkt sein darf.

Neue Updates:
-Offline Mutliplayer/Einzelplayer mit Josytick und Tastatur!
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:




Neon Snake

Registrierungsdatum: 25. Februar 2011

  • Private Nachricht senden

12

Montag, 7. März 2011, 12:27

Du könntest oben in dem spoiler noch den bb code

Quellcode

1
 [autoit] code [/autoit] 
benutzen!

  • »BadBunny« ist der Autor dieses Themas

Registrierungsdatum: 30. Mai 2010

  • Private Nachricht senden

13

Montag, 7. März 2011, 13:16

So, danke für den Hinweis, da ist was ausversehen weggerutscht.

2 Bugs wurden jetzt behoben.
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:




Neon Snake

Registrierungsdatum: 26. April 2010

Wohnort: Baden-Württemberg

Beruf: Schüler (13.Kl)

  • Private Nachricht senden

14

Dienstag, 8. März 2011, 00:48

Mir gefällt's! Soweit keine negativen Aspekte gefunden. Weiter so! :thumbsup:

  • »BadBunny« ist der Autor dieses Themas

Registrierungsdatum: 30. Mai 2010

  • Private Nachricht senden

15

Dienstag, 8. März 2011, 19:29

Version 1.8 ist raus, verbesserte GUI auswahl, Grafich verschönert. Mehrere Maps.
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:




Neon Snake

name22

Incognito

Registrierungsdatum: 28. Dezember 2009

Wohnort: Baden Württemberg

Beruf: Lehreralptraum

  • Private Nachricht senden

16

Dienstag, 8. März 2011, 21:35

Die neue Version gefällt mir (besonder die name22 Map ^^), aber wenn man zu schnell die Richtung ändert fährt man auch in sich rein (das sieht so aus als würde die Schlange ihren eigenen Kopf fressen :D). Ich weiß nicht ob das beabsichtigt ist, aber es sieht irgendwie komisch aus.

AutoIt

MyPastebin

  • »BadBunny« ist der Autor dieses Themas

Registrierungsdatum: 30. Mai 2010

  • Private Nachricht senden

17

Dienstag, 8. März 2011, 22:18

Das könnte man verhindern in dem man ein wenig Zeit nach jeder Kurve hat, bis man wieder kurven darf :D aber die Frage ist, lohnt sich das? Man soll ja nicht wild umherklicken. Ich würde mich über eure Meinung freuen.
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:




Neon Snake

Registrierungsdatum: 26. April 2010

Wohnort: Baden-Württemberg

Beruf: Schüler (13.Kl)

  • Private Nachricht senden

18

Mittwoch, 9. März 2011, 01:28

Idee: Lager die Maps in Dateien aus, dann kann man später leicht einen Editor hinzufügen oder einfach Maps ergänzen.

  • »BadBunny« ist der Autor dieses Themas

Registrierungsdatum: 30. Mai 2010

  • Private Nachricht senden

19

Mittwoch, 9. März 2011, 11:18

Danke für diesen sehr guten Tip! Und es ist fertig! Der Map Editor steht bereit und das Spiel kann sie auslesen! Ihr könnt hier eure eigenen erstellten Maps vorstellen, evtl nehm ich welche auf ;)
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:




Neon Snake

volle

User

Registrierungsdatum: 10. Mai 2010

Wohnort: Stendal

Beruf: Gleisbauer

  • Private Nachricht senden

20

Mittwoch, 9. März 2011, 16:26

Ist das Online spielen eig. schon verfügbar oder noch nicht? :P
Mit freundlichen Grüßen

volle


Thema bewerten
autoit.de Webutation