Hallo an alle,
habe mal aus langeweile etwas angefangen und wollte es ein wenig erweitern. Undzwar geht es um eine Gui, wo man mit den Pfeiltasten (links,rechts) ein Label bewegen kann und mit der Leertaste ein "Sprung" realisiert werden soll. Klappt an sich leider nicht ganz wie ich es will.
Hier erst einmal der Code
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
Global $posx = 0, $posy = @DesktopHeight-300, $speed = 10, $delay = 50
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("SB Game", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
GUISetBkColor(0xCDAD00)
$mainmenu = GUICtrlCreateMenu("Datei")
$exititem = GUICtrlCreateMenuItem("Beenden", $mainmenu)
$label1 = GUICTrlCreateLabel("",0,@DesktopHeight,60,300)
GUICTrlSEtBkColor(-1,0x000000)
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case $exititem
Exit
EndSwitch
if _IsPressed("25") Then _left()
If _IsPressed("27") Then _right()
if _IsPressed("20") Then _springen()
WEnd
Func _springen()
Local $delay = 50
For $i = 1 to 20
Switch _IsPressed("27")
case 1
_right()
$delay = 0
Case Else
$delay = 50
EndSwitch
Switch _IsPressed("25")
case 1
_left()
$delay = 0
Case Else
$delay = 50
EndSwitch
$posy = $posy -10
GUICtrlSetPos($label1,$posx,$posy)
sleep ($delay)
Next
Local $delay = 50
For $i = 1 to 20
Switch _IsPressed("27")
case 1
_right()
$delay = 0
Case Else
$delay = 50
EndSwitch
Switch _IsPressed("25")
case 1
_left()
$delay = 0
Case Else
$delay = 50
EndSwitch
$posy = $posy +10
GUICtrlSetPos($label1,$posx,$posy)
sleep ($delay)
Next
Local $delay = 50
EndFunc
Func _right()
$posx += $speed
If $posx >= @DesktopWidth Then $posx = 0
GUICtrlSetPos($label1,$posx,$posy)
Sleep($delay)
EndFunc ;==>_right
Func _left()
$posx -= $speed
If $posx <= 0 Then $posx = @DesktopWidth
GUICtrlSetPos($label1,$posx,$posy)
Sleep($delay)
EndFunc ;==>_left
Func _Exit()
Exit
EndFunc
ACHTUNG!!! Noob am Coden (Code ist nicht schön ich weiss)
Das Problem ist, das jeweils das 2. Switch in diesem Fall
[autoit]Switch _IsPressed("25")
case 1
_left()
$delay = 0
Case Else
$delay = 50
EndSwitch
Probleme macht, wenn ich im Sprung nach Rechts drücke ruckelt er... nach links gehts einwandfrei. Wenn ich die Switches tausche dann ruckelt es Links.
Liegt es an Switch ? hatte es vorher mit If und das ging auch nicht ![]()
Meine Frage: Kann man es anders realisieren? das es für beide Richtungen geht ?