# Simple Orange Ball Movement Problem

## Recommended Posts

#include <GUIConstantsEx.au3> ;must

#include <StaticConstants.au3> ;must

#include <WindowsConstants.au3> ;must

Global \$Form1 = GUICreate("Ball Movement", 600, 500) ;must

\$x= -100

\$y= -100

HotKeySet("{Up}", "North")

Func North()

\$y = \$y - 50

ShapeCreation() ;Calls the ShapeCreation function

EndFunc

HotKeySet("{Down}", "South")

Func South()

\$y = \$y + 50

ShapeCreation() ;Calls the ShapeCreation function

EndFunc

HotKeySet("{Right}", "East")

Func East()

\$x = \$x + 50

ShapeCreation() ;Calls the ShapeCreation function

EndFunc

HotKeySet("{Left}", "West")

Func West()

\$x = \$x - 50

ShapeCreation() ;Calls the ShapeCreation function

EndFunc

GUISetState(@SW_SHOW) ;must

While 1 ;must

\$nMsg = GUIGetMsg() ;must

Switch \$nMsg ;must

Case \$GUI_EVENT_CLOSE ;must

Exit ;must

Func ShapeCreation() ;The ShapeCreation function

\$Ball = GUICtrlCreateGraphic(\$x, \$y)

GUICtrlSetGraphic(-1, \$GUI_GR_COLOR, 0, 0xff9933) ;The color of the shape

GUICtrlSetGraphic(-1, \$GUI_GR_ELLIPSE, 100, 100, 50, 50) ;The shape of the shape(Circle) (-1, \$GUI_GR_ELLIPSE, X, Y, Height, Width)

GUISetState()

EndFunc

EndSwitch ;must

WEnd ;must

Hey guys when I press my arrow keys to move my orange ball, it sometimes doesn't move or sometimes moves in the wrong direction. Can you fix it for me or tell me how to fix it, thanks =D.

-Newbie

##### Share on other sites

Hey guys when I press my arrow keys to move my orange ball, it sometimes doesn't move or sometimes moves in the wrong direction. Can you fix it for me or tell me how to fix it, thanks =D.

-Newbie

No.

Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.

##### Share on other sites

Your function definition is in a while loop.

I what'd.

##### Share on other sites

This is one way of doing it.

```#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>

HotKeySet("{Up}", "North")
HotKeySet("{Down}", "South")
HotKeySet("{Right}", "East")
HotKeySet("{Left}", "West")

Global \$Form1 = GUICreate("Ball Movement", 600, 500, -1, -1, \$WS_SIZEBOX, 0x2000000)
Global \$x = -100, \$y = -100, \$Ball = GUICtrlCreateGraphic(\$x, \$y), \$aWinPos = WinGetPos("Ball Movement")

ShapeCreation()
GUISetState(@SW_SHOW)

While 1
\$nMsg = GUIGetMsg()
Switch \$nMsg
Case \$GUI_EVENT_CLOSE
Exit
Case \$GUI_EVENT_RESIZED
\$aWinPos = WinGetPos("Ball Movement")
EndSwitch
WEnd

Func ShapeCreation()    ;The ShapeCreation function
;GUICtrlDelete(\$Ball)   ;Uncomment this line for one ball only
\$Ball = GUICtrlCreateGraphic(\$x, \$y)
GUICtrlSetGraphic(-1, \$GUI_GR_COLOR, 0, 0xFF9933) ;The color of the shape
GUICtrlSetGraphic(-1, \$GUI_GR_ELLIPSE, 100, 100, 50, 50)
GUICtrlSetStyle(-1, \$SS_NOTIFY)
EndFunc ;==>ShapeCreation

Func North()
If \$y > -100 Then
\$y -= 50
ShapeCreation()
EndIf
EndFunc ;==>North

Func South()
If \$y < \$aWinPos[3] - (Mod(\$aWinPos[3], 100) + 150) Then
\$y += 50
ShapeCreation()
EndIf
EndFunc ;==>South

Func East()
If \$x < \$aWinPos[2] - (Mod(\$aWinPos[2], 100) + 150) Then
\$x += 50
ShapeCreation()
EndIf
EndFunc ;==>East

Func West()
If \$x > -100 Then
\$x -= 50
ShapeCreation()
EndIf
EndFunc ;==>West```

## Create an account

Register a new account

×

• Wiki

• Back

• Git