beine bewegen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag von Rubiko »

nicht wirklich ums selbe... nein es ist noch nicht fertig.. wirste merken

Code: Alles auswählen

InitSprite()  ; Initialisiert die Sprite Umgebung, womit wir sprite-Befehle nutzen können
InitKeyboard() ; Das selbe nur initialisiert es die Tastatur, die wir nun auch verwenden können


playerX.l = 250
playerY.l = 200

kameraX.l = 5
kameraY.l = 5

TastaturObenRechts.l = 0

Enumeration
  ; Fenster
  #window_1 ; Fenster
  ; Sprites
  #Sprite_Mage01Anfang
  #Sprite_Mage01SchrittLinks
  #Sprite_Mage01SchrittRechts
  #Sprite_Mage02
  #Sprite_Player
  #Sprite_Player4
  #Sprite_Mage067
  #Sprite_Mage0532
  ; Umgebung
  
  #Sprite_Grass01
EndEnumeration 

; Mage 01
;schritt
SchrittMage01.l = 1  
SchrittMage02.l = 2 
AnimMageVonVorneSchritt.l = SchrittMage01


OpenWindow(#window_1,0,0,500,400,#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_BorderLess | #PB_Window_ScreenCentered, "Mage of Fear")
OpenWindowedScreen(WindowID(),0,0,500,400,0,0,0)

; Sprite Gecatche
CatchSprite(#Sprite_Mage01SchrittLinks, ?Sprite_MageVonVorneSchrittLinks)
CatchSprite(#Sprite_Mage01SchrittRechts, ?Sprite_MageVonVorneSchrittRechts)
CatchSprite(#Sprite_Grass01, ?Sprite_Grass01)


TransparentSpriteColor(#Sprite_Mage01SchrittLinks,255,0,255)
TransparentSpriteColor(#Sprite_Mage01SchrittRechts,255,0,255)
; Main
Repeat
ClearScreen(255,0,255)
ExamineKeyboard()

DisplaySprite(#Sprite_Grass01, 0-kameraX,0-kameraY)
DisplaySprite(#Sprite_Grass01, 50-kameraX,0-kameraY)
DisplaySprite(#Sprite_Grass01, 100-kameraX,0-kameraY)
DisplaySprite(#Sprite_Grass01, 150-kameraX,0-kameraY)
DisplaySprite(#Sprite_Grass01, 200-kameraX,0-kameraY)
DisplaySprite(#Sprite_Grass01, 250-kameraX,0-kameraY)
DisplaySprite(#Sprite_Grass01, 300-kameraX,0-kameraY)
DisplaySprite(#Sprite_Grass01, 350-kameraX,0-kameraY)
DisplaySprite(#Sprite_Grass01, 400-kameraX,0-kameraY)
DisplaySprite(#Sprite_Grass01, 450-kameraX,0-kameraY)
DisplaySprite(#Sprite_Grass01, 0-kameraX,50-kameraY)
DisplaySprite(#Sprite_Grass01, 50-kameraX,50-kameraY)
DisplaySprite(#Sprite_Grass01, 100-kameraX,50-kameraY)
DisplaySprite(#Sprite_Grass01, 150-kameraX,50-kameraY)
DisplaySprite(#Sprite_Grass01, 200-kameraX,50-kameraY)
DisplaySprite(#Sprite_Grass01, 250-kameraX,50-kameraY)
DisplaySprite(#Sprite_Grass01, 300-kameraX,50-kameraY)
DisplaySprite(#Sprite_Grass01, 350-kameraX,50-kameraY)
DisplaySprite(#Sprite_Grass01, 400-kameraX,50-kameraY)
DisplaySprite(#Sprite_Grass01, 450-kameraX,50-kameraY)
DisplaySprite(#Sprite_Grass01, 0-kameraX,100-kameraY)
DisplaySprite(#Sprite_Grass01, 50-kameraX,100-kameraY)
DisplaySprite(#Sprite_Grass01, 100-kameraX,100-kameraY)
DisplaySprite(#Sprite_Grass01, 150-kameraX,100-kameraY)
DisplaySprite(#Sprite_Grass01, 200-kameraX,100-kameraY)
DisplaySprite(#Sprite_Grass01, 250-kameraX,100-kameraY)
DisplaySprite(#Sprite_Grass01, 300-kameraX,100-kameraY)
DisplaySprite(#Sprite_Grass01, 350-kameraX,100-kameraY)
DisplaySprite(#Sprite_Grass01, 400-kameraX,100-kameraY)
DisplaySprite(#Sprite_Grass01, 450-kameraX,100-kameraY)
DisplaySprite(#Sprite_Grass01, 0-kameraX,150-kameraY)
DisplaySprite(#Sprite_Grass01, 50-kameraX,150-kameraY)
DisplaySprite(#Sprite_Grass01, 100-kameraX,150-kameraY)
DisplaySprite(#Sprite_Grass01, 150-kameraX,150-kameraY)
DisplaySprite(#Sprite_Grass01, 200-kameraX,150-kameraY)
DisplaySprite(#Sprite_Grass01, 250-kameraX,150-kameraY)
DisplaySprite(#Sprite_Grass01, 300-kameraX,150-kameraY)
DisplaySprite(#Sprite_Grass01, 350-kameraX,150-kameraY)
DisplaySprite(#Sprite_Grass01, 400-kameraX,150-kameraY)
DisplaySprite(#Sprite_Grass01, 450-kameraX,150-kameraY)
DisplaySprite(#Sprite_Grass01, 0-kameraX,200-kameraY)
DisplaySprite(#Sprite_Grass01, 50-kameraX,200-kameraY)
DisplaySprite(#Sprite_Grass01, 100-kameraX,200-kameraY)
DisplaySprite(#Sprite_Grass01, 150-kameraX,200-kameraY)
DisplaySprite(#Sprite_Grass01, 200-kameraX,200-kameraY)
DisplaySprite(#Sprite_Grass01, 250-kameraX,200-kameraY)
DisplaySprite(#Sprite_Grass01, 300-kameraX,200-kameraY)
DisplaySprite(#Sprite_Grass01, 350-kameraX,200-kameraY)
DisplaySprite(#Sprite_Grass01, 400-kameraX,200-kameraY)
DisplaySprite(#Sprite_Grass01, 450-kameraX,200-kameraY)
DisplaySprite(#Sprite_Grass01, 0-kameraX,250-kameraY)
DisplaySprite(#Sprite_Grass01, 50-kameraX,250-kameraY)
DisplaySprite(#Sprite_Grass01, 100-kameraX,250-kameraY)
DisplaySprite(#Sprite_Grass01, 150-kameraX,250-kameraY)
DisplaySprite(#Sprite_Grass01, 200-kameraX,250-kameraY)
DisplaySprite(#Sprite_Grass01, 250-kameraX,250-kameraY)
DisplaySprite(#Sprite_Grass01, 300-kameraX,250-kameraY)
DisplaySprite(#Sprite_Grass01, 350-kameraX,250-kameraY)
DisplaySprite(#Sprite_Grass01, 400-kameraX,250-kameraY)
DisplaySprite(#Sprite_Grass01, 450-kameraX,250-kameraY)
DisplaySprite(#Sprite_Grass01, 0-kameraX,300-kameraY)
DisplaySprite(#Sprite_Grass01, 50-kameraX,300-kameraY)
DisplaySprite(#Sprite_Grass01, 100-kameraX,300-kameraY)
DisplaySprite(#Sprite_Grass01, 150-kameraX,300-kameraY)
DisplaySprite(#Sprite_Grass01, 200-kameraX,300-kameraY)
DisplaySprite(#Sprite_Grass01, 250-kameraX,300-kameraY)
DisplaySprite(#Sprite_Grass01, 300-kameraX,300-kameraY)
DisplaySprite(#Sprite_Grass01, 350-kameraX,300-kameraY)
DisplaySprite(#Sprite_Grass01, 400-kameraX,300-kameraY)
DisplaySprite(#Sprite_Grass01, 450-kameraX,300-kameraY)
DisplaySprite(#Sprite_Grass01, 0-kameraX,350-kameraY)
DisplaySprite(#Sprite_Grass01, 50-kameraX,350-kameraY)
DisplaySprite(#Sprite_Grass01, 100-kameraX,350-kameraY)
DisplaySprite(#Sprite_Grass01, 150-kameraX,350-kameraY)
DisplaySprite(#Sprite_Grass01, 200-kameraX,350-kameraY)
DisplaySprite(#Sprite_Grass01, 250-kameraX,350-kameraY)
DisplaySprite(#Sprite_Grass01, 300-kameraX,350-kameraY)
DisplaySprite(#Sprite_Grass01, 350-kameraX,350-kameraY)
DisplaySprite(#Sprite_Grass01, 400-kameraX,350-kameraY)
DisplaySprite(#Sprite_Grass01, 450-kameraX,350-kameraY)


If KeyboardPushed(#PB_Key_Right)
  playerX + 1
  kameraX + 2
EndIf
If KeyboardPushed(#PB_Key_Up)
  playerY - 1
  kameraY - 2
EndIf
If KeyboardPushed(#PB_Key_Down)
  AnimMageVonVorneSchritt + 1
  If AnimMageVonVorneSchritt  > SchrittMage02
    AnimMageVonVorneSchritt = SchrittMage01
  EndIf
  DisplayTransparentSprite(AnimMageVonVorneSchritt,playerX,playerY)
  playerY + 1
  kameraY + 2 
EndIf
If KeyboardPushed(#PB_Key_Left)
  playerX - 1
  kameraX - 2
EndIf

FlipBuffers()

Until KeyboardPushed(#PB_Key_Escape)



; Sprite Sprungmarken

Sprite_MageVonVorneSchrittLinks: IncludeBinary "GFX\Mage01\MageVonVorneSchritt1.bmp"         
Sprite_MageVonVorneSchrittRechts: IncludeBinary "GFX\Mage01\MageVonVorneSchritt2.bmp"
Sprite_Grass01: IncludeBinary "GFX\GrassTile01.bmp"
bitte nichts über die enumeration sagen.. die sind nur "reserviert" :P

[offtopic]
da frag ich gleich: wenn ich mit escape beende "xxx hat einen fehler festegestellt..."
Zuletzt geändert von Rubiko am 06.04.2005 15:24, insgesamt 1-mal geändert.
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Benutzeravatar
MLK
Beiträge: 267
Registriert: 01.11.2004 13:17
Wohnort: Hamburg

Beitrag von MLK »

hmm .. warum bist du so unfaul und schreibst nicht einfach:

Code: Alles auswählen

For y = 0 To 350 Step 50
  For x = 0 To 450 Step 50
    DisplaySprite(#Sprite_Grass01, x-kameraX, y-kameraY)
  Next x
Next y
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag von Rubiko »

unfaul... sorry LOL^^
weil ich den befehl nicht kannte :(

EDIT: sorry kaeru... wodurch merkt der dann eigentlich welche sprites er verwenden soll? also der compiler...
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ermn.. hu?

wie meinst du deine frage?

der Compiler verwendet keine sprites.

zur laufzeit des progs wird eines der vorher geladenen sprites angezeigt.

btw: wo ist denn bei dir ne animation drin? ich seh da gar nix...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag von Rubiko »

sorry is der ältere.. ich editte
wo wird klar gemacht welche sprites in der ani verwendet werden?
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

also:

dein kernproblem: du verbuchselst ne menge werte.

deine enum macht folgendes:

Code: Alles auswählen

1 ->  #Sprite_Mage01Anfang 
2 ->  #Sprite_Mage01SchrittLinks 
3 ->  #Sprite_Mage01SchrittRechts 
4 ->  #Sprite_Mage02 
catchen tust du:

Code: Alles auswählen

CatchSprite(#Sprite_Mage01SchrittLinks, ?Sprite_MageVonVorneSchrittLinks) 
CatchSprite(#Sprite_Mage01SchrittRechts, ?Sprite_MageVonVorneSchrittRechts)
...also die spritenummern 2 und 3

und noch das Gras mit der nummer 9

andere sprites holst du nicht, kannst du also auch nicht anzeigen.

welche sprites in der anim verwendet werden, musst du selbst festlegen.

du tust das mit:

Code: Alles auswählen

SchrittMage01.l = 1  
SchrittMage02.l = 2 
AnimMageVonVorneSchritt.l = SchrittMage01 
wenn du jetzt die down-taste drückst,
wird AnimMageVonVorneSchritt um eins erhöht, wird also 2,
du zeigst Sprite 2 an, das geht.

wenn du nochmal drückst, wird AMVVS wieder um eins erhöht, ist damit größer als 2,
und wird auf 1 zurückgesetzt.
dann versuchst du, Sprite 1 anzuzeigen, was du ja garnicht geladen hast,
und deshalb steigt er aus.

außerdem würde ich die Anzeige des sprites ausserhalb der tastaturabfrage machen...
innerhalb nur die festlegung der aktuell anzuzeigenden spritenummer...

wenn du die spritenummern so lassen willst, musst du deine anim-grenzen ändern:

Code: Alles auswählen

SchrittMage01.l = #Sprite_Mage01SchrittLinks  
SchrittMage02.l = #Sprite_Mage01SchrittRechts 
also 2 und 3 statt 1 und 2

...ich persönlich verwende Enum garnicht, aber das ist geschmackssache...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag von Rubiko »

gut. schön das ich das versteh....
jetzt bekomm ich keine meldung mehr... aber macht sich noch jemand die zeit ellapsedtime näher zu erklären? da die ani ja zu schnell läuft...
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

schreib vor deine Hauptschleife:

Code: Alles auswählen

msPerFrame.l = 20
ActTimer = ElapsedMillisesonds() + msPerFrame
und in die Hauptschleife, z.b. direkt vor FlipBuffers:

Code: Alles auswählen

Repeat:Delay(1):Until ElapsedMillisesonds() > ActTimer
ActTimer + msPerFrame
...ich red jetzt mal keinen roman, frag nach, wenn was unklar ist ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag von Rubiko »

hm nein außer das du elapsedMillisesonds statt milliseconds geschrieben hast....

trotzdem wenns eh gleichn neuer post is frag ich mal wegen nen editor problem

wenn man doch in einen text geht z.b kamra und man hat das 'a' vergessen... geh ich rein gib 'a' ein und es rückt nicht ein, schreibt also das a direkt auf das 'r'.
kann man das nicht verhindern? ich kopier immer leerzeichen... stört wirklich... das ganze is immer nur aufeinmal... und hört nicht auf bis ich neustarte
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

arbeitest du mit dem standard-edi?

drück mal die "Einfg"-Taste...

leider wird nicht angezeigt, ob er auf Einfügen oder Überschreiben steht,
hat mich auch schon oft geärgert...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten