Hi, ich hab ein kleines Programm geschrieben, mit dem man mit einem Würfel würfeln kann.
Bis jetzt ist es zwar noch nicht so nützlich, aber man könnte es in ein Spiel einbauen.
Hier ist das Skript, allerdings braucht man die Bilder noch dazu:
Spoiler anzeigen
#include <GDIPlus.au3>
#include <Misc.au3>
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
Global $GUIWidth = 700
Global $GUIHeight = 700
Global $WurfeliX
Global $WurfeliY
Global $WurfelStepiX = Random(25, 30)
Global $WurfelStepiY = Random(15, 20)
Global $WurfelWidth = 408
Global $WurfelHeight = 392
Global $WurfelPhase = 1 ;1, 2 oder 3
Global $WurfZeit = 0
Global $Zahl[6]
Global $VZahl[6]
Global $WurfelBewegtSich = False
Global $RandomNumber = Random(1, 6, 1)
Global $MaxWurfZeit = 255
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$GUI = GUICreate("Würfel", $GUIWidth, $GUIHeight, -1, -1)
GUISetState()
Opt("MouseCoordMode", 2)
[/autoit] [autoit][/autoit] [autoit]$GDIPlusGUI = _GDIPlus_GraphicsCreateFromHWND($GUI)
$Bitmap = _GDIPlus_BitmapCreateFromGraphics($GUIWidth, $GUIHeight, $GDIPlusGUI)
$Buffer = _GDIPlus_ImageGetGraphicsContext($Bitmap)
_GDIPlus_GraphicsSetSmoothingMode($Buffer, 2)
_GDIPlus_GraphicsClear($Buffer, 0xFFFFFFFF)
GUIRegisterMsg($WM_PAINT, "_WM_PAINT")
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDrawImageRect($GDIPlusGUI, $Bitmap, 0, 0, $GUIWidth, $GUIHeight)
[/autoit] [autoit][/autoit] [autoit]#Region ## Bilder reinladen ##
[/autoit] [autoit][/autoit] [autoit]$WurfelBewegung1 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\data\Würfel1verwischt.png")
$WurfelBewegung2 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\data\Würfel2verwischt.png")
$WurfelBewegung3 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\data\Würfel3verwischt.png")
For $i = 1 To 6 Step 1
$Zahl[$i - 1] = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\data\" & $i & ".png")
Next
For $i = 1 To 6 Step 1
$VZahl[$i - 1] = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\data\v" & $i & ".png")
Next
#EndRegion ## Bilder reinladen ##
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
_Exit()
Case $GUI_EVENT_RESTORE
_WM_PAINT()
Case $GUI_EVENT_PRIMARYDOWN
If $WurfelBewegtSich = False Then
$WurfelBewegtSich = True
$WurfZeit = 0
$WurfelStepiX = Random(25, 30)
$WurfelStepiY = Random(15, 20)
$RandomNumber = Random(1, 6, 1)
$WurfeliX = MouseGetPos(0) - $WurfelWidth / 2
$WurfeliY = MouseGetPos(1) - $WurfelHeight / 2
AdlibRegister("_Draw", 70)
EndIf
EndSwitch
WEnd
Func _Exit()
AdlibUnRegister()
#Region ## Bilder Disposen ##
_GDIPlus_ImageDispose($WurfelBewegung1)
_GDIPlus_ImageDispose($WurfelBewegung2)
_GDIPlus_ImageDispose($WurfelBewegung3)
For $i = 1 To 6 Step 1
_GDIPlus_ImageDispose($Zahl[$i - 1])
Next
For $i = 1 To 6 Step 1
_GDIPlus_ImageDispose($VZahl[$i - 1])
Next
#EndRegion ## Bilder Disposen ##
_GDIPlus_GraphicsDispose($Buffer)
_GDIPlus_BitmapDispose($Bitmap)
_GDIPlus_GraphicsDispose($GDIPlusGUI)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>_Exit
Func _Draw()
If $WurfZeit < 250 Then
_GDIPlus_GraphicsClear($Buffer, 0xFFFFFFFF)
If $WurfelPhase = 1 Then
_GDIPlus_GraphicsDrawImageRect($Buffer, $WurfelBewegung1, $WurfeliX, $WurfeliY, $WurfelWidth, $WurfelHeight)
$WurfelPhase = 2
ElseIf $WurfelPhase = 2 Then
_GDIPlus_GraphicsDrawImageRect($Buffer, $WurfelBewegung2, $WurfeliX, $WurfeliY, $WurfelWidth, $WurfelHeight)
$WurfelPhase = 3
ElseIf $WurfelPhase = 3 Then
_GDIPlus_GraphicsDrawImageRect($Buffer, $WurfelBewegung3, $WurfeliX, $WurfeliY, $WurfelWidth, $WurfelHeight)
$WurfelPhase = 1
EndIf
_GDIPlus_GraphicsDrawImageRect($GDIPlusGUI, $Bitmap, 0, 0, $GUIWidth, $GUIHeight)
[/autoit] [autoit][/autoit] [autoit]$WurfeliX += $WurfelStepiX
$WurfeliY += $WurfelStepiY
If $WurfeliX <= 0 - 130 Then $WurfelStepiX *= -1
If $WurfeliX >= $GUIWidth - 270 Then $WurfelStepiX *= -1
If $WurfeliY <= 0 - 130 Then $WurfelStepiY *= -1
If $WurfeliY >= $GUIHeight - 270 Then $WurfelStepiY *= -1
$WurfZeit += 1
[/autoit] [autoit][/autoit] [autoit]EndIf
[/autoit] [autoit][/autoit] [autoit]If $WurfZeit = $MaxWurfZeit Then
$WurfZeit += 0
Else
$WurfZeit += 1
EndIf
If $WurfZeit = 70 Then
If $WurfelStepiX > 0 Then
$WurfelStepiX -= 10
ElseIf $WurfelStepiX < 0 Then
$WurfelStepiX += 10
EndIf
If $WurfelStepiY > 0 Then
$WurfelStepiY -= 10
ElseIf $WurfelStepiY < 0 Then
$WurfelStepiY += 10
EndIf
$WurfZeit = 200
EndIf
If $WurfZeit = 230 Then
If $WurfelStepiX > 0 Then
$WurfelStepiX = 7
ElseIf $WurfelStepiX < 0 Then
$WurfelStepiX = -7
EndIf
If $WurfelStepiY > 0 Then
$WurfelStepiY = 7
ElseIf $WurfelStepiY < 0 Then
$WurfelStepiY = -7
EndIf
EndIf
If $WurfZeit = 250 Then
_GDIPlus_GraphicsClear($Buffer, 0xFFFFFFFF)
$WurfelStepiX = 0
$WurfelStepiY = 0
If $RandomNumber = 1 Then _GDIPlus_GraphicsDrawImageRect($Buffer, $VZahl[$RandomNumber - 1], $WurfeliX, $WurfeliY, $WurfelWidth, $WurfelHeight)
If $RandomNumber = 2 Then _GDIPlus_GraphicsDrawImageRect($Buffer, $VZahl[$RandomNumber - 1], $WurfeliX, $WurfeliY, $WurfelWidth, $WurfelHeight)
If $RandomNumber = 3 Then _GDIPlus_GraphicsDrawImageRect($Buffer, $VZahl[$RandomNumber - 1], $WurfeliX, $WurfeliY, $WurfelWidth, $WurfelHeight)
If $RandomNumber = 4 Then _GDIPlus_GraphicsDrawImageRect($Buffer, $VZahl[$RandomNumber - 1], $WurfeliX, $WurfeliY, $WurfelWidth, $WurfelHeight)
If $RandomNumber = 5 Then _GDIPlus_GraphicsDrawImageRect($Buffer, $VZahl[$RandomNumber - 1], $WurfeliX, $WurfeliY, $WurfelWidth, $WurfelHeight)
If $RandomNumber = 6 Then _GDIPlus_GraphicsDrawImageRect($Buffer, $VZahl[$RandomNumber - 1], $WurfeliX, $WurfeliY, $WurfelWidth, $WurfelHeight)
_WM_PAINT()
EndIf
If $WurfZeit = $MaxWurfZeit Then
$WurfelStepiX = 0
$WurfelStepiY = 0
If $RandomNumber = 1 Then _GDIPlus_GraphicsDrawImageRect($Buffer, $Zahl[$RandomNumber - 1], $WurfeliX, $WurfeliY, $WurfelWidth, $WurfelHeight)
If $RandomNumber = 2 Then _GDIPlus_GraphicsDrawImageRect($Buffer, $Zahl[$RandomNumber - 1], $WurfeliX, $WurfeliY, $WurfelWidth, $WurfelHeight)
If $RandomNumber = 3 Then _GDIPlus_GraphicsDrawImageRect($Buffer, $Zahl[$RandomNumber - 1], $WurfeliX, $WurfeliY, $WurfelWidth, $WurfelHeight)
If $RandomNumber = 4 Then _GDIPlus_GraphicsDrawImageRect($Buffer, $Zahl[$RandomNumber - 1], $WurfeliX, $WurfeliY, $WurfelWidth, $WurfelHeight)
If $RandomNumber = 5 Then _GDIPlus_GraphicsDrawImageRect($Buffer, $Zahl[$RandomNumber - 1], $WurfeliX, $WurfeliY, $WurfelWidth, $WurfelHeight)
If $RandomNumber = 6 Then _GDIPlus_GraphicsDrawImageRect($Buffer, $Zahl[$RandomNumber - 1], $WurfeliX, $WurfeliY, $WurfelWidth, $WurfelHeight)
_WM_PAINT()
$WurfelBewegtSich = False
AdlibUnRegister("_Draw")
EndIf
EndFunc ;==>_Draw
Func _WM_PAINT()
_GDIPlus_GraphicsDrawImageRect($GDIPlusGUI, $Bitmap, 0, 0, $GUIWidth, $GUIHeight)
EndFunc ;==>_WM_PAINT
Im Anhang hab ich noch das Skript mit den Bildern.
Hoffe auf Feedback