Hallo Leute,
Ich bin gerade dabei ein eigenes Spiel zu Programmieren, welches sich noch in der frühesten Anfangsphase befindet
Das Spiel kann eine txt Datei Lesen und diese in eine Map im Spiel umwandeln.
Diese Map soll auf eine eigene "Ebene" gezeichnet werden, sodass ich sie verschieben kann und immer direkt die
Map auf einmal zeichnen kann. Bitte nicht erschrecken... der Skript ist Ziemlich unstrukturiert und schlecht geschrieben d.h es
liegen noch Fehler vor im sinne von unnötigen Zeilen.
Nun seht selbst :
Spoiler anzeigen
#include <Misc.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <File.au3>
$hGui = GUICreate("Heart-Eater", 513, 513)
GUISetState(@SW_SHOW)
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$char = _GDIPlus_ImageLoadFromFile(@Scriptdir & "\data\char\char.png")
$schatten = _GDIPlus_ImageLoadFromFile(@Scriptdir & "\data\char\schatten.png")
$hintergrund = _GDIPlus_ImageLoadFromFile(@scriptdir & "\data\hintergrund.png")
$SPS = _GDIPlus_ImageLoadFromFile(@scriptdir&"\data\kachelspritesheet.png")
$hGr_Frontbuffer = _GDIPlus_GraphicsCreateFromHWND($hGUI)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$hBitmap_Backbuffer = _GDIPlus_BitmapCreateFromGraphics(600, 600, $hGr_Frontbuffer)
$hGr_Backbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap_Backbuffer)
$hGr_Map = _GDIPlus_ImageGetGraphicsContext($hBitmap_Backbuffer)
$BEWEG_SPEED = 50
$BEWEG_RICHTUNG = 1
$y = 0
Global $aArray
Local $mX, $mY
$MAPY = 2000
$MAPX = 2000
;===== HAUPTSCHLEIFE =========
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]FullsAni()
_openmap()
While 1
$nMsg = GUIGetMsg()
If $nMsg = -3 Then Exit
If _IsPressed(57) Or _IsPressed(26) Then
FullwAni()
EndIf ; w
If _IsPressed(41) Or _IsPressed(25) Then
FullaAni()
EndIf ; a
If _IsPressed(53) Or _IsPressed(28) Then
FullsAni()
EndIf ; s
If _IsPressed(44) Or _IsPressed(27) Then
FulldAni()
EndIf ; d
If _IsPressed(10) Then
$BEWEG_SPEED = 10
Else
$BEWEG_SPEED = 50
EndIf
WEnd
;====== BEWEGUNGS-RICHTUNGEN ========
[/autoit] [autoit][/autoit] [autoit]Func FullwAni()
wAnimaD()
If $BEWEG_RICHTUNG = 1 Then
For $y = 0 To 128 Step 16
$mY += 4
_GDIPlus_GraphicsClear($hGr_Backbuffer,0xFFFFFFFF)
openMap()
_GDIPlus_GraphicsDrawImage($hGr_Backbuffer, $schatten,265,280)
_GDIPlus_GraphicsDrawImageRectRect($hGr_Backbuffer, $char, $y,32,15,15,250,250,50,50)
_GDIPlus_GraphicsDrawImage($hGr_Frontbuffer, $hBitmap_Backbuffer, 0, 0)
Sleep($BEWEG_SPEED)
Next
EndIf
$y = 0
$BEWEG_RICHTUNG = 1
EndFunc
Func FullaAni()
aAnimaD()
If $BEWEG_RICHTUNG = 2 Then
For $y = 0 To 128 Step 16
$mX += 4
_GDIPlus_GraphicsClear($hGr_Backbuffer, 0xFFFFFFFF)
openMap()
_GDIPlus_GraphicsDrawImage($hGr_Backbuffer, $schatten,265,280)
_GDIPlus_GraphicsDrawImageRectRect($hGr_Backbuffer, $char, $y,48,15,15,250,250,50,50)
_GDIPlus_GraphicsDrawImage($hGr_Frontbuffer, $hBitmap_Backbuffer, 0, 0)
Sleep($BEWEG_SPEED)
Next
EndIf
$y = 0
$BEWEG_RICHTUNG = 2
EndFunc
Func FullsAni()
sAnimaD()
If $BEWEG_RICHTUNG = 3 Then
For $y = 0 To 128 Step 16
$mY -= 4
_GDIPlus_GraphicsClear($hGr_Backbuffer, 0xFFFFFFFF)
openMap()
_GDIPlus_GraphicsDrawImage($hGr_Backbuffer, $schatten,265,280)
_GDIPlus_GraphicsDrawImageRectRect($hGr_Backbuffer, $char, $y,0,15,15,250,250,50,50)
_GDIPlus_GraphicsDrawImage($hGr_Frontbuffer, $hBitmap_Backbuffer, 0, 0)
Sleep($BEWEG_SPEED)
Next
EndIf
$y = 0
$BEWEG_RICHTUNG = 3
EndFunc
Func FulldAni()
dAnimaD()
If $BEWEG_RICHTUNG = 4 Then
For $y = 0 To 128 Step 16
$mX -= 4
_GDIPlus_GraphicsClear($hGr_Backbuffer, 0xFFFFFFFF)
openMap()
_GDIPlus_GraphicsDrawImage($hGr_Backbuffer, $schatten,265,280)
_GDIPlus_GraphicsDrawImageRectRect($hGr_Backbuffer, $char, $y,16,15,15,250,250,50,50)
_GDIPlus_GraphicsDrawImage($hGr_Frontbuffer, $hBitmap_Backbuffer, 0, 0)
Sleep($BEWEG_SPEED)
Next
EndIf
$y = 0
$BEWEG_RICHTUNG = 4
EndFunc
;====== BEWEGUNGS-DREUNGEN ========
[/autoit] [autoit][/autoit] [autoit]Func dAnima()
If $BEWEG_RICHTUNG < 4 Then
For $i = 128 To 192 Step 16
_GDIPlus_GraphicsClear($hGr_Backbuffer, 0xFFFFFFFF)
openMap()
_GDIPlus_GraphicsDrawImage($hGr_Backbuffer, $schatten,265,280)
_GDIPlus_GraphicsDrawImageRectRect($hGr_Backbuffer, $char, $i,0,15,15,250,250,50,50)
_GDIPlus_GraphicsDrawImage($hGr_Frontbuffer, $hBitmap_Backbuffer, 0, 0)
Sleep(20)
Next
EndIf
EndFunc
Func wAnima()
If $BEWEG_RICHTUNG > 1 Then
For $i = 128 To 192 Step 16
_GDIPlus_GraphicsClear($hGr_Backbuffer, 0xFFFFFFFF)
openMap()
_GDIPlus_GraphicsDrawImage($hGr_Backbuffer, $schatten,265,280)
_GDIPlus_GraphicsDrawImageRectRect($hGr_Backbuffer, $char, $i,16,15,15,250,250,50,50)
_GDIPlus_GraphicsDrawImage($hGr_Frontbuffer, $hBitmap_Backbuffer, 0, 0)
Sleep(20)
Next
EndIf
EndFunc
Func aAnima()
If $BEWEG_RICHTUNG = 1 Or $BEWEG_RICHTUNG = 3 Or $BEWEG_RICHTUNG = 4 Then
For $i = 128 To 192 Step 16
_GDIPlus_GraphicsClear($hGr_Backbuffer, 0xFFFFFFFF)
openMap()
_GDIPlus_GraphicsDrawImage($hGr_Backbuffer, $schatten,265,280)
_GDIPlus_GraphicsDrawImageRectRect($hGr_Backbuffer, $char, $i,32,15,15,250,250,50,50)
_GDIPlus_GraphicsDrawImage($hGr_Frontbuffer, $hBitmap_Backbuffer, 0, 0)
Sleep(20)
Next
EndIf
EndFunc
Func sAnima()
If $BEWEG_RICHTUNG = 1 Or $BEWEG_RICHTUNG = 2 Or $BEWEG_RICHTUNG = 4 Then
For $i = 128 To 192 Step 16
_GDIPlus_GraphicsClear($hGr_Backbuffer, 0xFFFFFFFF)
openMap()
_GDIPlus_GraphicsDrawImage($hGr_Backbuffer, $schatten,265,280)
_GDIPlus_GraphicsDrawImageRectRect($hGr_Backbuffer, $char, $i,48,15,15,250,250,50,50)
_GDIPlus_GraphicsDrawImage($hGr_Frontbuffer, $hBitmap_Backbuffer, 0, 0)
Sleep(20)
Next
EndIf
EndFunc
Func wAnimaD()
If $BEWEG_RICHTUNG = 2 Then
sAnima()
dAnima()
wAnima()
EndIf
If $BEWEG_RICHTUNG = 3 Then
dAnima()
wAnima()
EndIf
If $BEWEG_RICHTUNG = 4 Then
wAnima()
EndIf
EndFunc
Func aAnimaD()
If $BEWEG_RICHTUNG = 1 Then
aAnima()
EndIf
If $BEWEG_RICHTUNG = 3 Then
dAnima()
wAnima()
aAnima()
EndIf
If $BEWEG_RICHTUNG = 4 Then
wAnima()
aAnima()
EndIf
EndFunc
Func sAnimaD()
If $BEWEG_RICHTUNG = 1 Then
aAnima()
sAnima()
EndIf
If $BEWEG_RICHTUNG = 2 Then
sAnima()
EndIf
If $BEWEG_RICHTUNG = 4 Then
wAnima()
aAnima()
sAnima()
EndIf
EndFunc
Func dAnimaD()
If $BEWEG_RICHTUNG = 1 Then
aAnima()
sAnima()
dAnima()
EndIf
If $BEWEG_RICHTUNG = 2 Then
sAnima()
dAnima()
EndIf
If $BEWEG_RICHTUNG = 3 Then
dAnima()
EndIf
EndFunc
Func openmap()
_GDIPlus_GraphicsDrawImage($hBitmap_Backbuffer, $hGr_Map, 0, 0)
EndFunc
Func _openmap()
Local $aArray[1]
_FileReadToArray(@ScriptDir&"\maps\sclucht.map",$aArray)
For $x = 1 To $aArray[0] Step 1
$ss = StringSplit($aArray[$x]," ")
$q = StringSplit($ss[2],";")
If $ss[1] = "Gras" Then
_GDIPlus_GraphicsDrawImageRectRect($hGr_Map,$SPS,0,0,32,32,$q[1],$q[2],32,32)
EndIf
If $ss[1] = "Gravel" Then
_GDIPlus_GraphicsDrawImageRectRect($hGr_Map,$SPS,32,0,32,32,$q[1],$q[2],32,32)
EndIf
If $ss[1] = "Stein" Then
_GDIPlus_GraphicsDrawImageRectRect($hGr_Map,$SPS,64,0,32,32,$q[1],$q[2],32,32)
EndIf
If $ss[1] = "Wasser" Then
_GDIPlus_GraphicsDrawImageRectRect($hGr_Map,$SPS,96,0,32,32,$q[1],$q[2],32,32)
EndIf
If $ss[1] = "WasserRL" Then
_GDIPlus_GraphicsDrawImageRectRect($hGr_Map,$SPS,96,160,32,32,$q[1],$q[2],32,32)
EndIf
If $ss[1] = "WasserRR" Then
_GDIPlus_GraphicsDrawImageRectRect($hGr_Map,$SPS,96,192,32,32,$q[1],$q[2],32,32)
EndIf
If $ss[1] = "WasserRU" Then
_GDIPlus_GraphicsDrawImageRectRect($hGr_Map,$SPS,96,224,32,32,$q[1],$q[2],32,32)
EndIf
If $ss[1] = "WasserRO" Then
_GDIPlus_GraphicsDrawImageRectRect($hGr_Map,$SPS,96,256,32,32,$q[1],$q[2],32,32)
EndIf
If $ss[1] = "WasserELO" Then
_GDIPlus_GraphicsDrawImageRectRect($hGr_Map,$SPS,96,32,32,32,$q[1],$q[2],32,32)
EndIf
If $ss[1] = "WasserELU" Then
_GDIPlus_GraphicsDrawImageRectRect($hGr_Map,$SPS,96,64,32,32,$q[1],$q[2],32,32)
EndIf
If $ss[1] = "WasserERO" Then
_GDIPlus_GraphicsDrawImageRectRect($hGr_Map,$SPS,96,128,32,32,$q[1],$q[2],32,32)
EndIf
If $ss[1] = "WasserERU" Then
_GDIPlus_GraphicsDrawImageRectRect($hGr_Map,$SPS,96,96,32,32,$q[2],$q[2],32,32)
EndIf
Next
EndFunc
Über Hilfe würde ich mich sehr freuen !