Seite 1 von 4

Einsteiger Schwierigkeiten...

Verfasst: 19.09.2008 23:05
von Panic401
Ich möchte ein 2D-Scrolling Game machen und möchte dazu erstmal ein Menü entwerfen in welchem ich den Titel in FOrm eines Sprites einfliegen lassen möchte.
Dazu hätte ich mal 2 Fragen:

1. Wie kann ich den einen Sprite bewegen?
2. Wie kann ich in einen Fullscreen-Programm einen Mauszeiger anzeigen?

Ich hoffe auf schnelle und gute antworten.
Danke

Verfasst: 19.09.2008 23:13
von STARGÅTE
Einen mauszeiger musst du erst mal selber "malen" und dann auch als Sprite Anzeigen.

DisplaySprite() besitzt ja einen x und y Parameter, diese mussen ja nicht immer festen Zahlen sein, sondern auch variablen.

Zum Mausanzeigen kannst du zB sowas machen:

Code: Alles auswählen

DisplaySprite(Sprite, MouseX(), MouseY())
natürlich mit den notwenigen vordefinitionen, welche du in beispielen findest.

Genauso kannst du auch andere Sprites Bewegen lassen.
indem du einfach eine Variablen einsetzt. und diese mit jedem Schleifen durchlauf um 1 erhöhst:

Code: Alles auswählen

Variable + 1
DisplaySprite(Sprite, Variable, 200)
Schau die einfach mal n paar Beispiele an, welche bei PB dabei sind

Verfasst: 19.09.2008 23:22
von Panic401
Danke aber wie kann ich die Anfangskoordinate des Sprites festlegen?

Verfasst: 19.09.2008 23:43
von TomS
Vor der Repeat-Schleife die Positionsvariablen definieren:

Code: Alles auswählen

spriteX=-100
spriteY=-200

Repeat

x+1
y+2

DisplaySprite(id,spriteX,spriteY)

;...


Verfasst: 20.09.2008 00:01
von Panic401
AAAAAHH!!! Ok cool danke^^

Ich habe heute erst angefangen zu programmieren.... deshalb brauche ich immer ein wenig hilfe :lol:


Aber der mauszeiger geht ned..... ich hab mit Enumeration einen Zeiger definirt, ihn geladen und will ihn anzeigen mitt dem code oben aber es klappt nicht... ich sehe ihn nicht.... weiß jemand woran das liegt???

Verfasst: 20.09.2008 00:03
von STARGÅTE
wie sehen den Fehler auch nicht :wink:

einfach mal bitte deinen Code (Ausschnitt) zeigen ...

Verfasst: 20.09.2008 00:43
von Link2Death
So.... hi nochmal... hier besteht *kurz* aufklärungsbedarf:

Ich bin eigentlich derjenige mit dem problem... aber mein kleiner bruder hat mein problem hier veröffentlicht^^

Also mein Code ist mommentan so:

Code: Alles auswählen

InitSprite()
InitMouse()

Enumeration
#Menu
#Cursor
#Start
#Laden
#Ende
#Musik
EndEnumeration

OpenScreen(800, 600, 32, "Gunner X")

UsePNGImageDecoder() 

LoadSprite(#Cursor, "Sprites\Menu\cursor.png")

Repeat

ExamineMouse()
x = MouseX()
y = MouseY()
MouseButton(#PB_MouseButton_Left)

FlipBuffers()
ClearScreen(RGB(0, 0, 0))

DisplaySprite(#Cursor, MouseX(), MouseY())

Until x > 550 And x < 800 And y > 400 And y < 600 And MouseButton(#PB_MouseButton_Left)

End
Das sind die für den mauszeiger relevanten zeilen.... ich hoffe jemand erkennt das problem^^

code-tags ergänzt - Kaeru fecit

Verfasst: 20.09.2008 10:09
von gnasen
starte das mal mit dem Debugger um zu schauen, ob er das Bild laden kann, ansonsten sollte das gehen.
Wenn du MouseX() und MouseY() schon zwischenspeicherst, dann darfst du diese auch nutzen ;)

Code: Alles auswählen

DisplaySprite(#Cursor, x, y)
Bei

Code: Alles auswählen

MouseButton(#PB_MouseButton_Left)
ähnliches. MouseButton() hat einen Rückgabewert, den du wie bei den Koordinaten x,y speichern kannst. Sonst bewirkt das nix

Verfasst: 20.09.2008 10:13
von Bisonte
Hast du den Pfad des Mauszeigerbildes überprüft ?

wenn ich einen absoluten pfad angebe z.B.: c:\cursor.png dann klappt dein Code.

Versuche doch eine Prüfung einzubauen, ob dein Sprite wirklich geladen wurde. (ist sowieso eleganter um Fehler auszuschliessen.)

In Form von

Code: Alles auswählen

If LoadSprite(#Cursor, "Sprites\Menu\cursor.png")
;ok
Else
Debug "Fehler Sprite nicht geladen"
End
EndIf
LoadSprite() gibt eine 0 zurück, wenn kein Sprite geladen werden konnte, z.B. wenn der Pfad falsch ist oder das Sprite das falsche Dateiformat hat (z.B. JPG anstatt PNG in deinem Fall)... wenn der Wert was anderes als 0 ist, ist das Sprite demzufolge geladen und fertig zur Benutzung.

Verfasst: 20.09.2008 11:48
von Link2Death
AH! Es funzt! Ich musste das direkt unter den MouseButton schreiben!

Jetzt hab ich aber das problem, das ich hinter meinem Mauszeiger ein Schwarzes Kästchen sehe, obwohl alles auser dem Zeiger im Bild transparent ist.... wie bekomme ich DAS weg?!?! (Sorry dass ich so viel fragen muss aber ich bin nunmal anfänger^^)