Seite 1 von 1

Einfache Animation

Verfasst: 07.03.2005 12:34
von Green Snake
Hallo

habe eine einfache frage, die ich gerne beantwortet haben möchte:

ich habe zb ein bild von einem raumschiff `(2D)

jetz will ich, das das raumschiff auf dem vollbildmodus von rechts nach links quasi animiert wird.
ausserdim, sollte es, wenn es über den rechten bildschirmrand
(ich verwende 1024*768)
snimiert wurde, dass dann das raumschiff auf der linken bildschirmseite wieder herauskommt, und die animation wiederholt wird, bis ich
ESCAPE drücke.
dabei sollte das raumschiff auf der linken seite in einer zufallshöhe sein
DH. einmal ist das Y villeicht 500, dann 150 usw


ich hoffe ihr könnt mir helfen


gruss atomkern

Verfasst: 07.03.2005 23:09
von zigapeda
Hi

Der Code könnte vieleicht so aussehen

Code: Alles auswählen

InitSprite()
initKeyboard()
OpenScreen(1024,768,32,"Vollbild")
LoadSprite(0,"Pfad\Sprite.bmp",0)
Schiffy = Random(718)         ;768 - Spritehöhe
Schiffx = 1074                ;1024 + Spritebreite
Repeat
ExamineKeyboard()
ClearScreen(0,0,0)
If Schiffx < -50              ;SpriteBreite
  Schiffx = 1074              ;1024 + Spritebreite
  Schiffy = Random(718)       ;768 - Spritehöhe
Else
  Schiffx - 5                 ;Geschwindigkeit
EndIf
DisplayTransparentSprite(0,Schiffx,Schiffy)
FlipBuffers()
Until KeyboardPushed(#pb_key_escape)
musst hald ausprobieren. Ich weiß nicht ob das bei Version 3.3 Funktioniert.

Verfasst: 08.03.2005 15:29
von Kaeru Gaman
zur begriffsklärung

meinst du jetzt Bewegung oder Animation?

du schreibst zwar 'quasi animiert', aber eigentlich sprichst du von einer einfachen bewegung.

als animation bezeichnet man eher eine bewegung im sprite selber,
z.b. eine drehung des raumschiffs um die länsachse,
das wird normalerweise durch eine wechselweise darstellung
verschiedener sprites gelöst.

das prinzip der einfachen bewegung wirdst du immer brauchen.

der code von zigapeda ist da schon ein gutes beispiel.

es geht eben darum, für die spritekoordinaten variablen einzusetzen statt
absoluten zahlen, und diese variablen in den schleifendurchläufen zu verändern.

Anders Rum

Verfasst: 08.03.2005 19:13
von Green Snake
hallo

jetzt geht das bild ja von links nach rechts, was aber mus ich machen das es von rechts nach links geht?

habe schon diverse sachen probiert, jedoch ist das bild dann gar nicht mehr zu sehen

Verfasst: 08.03.2005 19:32
von zigapeda
Oh Sry hab garnicht mitgedacht:

Code: Alles auswählen

InitSprite()
initKeyboard()
OpenScreen(1024,768,32,"Vollbild")
LoadSprite(0,"Pfad\Sprite.bmp",0)
Schiffy = Random(718)                   ;768 - Spritehöhe
Schiffx = -50                                  ;0 - Spritebreite
Repeat
ExamineKeyboard()
ClearScreen(0,0,0)
If Schiffx < 1074                              ;1024 + Spritebreite
  Schiffx = -50                                 ;0 -  Spritebreite
  Schiffy = Random(718)                  ;768 - Spritehöhe
Else
  Schiffx + 5                                   ;Geschwindigkeit
EndIf
DisplayTransparentSprite(0,Schiffx,Schiffy)
FlipBuffers()
Until KeyboardPushed(#pb_key_escape)
Du musst hald die Bewegungsrichtung, die Startposition und die Position wenn es über den Bildschirmrand hinausgeht ändern außerdem musst du den eingang der Auswahl ändern.

Verfasst: 08.03.2005 19:40
von nco2k
anfänger hin oder her, dass ist simple mathematik... plus und minus. du könntest es wenigstens versuchen selber irgendwie zu machen.

Code: Alles auswählen

#ScrWidth = 1024
#ScrHeight = 768
#ScrDepth = 32

If InitSprite() = 0 Or InitKeyboard() = 0 Or OpenScreen(#ScrWidth, #ScrHeight, #ScrDepth, "") = 0 Or LoadSprite(0, "C:\test.bmp", 0) = 0
  End
EndIf

SprWidth = SpriteWidth(0)
SprHeight = SpriteHeight(0)

Repeat
  
  ClearScreen(0, 0, 0)
  
  If SprX = #ScrWidth + SprWidth
    SprX = 0 - SprWidth
    SprY = Random(#ScrHeight - SprHeight)
  Else
    SprX + 4
  EndIf
  
  DisplaySprite(0, SprX, SprY)
  
  FlipBuffers()
  
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape) : End
edit: arghs zigapeda jetzt hab ich so lang rumgetrödelt dass schon fast 10min. vergangen sind. :lol: das passiert wenn man nicht ganz so bei der sache ist und nebenher beschäftigt ist. ^^

c ya,
nco2k

Verfasst: 09.03.2005 12:14
von Kaeru Gaman
Green Snake hat geschrieben:jetzt geht das bild ja von links nach rechts, was aber mus ich machen das es von rechts nach links geht?

umgekehrt... oder....? :?

du musst dir erstmal grundsätzlich über das konzept von bildschirm-koordinaten klarwerden.

ausserdem solltest du verstehen, was ein screen ist.

leider ersehe ich aus deinen posts zwar, das du grundwissen benötigst,
aber ich kann nicht erkennen, was du schon weisst.

---------------------------------------------------------------------
nco2k hat geschrieben:anfänger hin oder her, dass ist simple mathematik... plus und minus. du könntest es wenigstens versuchen selber irgendwie zu machen.
Green Snake hat geschrieben:habe schon diverse sachen probiert, jedoch ist das bild dann gar nicht mehr zu sehen
er scheint es ja wohl mit + statt - ausprobiert zu haben, ohne allerdings
die startkoordinaten zu verändern.

ich denke, Green Snake braucht erstmal grundsätzliche erklärungen,
posten von unkommentierten codesnippets halte ich da für wenig sinnvoll.

@Green Snake:

beschreibe doch erstmal, was du schon weisst, und wie du dir die sache vorstellst,
damit ich weiss, was für infos du benötigst.

evtl. wäre ein chat hier auch angebrachter ;)

Verfasst: 12.03.2005 00:27
von Rubiko
green snake:
also wie kaeru schon sagte, falls du überhaupt kein grundwissen hast schau dir mal das an

http://www.purebasic.de/files/PB_Tutorium1.exe

das beschäftigt sich mit vielen grundlagen und da werden auch 2 spiele gemacht, beim 1 z.B gehts auch um koordinaten

PS: der autor macht auch einen fehler und globalisiert jede variable was aber nur für strukturen notwendig ist

aber schlimmeres auch nicht

Rubiko