Hey ich hab mir das spiel Doodle Jump angeguckt und finde es einfach super. mich würde jetzt aber interessieren wie ihr den hintergrund erstellt habt ohne rand (wenn man die bilder nicht öffnen lässt ist da nur dieser weisse kasten das meine ich)
danke im vorraus
BadBunny
Bewegen eines Hindernisses in GDI+
-
- [ offen ]
-
BadBunny -
7. Juni 2010 um 14:23 -
Geschlossen -
Erledigt
-
-
[autoit]
[/autoit]
#include <WindowsConstants.au3>
GuiCreate("Titel",width,height,x,y,$WS_POPUP) -
ah okay und dann dadrunter GUISetState(@SW_SHOW)
danke
und wie lässt man bestimmte bilder verschwinden nach einer bestimmten zeit und / oder ein bild erscheinen was vorher noch nicht da war? -
Lern Gdi+ (Zum 5ten mal)
mfg Ubuntu
-
Lern Gdi+ (Zum 5ten mal)
mfg Ubuntu
Er meinte doch nur die GUI, nicht das Bild -
ubuntu wie soll ich GDI+ denn lernen!!!???<br>Ich lern das in dem ich das ausprobiere.<br>
-
Schau dir in der Hilfedatei mal die Abteilung GUI an.
[autoit]
Um ein Bild zu zeichnen verwendest du:GUICtrlSetImage ( controlID, filename [, iconname [, icontype]] )
[/autoit] -
ja ich hab nen script hier :
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
HotKeySet ("b","beenden")
#include <GuiConstants.au3>
#include <WindowsConstants.au3>
#include <GdiPlus.au3>;das include
#include <Misc.au3>
$Gui = GuiCreate("Titel",1365,767,0,0,$WS_POPUP)
GUISetState(@SW_SHOW)
Func beenden ()
Exit
EndFuncOnAutoItExitRegister("_end")
[/autoit] [autoit][/autoit] [autoit]$x = 0;x und y deklarieren
[/autoit] [autoit][/autoit] [autoit]
$y = 0$x1 = 300
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$y1 = 300
_GDIPlus_Startup() ;Gdi starten
$weiss = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\weiss2.png")
$figur = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\figur.png")
$hinderniss = _GDIPlus_ImageLoadFromFile (@ScriptDir & "\.png")
$ziel = _GDIPlus_ImageLoadFromFile (@ScriptDir & "\ziel.png")
$height = _GDIPlus_ImageGetHeight($figur)
$width = _GDIPlus_ImageGetWidth($figur)
$verhaelnis = $height / $width
$graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
$bitmap = _GDIPlus_BitmapCreateFromGraphics(1365, 767, $graphic)
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
$buffer1 = _GDIPlus_ImageGetGraphicsContext($bitmap)While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Select
Case _IsPressed(25) and not $x <= 0 ; nach links
$x -= 20
Case _IsPressed(26) and not $y <= 0; nach oben
$y -= 20
Case _IsPressed(27) and $x <= 1265 ; nach rechts
$x += 20
Case _isPressed(28) and $y <= 667 ; nach unten
$y += 20
EndSelect
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($buffer,$weiss,0, 0, 1365, 766)
_GDIPlus_GraphicsDrawImageRect($buffer,$hinderniss,$x1, $y1, 100, 100)
_GDIPlus_GraphicsDrawImageRect ($buffer, $ziel, 1268, 670, 100,100 )
_GDIPlus_GraphicsDrawImageRect($buffer,$figur,$x,$y,100, 100 * $verhaelnis)
_GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)If $x >= 1268 and $x <= 1368 and $y >= 670 and $y <=770 Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
MsgBox (0,"Winn","Du hast gewonnen.")
Exit
EndIfWEnd
[/autoit] [autoit][/autoit] [autoit][/autoit]
Func _end ();die Exit funktion
_GDIPlus_GraphicsDispose($graphic);Grafik Objekt freigeben
_GDIPlus_GraphicsDispose($buffer)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_ImageDispose ($hinderniss)
_GDIPlus_ImageDispose ($weiss)
_GDIPlus_ImageDispose($figur);Bild Objekt 1 freigeben
_GDIPlus_ImageDispose($ziel);Bild Objekt 2 freigeben
_GDIPlus_Shutdown();Ressourcen freigeben
Sleep (10)
EndFuncSo geht das auch aber wie mach ich jetzt z.B. das das hinderniss sich bewegt oder das bestimmte sachen kommen / gehen???
-
Er meinte doch nur die GUI, nicht das Bild
Er hat aber Bild geschrieben:
und wie lässt man bestimmte bilder verschwinden nach einer bestimmten zeit und / oder ein bild erscheinen was vorher noch nicht da war?
ubuntu wie soll ich GDI+ denn lernen!!!???
Es gibt genügend Tutorials, und außerdem macht Ubuntu gerade auch eines KLICK
//Edit:
ZitatSo geht das auch aber wie mach ich jetzt z.B. das das hinderniss sich bewegt oder das bestimmte sachen kommen / gehen???
Das geht von den Berechnungen her genau so, wie deine _IsPressed() Abfragen.
-
ich hab das schon probiert, bin aber mal wieder zu doof dafür... wenn du dir den script mal genau anguckst wirst du sehen das der sehr dem aus dem tutoriel ähnelt , weil es meine vorlage war.
[autoit]
könntest du denn pls ein kleines
[/autoit]
select
case $x1 = 300
$x1 += 10
endselect
oder so machen und das der dann z.b. bei 390 wieder zurück geht? bitte bekomme das nicht hin... -
@bad bunny:
Ok ich nehm das von oben zurück, du scheinst dich wirklich zu bemühen (hoffe ich zumindest) *nie den glauben an das gute im menschen aufgeben*mfg Ubuntu
-
danke
[autoit][/autoit][autoit][/autoit][autoit]
ich hatte da sowas stehen wieselect
[/autoit]
case $x1 = 300 or $x1 >= 300 and $y1 = 300
$x1 += 10
case $x1 = 400
$y1 -= 1
case $x1 =400 or $x1 >= 400 and $y1 = 299
$x1 -= 10
case $x1 = 300 and $y1 = 299
$y1 += 1
endselectdas ist alles noch sehr unsicher...
-
Zitat[autoit]Alles anzeigen
[/autoit]
Select
Case _IsPressed(25) and not $x <= 0 ; nach links
$x -= 20
Case _IsPressed(26) and not $y <= 0; nach oben
$y -= 20
Case _IsPressed(27) and $x <= 1265 ; nach rechts
$x += 20
Case _isPressed(28) and $y <= 667 ; nach unten
$y += 20
EndSelectDie select-case Methode bewirkt, dass du deine Figur nur nach rechts, links, oben oder unten bewegen kannst, nicht aber diagonal.
[autoit]
Wenn die Figur auch diagonal bewegt werden soll, dann solltest du s so machen:
[/autoit]
If _IsPressed(25) and not $x <= 0 then $x -= 20 ; nach links
If _IsPressed(26) and not $y <= 0 then $y -= 20; nach oben
If _IsPressed(27) and $x <= 1265 then $x += 20; nach rechts
If _isPressed(28) and $y <= 667 then $y += 20 ; nach unten -
oder so dann bleibt das hinderniss aber stehen... :
[autoit]
[/autoit]
Select
case $x1 = 300 or $x1 >= 300 and $x1 <= 401 and $y1 = 300
$x1 += 10
case $x1 = 400
$y1 -= 1
case $x1 =400 or $x1 >= 400 and $y1 = 299
$x1 -= 10
case $x1 = 300 and $y1 = 299
$y1 += 1
Endselect
Bitte sagen wie ichs machen muss.