So Leute,
es ist wieder einmal soweit, dass ich eure Hilfe benötige. Undzwar hatte ich mir zu Übungszwecken überlegt, das berühmte "HandyGame" Snake nachzubauen.
Leider habe ich noch nen Problem mit der Schlange. Aber bevor wir dazu kommen, erst einmal der Code (Bilder etc. sind angehängt).
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.0.0
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit]#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
HotKeySet("{right}","_rechts")
HotKeySet("{left}","_links")
HotKeySet("{up}","_oben")
HotKeySet("{down}","_unten")
HotKeySet("{esc}","_exit")
Global $pacX = 45, $pacY = 45, $pressed, $finish = False, $rX, $rY
[/autoit] [autoit][/autoit] [autoit]$dll = DllOpen("user32.dll")
[/autoit] [autoit][/autoit] [autoit]$hGui = GUICreate("",@DesktopWidth,@DesktopHeight,"","",$WS_POPUP)
GUICtrlSetColor(-1,0xFFFFFF)
GUISetBkColor(0x000000)
_Orahmen()
_Urahmen()
_Lrahmen()
_Rrahmen()
$hPac = GUICtrlCreatePic(@ScriptDir & "\pac_right.jpg",$pacX,$pacY,36,36)
$rX = Random(44,@DesktopWidth -44 -36,1)
$rY = Random(44,@DesktopHeight -44 -36,1)
$lol = GUICtrlCreatePic(@ScriptDir & "\punkt.jpg",$rX,$rY,20,20)
GUISetState()
;~ AdlibEnable("_futter", 100)
[/autoit] [autoit][/autoit] [autoit]While 1
Sleep (100)
_delete()
WEnd
Func _rechts()
Local $hR, $a = "lol"
GUICtrlDelete($hPac)
$hR = GUICtrlCreatePic(@ScriptDir & "\pac_right.jpg",$pacX,$pacY,36,36)
While 1
_delete()
If $pacX +1 >= @DesktopWidth - 44 -36 Then
Sleep(10)
Else
For $i = 1 To 36
_delete()
$finish = False
If $pacX +1 >= @DesktopWidth - 44 -36 Then
$finish = True
ExitLoop
EndIf
$pacX += 2
GUICtrlSetPos($hR,$pacX,$pacY)
Sleep(10)
$pressed = @HotKeyPressed
Next
$finish = True
$a &= "lol"
EndIf
WEnd
$finish = False
EndFunc
Func _links()
GUICtrlDelete($hPac)
$hR = GUICtrlCreatePic(@ScriptDir & "\pac_left.jpg",$pacX,$pacY,36,36)
Do
_delete()
If $pacX -1 <= 44 Then
Sleep(10)
Else
For $i = 1 To 36
_delete()
$finish = False
If $pacX -1 <= 44 Then
$finish = True
ExitLoop
EndIf
$pacX -= 2
GUICtrlSetPos($hR,$pacX,$pacY)
Sleep(10)
$pressed = @HotKeyPressed
Next
$finish = True
EndIf
Until $pressed <> "{left}" And $finish = True
$finish = False
EndFunc
Func _oben()
GUICtrlDelete($hPac)
$hR = GUICtrlCreatePic(@ScriptDir & "\pac_up.jpg",$pacX,$pacY,36,36)
Do
_delete()
If $pacY -1 <= 44 Then
Sleep(10)
Else
For $i = 1 To 36
_delete()
$finish = False
If $pacY -1 <= 44 Then
$finish = True
ExitLoop
EndIf
$pacY -= 2
GUICtrlSetPos($hR,$pacX,$pacY)
Sleep(10)
$pressed = @HotKeyPressed
Next
$finish = True
EndIf
Until $pressed <> "{up}" And $finish = True
$finish = False
EndFunc
Func _unten()
GUICtrlDelete($hPac)
$hR = GUICtrlCreatePic(@ScriptDir & "\pac_down.jpg",$pacX,$pacY,36,36)
Do
_delete()
If $pacY +1 >= @DesktopHeight -44 -36 Then
Sleep(10)
Else
For $i = 1 To 36
_delete()
$finish = False
If $pacY +1 >= @DesktopHeight -44 -36 Then
$finish = True
ExitLoop
EndIf
$pacY += 2
GUICtrlSetPos($hR,$pacX,$pacY)
Sleep(10)
$pressed = @HotKeyPressed
Next
$finish = True
EndIf
Until $pressed <> "{down}" And $finish = True
EndFunc
Func _Orahmen()
Local $x = 9, $y = 9
For $i = 1 To 35
GuiCtrlCreatePic(@ScriptDir & "\blau.jpg",$x,$y,36,36)
$x += 36
Next
EndFunc
Func _Urahmen()
Local $x = 9, $y = @DesktopHeight - 43
For $i = 1 To 35
GuiCtrlCreatePic(@ScriptDir & "\blau.jpg",$x,$y,36,36)
$x += 36
Next
EndFunc
Func _Lrahmen()
Local $x = 9, $y = 9
For $i = 1 To 28
GuiCtrlCreatePic(@ScriptDir & "\blau.jpg",$x,$y,36,36)
$y += 36
Next
EndFunc
Func _Rrahmen()
Local $x = @DesktopWidth - 44, $y = 9
For $i = 1 To 28
GuiCtrlCreatePic(@ScriptDir & "\blau.jpg",$x,$y,36,36)
$y += 36
Next
EndFunc
Func _exit()
Exit
EndFunc
Func _delete()
For $i = 0 To 20
If $pacX + $i = $rX Or $pacX - $i = $rX Then
For $i = 0 To 20
If $pacY + $i = $rY Or $pacY -$i = $rY Then
GUICtrlDelete($lol)
$rX = Random(44,@DesktopWidth -44 -36,1)
$rY = Random(44,@DesktopHeight -44 -36,1)
$lol = GUICtrlCreatePic(@ScriptDir & "\punkt.jpg",$rX,$rY,20,20)
EndIf
Next
EndIf
Next
For $i = 0 To 20
If $pacY + $i = $rY Or $pacY -$i = $rY Then
For $i = 0 To 20
If $pacX +$i = $rX Or $pacX -$i = $rX Then
GUICtrlDelete($lol)
$rX = Random(44,@DesktopWidth -44 -36,1)
$rY = Random(44,@DesktopHeight -44 -36,1)
$lol = GUICtrlCreatePic(@ScriptDir & "\punkt.jpg",$rX,$rY,20,20)
EndIf
Next
EndIf
Next
EndFunc
Also, Problem ist, wenn man einen Punkt "Frisst", sollte die Schlange etwas größer werden. An sich kein Problem, jedoch ist das Problem dann, dass sich diese dann auch Snakegerecht hinterherschlängeln und sie bei Berührung mit dem Kopf der Schlange zur Niederlage führen.
Ich hoffe ihr habt mich verstanden und könnte mir hierbei weiterhelfen. Danke
Mfg SiLenCa
Edit: Also der Code ist etwas unsauber usw. z.B. dllOpen ist aus versuchszwecken mit _IsPressed entstande gekommen und habs vergessen rauszunehmen sry ![]()
Edit2: Habe die Funktion _delete() ein wenig angepasst. (Die ist dafür da, zu fressen ^^)
Spoiler anzeigen
Func _delete()
Local $b = 0
For $i = 0 To 36
If $b <= 20 Then
$b += 1
Else
$b = 0
EndIf
If $pacX + $i = $rX Or $pacX = $rX + $b Then
Local $b = 0
For $i = 0 To 36
If $b <= 20 Then
$b += 1
Else
$b = 0
EndIf
If $pacY + $i = $rY Or $pacY = $rY + $b Then
Local $b = 0
GUICtrlDelete($lol)
$rX = Random(44,@DesktopWidth -44 -36,1)
$rY = Random(44,@DesktopHeight -44 -36,1)
$lol = GUICtrlCreatePic(@ScriptDir & "\punkt.jpg",$rX,$rY,20,20)
EndIf
Next
EndIf
Next
Local $b = 0
For $i = 0 To 36
If $b <= 20 Then
$b += 1
Else
$b = 0
EndIf
If $pacY + $i = $rY Or $pacY = $rY + $b Then
Local $b = 0
For $i = 0 To 36
Local $b = 0
If $b <= 20 Then
$b += 1
Else
$b = 0
EndIf
If $pacX +$i = $rX Or $pacX = $rX + $b Then
Local $b = 0
GUICtrlDelete($lol)
$rX = Random(44,@DesktopWidth -44 -36,1)
$rY = Random(44,@DesktopHeight -44 -36,1)
$lol = GUICtrlCreatePic(@ScriptDir & "\punkt.jpg",$rX,$rY,20,20)
EndIf
Next
EndIf
Next
EndFunc
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.0.0
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]HotKeySet("{right}","_rechts")
HotKeySet("{left}","_links")
HotKeySet("{up}","_oben")
HotKeySet("{down}","_unten")
HotKeySet("{esc}","_exit")
Global $pacX = 45, $pacY = 45, $pressed, $finish = False, $rX, $rY
[/autoit] [autoit][/autoit] [autoit]$dll = DllOpen("user32.dll")
[/autoit] [autoit][/autoit] [autoit]$hGui = GUICreate("",@DesktopWidth,@DesktopHeight,"","",$WS_POPUP)
GUICtrlSetColor(-1,0xFFFFFF)
;~ GUISetBkColor(0x000000)
_Orahmen()
_Urahmen()
_Lrahmen()
_Rrahmen()
$hPac = GUICtrlCreatePic(@ScriptDir & "\pac_right.jpg",$pacX,$pacY,36,36)
$rX = Random(44,@DesktopWidth -44 -36,1)
$rY = Random(44,@DesktopHeight -44 -36,1)
$lol = GUICtrlCreatePic(@ScriptDir & "\punkt.jpg",$rX,$rY,20,20)
GUISetState()
;~ AdlibEnable("_futter", 100)
[/autoit] [autoit][/autoit] [autoit]While 1
Sleep (100)
_delete()
WEnd
Func _rechts()
Local $hR, $a = "lol"
GUICtrlDelete($hPac)
$hR = GUICtrlCreatePic(@ScriptDir & "\pac_right.jpg",$pacX,$pacY,36,36)
While 1
_delete()
If $pacX +1 >= @DesktopWidth - 44 -36 Then
Sleep(10)
Else
For $i = 1 To 36
_delete()
$finish = False
If $pacX +1 >= @DesktopWidth - 44 -36 Then
$finish = True
ExitLoop
EndIf
$pacX += 2
GUICtrlSetPos($hR,$pacX,$pacY)
Sleep(10)
$pressed = @HotKeyPressed
Next
$finish = True
$a &= "lol"
EndIf
WEnd
$finish = False
EndFunc
Func _links()
GUICtrlDelete($hPac)
$hR = GUICtrlCreatePic(@ScriptDir & "\pac_left.jpg",$pacX,$pacY,36,36)
Do
_delete()
If $pacX -1 <= 44 Then
Sleep(10)
Else
For $i = 1 To 36
_delete()
$finish = False
If $pacX -1 <= 44 Then
$finish = True
ExitLoop
EndIf
$pacX -= 2
GUICtrlSetPos($hR,$pacX,$pacY)
Sleep(10)
$pressed = @HotKeyPressed
Next
$finish = True
EndIf
Until $pressed <> "{left}" And $finish = True
$finish = False
EndFunc
Func _oben()
GUICtrlDelete($hPac)
$hR = GUICtrlCreatePic(@ScriptDir & "\pac_up.jpg",$pacX,$pacY,36,36)
Do
_delete()
If $pacY -1 <= 44 Then
Sleep(10)
Else
For $i = 1 To 36
_delete()
$finish = False
If $pacY -1 <= 44 Then
$finish = True
ExitLoop
EndIf
$pacY -= 2
GUICtrlSetPos($hR,$pacX,$pacY)
Sleep(10)
$pressed = @HotKeyPressed
Next
$finish = True
EndIf
Until $pressed <> "{up}" And $finish = True
$finish = False
EndFunc
Func _unten()
GUICtrlDelete($hPac)
$hR = GUICtrlCreatePic(@ScriptDir & "\pac_down.jpg",$pacX,$pacY,36,36)
Do
_delete()
If $pacY +1 >= @DesktopHeight -44 -36 Then
Sleep(10)
Else
For $i = 1 To 36
_delete()
$finish = False
If $pacY +1 >= @DesktopHeight -44 -36 Then
$finish = True
ExitLoop
EndIf
$pacY += 2
GUICtrlSetPos($hR,$pacX,$pacY)
Sleep(10)
$pressed = @HotKeyPressed
Next
$finish = True
EndIf
Until $pressed <> "{down}" And $finish = True
EndFunc
Func _Orahmen()
Local $x = 9, $y = 9
For $i = 1 To 35
GuiCtrlCreatePic(@ScriptDir & "\blau.jpg",$x,$y,36,36)
$x += 36
Next
EndFunc
Func _Urahmen()
Local $x = 9, $y = @DesktopHeight - 43
For $i = 1 To 35
GuiCtrlCreatePic(@ScriptDir & "\blau.jpg",$x,$y,36,36)
$x += 36
Next
EndFunc
Func _Lrahmen()
Local $x = 9, $y = 9
For $i = 1 To 28
GuiCtrlCreatePic(@ScriptDir & "\blau.jpg",$x,$y,36,36)
$y += 36
Next
EndFunc
Func _Rrahmen()
Local $x = @DesktopWidth - 44, $y = 9
For $i = 1 To 28
GuiCtrlCreatePic(@ScriptDir & "\blau.jpg",$x,$y,36,36)
$y += 36
Next
EndFunc
Func _exit()
Exit
EndFunc
Func _delete()
Local $b = 0
For $i = 0 To 36
If $b <= 20 Then
$b += 1
Else
$b = 0
EndIf
If $pacX + $i = $rX Or $pacX = $rX + $b Then
Local $b = 0
For $i = 0 To 36
If $b <= 20 Then
$b += 1
Else
$b = 0
EndIf
If $pacY + $i = $rY Or $pacY = $rY + $b Then
Local $b = 0
GUICtrlDelete($lol)
$rX = Random(44,@DesktopWidth -44 -36,1)
$rY = Random(44,@DesktopHeight -44 -36,1)
$lol = GUICtrlCreatePic(@ScriptDir & "\punkt.jpg",$rX,$rY,20,20)
EndIf
Next
EndIf
Next
Local $b = 0
For $i = 0 To 36
If $b <= 20 Then
$b += 1
Else
$b = 0
EndIf
If $pacY + $i = $rY Or $pacY = $rY + $b Then
Local $b = 0
For $i = 0 To 36
Local $b = 0
If $b <= 20 Then
$b += 1
Else
$b = 0
EndIf
If $pacX +$i = $rX Or $pacX = $rX + $b Then
Local $b = 0
GUICtrlDelete($lol)
$rX = Random(44,@DesktopWidth -44 -36,1)
$rY = Random(44,@DesktopHeight -44 -36,1)
$lol = GUICtrlCreatePic(@ScriptDir & "\punkt.jpg",$rX,$rY,20,20)
EndIf
Next
EndIf
Next
EndFunc
Falls jemand eine bessere Idee hat, diese Funktion zu schreiben, wäre ich sehr dankbar ![]()