Einsteiger Schwierigkeiten...

Anfängerfragen zum Programmieren mit PureBasic.
Panic401
Beiträge: 3
Registriert: 19.09.2008 22:58

Einsteiger Schwierigkeiten...

Beitrag 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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Panic401
Beiträge: 3
Registriert: 19.09.2008 22:58

Beitrag von Panic401 »

Danke aber wie kann ich die Anfangskoordinate des Sprites festlegen?
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag 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)

;...

Panic401
Beiträge: 3
Registriert: 19.09.2008 22:58

Beitrag 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???
n00b on Tour!
Sry für die Fragen aber meine Jacke wird von hinten zu gemacht xDDDD
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

wie sehen den Fehler auch nicht :wink:

einfach mal bitte deinen Code (Ausschnitt) zeigen ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Link2Death

Beitrag 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
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Beitrag 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
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag 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.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Link2Death

Beitrag 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^^)
Antworten