Ich habe mir letzten Doodle jump angeschaut.(Wirklich klasse)
Das hat mich motiviert mal bisl mit GDI rumzuspielen.
Ich wolte eig. schon immer ein kleines rpg bauen.
Erstes Problem hierbei sind die Bilder. Diese gibt es meis nur als Tilesets.
Unter Java ist das auch gut so, da kan ich sagen subimage und x,x und erhalten den Ausschnit des Tilessets, sprich ein Tile.
Google hat mir bisher noch keine sinvolle antwort darauf geben können ob GDi bzw autoit sowas auch kan.
andere möglichkeit währ jedes Tile mit pain zu zerlegen -_-
Vielleicht kan mich ja jemand davor bewahren.
thx
/edit jeden Tag kommt bisl mehr dazu drum poste ich hier oben mal immer die aktuelle version
version 0.0.3
http://www.file-upload.net/download-2477073/co.7z.html
Spoiler anzeigen
v0.0.1.1 "inventar" geht mit "i" auf
Lebensleiste -> Background drückt sich durch
#include <GDIPlus.au3>
#include <Misc.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <timers.au3>
#include<Array.au3>
$Width = 480
$Height = 480
$tilesize=48
$richtung="e"
$xrichtung=0
$yrichtung=0
$x=250
$y=250
$map=1
$speed=3
$inventar1=-1
$inventar2=-1
$menu=-1
$gold=100
$hp=100
$mp=100
$GUI1 = GUICreate("Chosen one", $Width, $Height)
GUISetState(@SW_SHOW)
$dll=DllOpen("user32.dll")
[/autoit] [autoit][/autoit] [autoit]opt("guioneventmode", 1)
GUISetOnEvent($GUI_EVENT_CLOSE, "ende")
AutoItSetOption ("MouseCoordMode", 0)
TCPStartUp()
#cs
dim $attacke[13]
for $counter=0 to 12
$attacke[$counter]=@ScriptDir&"\bilder\attacke\attack" & $add & $counter & ".gif"
Next
#ce
$pBackground = @ScriptDir&"\map" & $map & ".jpg"
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$Graphic = _GDIPlus_GraphicsCreateFromHWND($GUI1)
$Bitmap = _GDIPlus_BitmapCreateFromGraphics($Width, $Height, $Graphic)
$Buffer = _GDIPlus_ImageGetGraphicsContext($Bitmap)
$Background=_GDIPlus_ImageLoadFromFile ($pBackground)
#region Load
;$Background = _GDIPlus_ImageLoadFromFile ($pBackground)
#endregion Load
; gdi wieder beenden = _GDIPlus_GraphicsDispose(_GDIPlus_GraphicsCreateFromHWND($GUI1))
_WinAPI_RedrawWindow($GUI1, "", "", $RDW_UPDATENOW + $RDW_FRAME)
_GDIPlus_GraphicsDrawImage ($Buffer, $Background, 0, 0)
draw_inventar()
_GDIPlus_GraphicsDrawImage($Buffer, _GDIPlus_ImageLoadFromFile(@ScriptDir&"\bilder\steht\steht e0000.bmp"), $x, $y)
_GDIPlus_GraphicsDrawImageRect($Graphic, $Bitmap, 0, 0, $Width, $Height)
;Sleep(10000)
while 1
;warten auf Eingabe laufen oder andere Aktion
[/autoit] [autoit][/autoit] [autoit];wen keine richtung gedrückt wird ist richtung =0 heist stillstand
[/autoit] [autoit][/autoit] [autoit];Inventar ein/ausschalten
If _IsPressed("49",$dll) Then
Do
Until Not _IsPressed("49",$dll)
_GDIPlus_GraphicsDrawImage ($Buffer, $Background, 0, 0)
$inventar1*=-1
draw_inventaronce()
EndIf
;menü ein/ausschalten
If _IsPressed("1B",$dll) Then
Do
Until Not _IsPressed("1B",$dll)
_GDIPlus_GraphicsDrawImage ($Buffer, $Background, 0, 0)
$menu*=-1
draw_inventar()
EndIf
If _IsPressed("31",$dll) Then ;angriff eins
[/autoit] [autoit][/autoit] [autoit]for $counter=0 to 12
if $counter<10 then
$add=0
else
$add=""
EndIf
_GDIPlus_GraphicsDrawImage ($Buffer, $Background, 0, 0)
_GDIPlus_GraphicsDrawImage($Buffer, _GDIPlus_ImageLoadFromFile(@ScriptDir&"\bilder\attack\attack " & $richtung & "00" & $add & $counter & ".bmp"), $x, $y)
draw_inventar()
Sleep(60)
_GDIPlus_GraphicsDrawImageRect($Graphic, $Bitmap, 0, 0, $Width, $Height)
Next
EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];laufen
If _IsPressed("25",$dll) or _IsPressed("26",$dll) or _IsPressed("27",$dll) or _IsPressed("28",$dll) then
If _IsPressed("25",$dll) Then $xrichtung =-1
[/autoit] [autoit][/autoit] [autoit]If _IsPressed("26",$dll) Then $yrichtung =-1
[/autoit] [autoit][/autoit] [autoit]If _IsPressed("27",$dll) Then $xrichtung =1
[/autoit] [autoit][/autoit] [autoit]If _IsPressed("28",$dll) Then $yrichtung =1
[/autoit] [autoit][/autoit] [autoit];himmelsrichtungen definieren
[/autoit] [autoit][/autoit] [autoit]if $xrichtung=1 and $yrichtung=-1 then $richtung="ne"
if $xrichtung=1 and $yrichtung=0 then $richtung="e"
if $xrichtung=1 and $yrichtung=1 then $richtung="se"
if $xrichtung=0 and $yrichtung=-1 then $richtung="n"
[/autoit] [autoit][/autoit] [autoit]if $xrichtung=0 and $yrichtung=1 then $richtung="s"
[/autoit] [autoit][/autoit] [autoit]if $xrichtung=-1 and $yrichtung=-1 then $richtung="nw"
if $xrichtung=-1 and $yrichtung=0 then $richtung="w"
if $xrichtung=-1 and $yrichtung=1 then $richtung="sw"
for $counter=0 to 7
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDrawImage ($Buffer, $Background, 0, 0)
_GDIPlus_GraphicsDrawImage($Buffer, _GDIPlus_ImageLoadFromFile(@ScriptDir&"\bilder\laufen\läuft " & $richtung & "000" & $counter & ".bmp"), $x, $y)
draw_inventar()
$x=$xrichtung*$speed+$x
$y=$yrichtung*$speed+$y
Sleep(60)
_GDIPlus_GraphicsDrawImageRect($Graphic, $Bitmap, 0, 0, $Width, $Height)
Next
EndIf
$xrichtung=0
$yrichtung=0
wend
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]func make_background()
Local $hBitmap1, $hBitmap2, $hImage1, $hImage2, $hGraphic, $width, $height
; Initialisiert (startet) Microsoft Windows GDI+
$counterx=1
$hImage1 = _GDIPlus_ImageLoadFromFile (@ScriptDir&"\bilder\background.bmp")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]for $countery=1 to 10 step 1
[/autoit] [autoit][/autoit] [autoit]$sur=IniRead(@ScriptDir & "\map.ini",$map,$counterx,"Grass,Grass,Grass,Grass,Grass,Grass,Grass,Grass,Grass,Grass")
$tile = StringSplit($sur, ",")
for $counterx=1 to 10 step 1
$himage2=_GDIPlus_ImageLoadFromFile (@ScriptDir&"\bilder\Umgebung\" & $tile[$counterx] & ".bmp")
$hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage1)
DrawInsert($hGraphic, $hImage2, $counterx*$tilesize-$tilesize, $countery*$tilesize-$tilesize, 00, $width, $height)
;_GDIPlus_GraphicsDrawImage ($Buffer, _GDIPlus_ImageLoadFromFile (@ScriptDir&"\bilder\Umgebung\" & $tile[$counterx] & ".bmp"), $counterx*$tilesize-$tilesize, $countery*$tilesize-$tilesize)
Next
Next
; Zeichnet ein Bild in ein anderes
[/autoit] [autoit][/autoit] [autoit]; Speichert das neue Bild
_GDIPlus_ImageSaveToFile($hImage1, @ScriptDir & "\GDIPlus_Image.jpg")
EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func DrawInsert($hGraphic, $hImage2, $iX, $iY, $nAngle, $iWidth, $iHeight, $iARGB = 0xFF000000, $nWidth = 1)
Local $hMatrix, $hPen2
; Rotationsmatrix
$hMatrix = _GDIPlus_MatrixCreate()
_GDIPlus_MatrixRotate($hMatrix, $nAngle, "False")
_GDIPlus_GraphicsSetTransform($hGraphic, $hMatrix)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage2, $iX, $iY)
[/autoit] [autoit][/autoit] [autoit]; Ermittelt Stift + Farbe
$hPen2 = _GDIPlus_PenCreate($iARGB, $nWidth)
; Zeichnet einen Rahmen um das eingefügte Bild
_GDIPlus_GraphicsDrawRect($hGraphic, $iX, $iY, $iWidth, $iHeight, $hPen2)
; Ressourcen freigeben
_GDIPlus_MatrixDispose($hMatrix)
_GDIPlus_PenDispose($hPen2)
Return 1
EndFunc ;==>DrawInsert
func draw_inventaronce()
_GDIPlus_GraphicsDrawImage($Buffer, _GDIPlus_ImageLoadFromFile(@ScriptDir & "\bilder\steht\steht " & $richtung & "0000.bmp"), $x, $y)
_GDIPlus_GraphicsDrawImage($Buffer, _GDIPlus_ImageLoadFromFile(@ScriptDir & "\bilder\Interface\Lebensleiste.gif"), 0, 10)
if $inventar1=1 then _GDIPlus_GraphicsDrawImage($Buffer, _GDIPlus_ImageLoadFromFile(@ScriptDir&"\bilder\Interface\inventar2.bmp"), 350, 100)
if $inventar2=1 then _GDIPlus_GraphicsDrawImage($Buffer, _GDIPlus_ImageLoadFromFile(@ScriptDir&"\bilder\Interface\inventar1.bmp"),350, 100)
if $menu=1 then _GDIPlus_GraphicsDrawImage($Buffer, _GDIPlus_ImageLoadFromFile(@ScriptDir&"\bilder\Interface\inventar1.bmp"),250, 100)
_GDIPlus_GraphicsDrawImageRect($Graphic, $Bitmap, 0, 0, $Width, $Height)
EndFunc
[/autoit] [autoit][/autoit] [autoit]func draw_inventar()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDrawImage($Buffer, _GDIPlus_ImageLoadFromFile(@ScriptDir & "\bilder\Interface\Lebensleiste.gif"), 0, 10)
if $inventar1=1 then _GDIPlus_GraphicsDrawImage($Buffer, _GDIPlus_ImageLoadFromFile(@ScriptDir&"\bilder\Interface\inventar2.bmp"), 350, 100)
if $inventar2=1 then _GDIPlus_GraphicsDrawImage($Buffer, _GDIPlus_ImageLoadFromFile(@ScriptDir&"\bilder\Interface\inventar1.bmp"),350, 100)
if $menu=1 then _GDIPlus_GraphicsDrawImage($Buffer, _GDIPlus_ImageLoadFromFile(@ScriptDir&"\bilder\Interface\inventar1.bmp"),250, 100)
_GDIPlus_GraphicsFillRect($Graphic, 2,12, 100, 12, _GDIPlus_BrushCreateSolid(0xFFFF0000))
_GDIPlus_GraphicsFillRect($Graphic, 2, 27, 100, 12, _GDIPlus_BrushCreateSolid(0xFF0000ff))
_GDIPlus_GraphicsDrawString($Buffer, $hp & "/" & $hp, 28, 11, "Comic Sans MS", 7)
_GDIPlus_GraphicsDrawString($Buffer, $mp & "/" & $mp, 28, 26, "Comic Sans MS", 7)
_GDIPlus_GraphicsDrawImageRect($Graphic, $Bitmap, 0, 0, $Width, $Height)
EndFunc
[/autoit]