Seite 1 von 3

Schwarzer Bildschirm!

Verfasst: 02.01.2005 15:28
von Janiboy
Hi Leute,
ich bin neu hier und muss euch gleich mal ein Problem schildern.
Vor einiger Zeit hab ich es (mit hilfe dieses forums) endlich geschafft mal ne sprite zu laden und zu bewegen. Doch plötzlich zeigt der nur noch schwarzen Bildschirm! Was tun? SourceCode lautet:

Code: Alles auswählen

If InitSprite()=0    
EndIf 
If InitKeyboard()=0
EndIf
If InitSprite3D()=0
EndIf 
If InitMouse()=0
EndIf  

If OpenScreen(640, 480, 16, "Mein Spiel")=0 
EndIf 


If LoadSprite(1, "Jan1.bmp" ,0)=0 
 
  x = 4
  y = 363

EndIf 

Repeat 
  If IsScreenActive() 
  
   FlipBuffers()
   
   DisplaySprite(1, x, y)
  
   ClearScreen(0,0,0)
   
   ExamineKeyboard()  
  
   If KeyboardPushed(#PB_Key_Left)
     x-1
   EndIf 
  
   If KeyboardPushed(#PB_Key_Right)
     x+1
   EndIf 
    
   If KeyboardPushed(#PB_Key_F5)
     x+13
   EndIf
   
   If KeyboardPushed(#PB_Key_F6)
     y-13 
     x+13
   EndIf
   
   If KeyboardPushed(#PB_Key_F7)
     RotateSprite3D(1, 180, 0)
   EndIf   
  
 EndIf 
Until KeyboardPushed(#PB_KEY_ESCAPE)
Edit by NicTheQuick: Code-Tags gesetzt

Verfasst: 02.01.2005 15:33
von PMV
Ganz einfach ...

Code: Alles auswählen

FlipBuffers() 

DisplaySprite(1, x, y) 

ClearScreen(0,0,0)
^^Erst zeigste den Bildschirm, dann zeichneste das Sprite und dann löschst es wieder, dann zeigst den nun schwarzen bildschirm, malst ein Sprite, löschst des wieder und zeigst wieder ein schwarzen Bildschirm :wink:

So was wird eigentlich so gemacht:

Code: Alles auswählen

ClearScreen(0, 0, 0) ;erst Bildschirm löschen
DisplaySprite(1, X, Y) ;dann Sprite zeichnen
FlipBuffers() ;und als letztes die Buffers weckseln
Und wenn man schon Abfragt, ob etwas klappt oder nicht, sollte man im Falle wenn etwas schief geht, dies auch Ausgeben und das Programm beenden, damit es zu keinen unerklärlichen Fehler kommt.
Also z.B.

Code: Alles auswählen

If LoadSprite(1, "Jan1.bmp" ,0)=0 


x = 4 
y = 363 

EndIf
Wenn LoadSprite nicht klappt, dann setzte die Anfangskoordinaten auf ... etwas seltzam find ich :wink:

Code: Alles auswählen

If LoadSprite(1, "Jan1.bmp", 0) = 0 : MessageRequester("Error", "Sprite ''Jan1.bmp'' konnt nicht geladen werden.") : End : EndIf
x = 4 
y = 363 
So was in der Art müsste da hin ...
Und die Koordinaten setzten, wenn das Laden nicht klappt ist etwas seltzam :wink: , die setzt man normal, wenn alles klappt :D

MFG PMV

Verfasst: 02.01.2005 16:07
von 125
Das gehört aber nicht in diesen Forenbereich oder ? 8)

Verfasst: 02.01.2005 16:16
von redacid
richtig, deshalb habe ich es mal in das richtige Unterforum verschoben.

Verfasst: 02.01.2005 18:10
von Janiboy
Oh, sorry. Wie gesagt bin neu, wird nicht mehr vorkommen. Danke für die Hilfe, doch ich hab schon wieder ne Frage ;): Wie bekomm ich das weiße (also alles, was nicht zur Spielfigur gehört) weg? Wie lautet der Befehl und wo muss er hin?

Verfasst: 02.01.2005 18:19
von Franky
1.)Transparentspritecolor(1,255,255,255)
2.)Statt displaysprite Displaytransparentsprite


BTW fänd ich´s irgendwie Praktischer, wenn man farbbereiche angeben könnte, jpeg verfälscht ja etwas,sodass man ränder sieht, so könnte man es dann nutzen

Verfasst: 02.01.2005 18:20
von PMV
Jetzt werden wir aber wat ganz faul :wink:

Drück mal im PureBasic Editor auf F1 ... da sollt sich nen Fenster öffnen, wo die Hilfe angezeigt wird ... im zweifels falle die gesamte Hilfe lesen, ist zudem ziemlich Interezant was da so alles steht ... und so findeste auch mit sicherheit immer das, was du brauchst :D

Naja ... also das was du suchst sollte sein

Code: Alles auswählen

TransparentSpritecolor(1, 255, 255, 255)
Und wo der hinkommt, der wird normalerweise immer direkt aufgerufen, nach dem das entsprechende Sprite geladen wurde ... aber auf jeden fall bevor das Sprite angezeigt werden soll.

Und alleine wird das so nicht klappen, da
DisplaySprite() das Sprite anzeigt und die transparente Farbe ignoriert, das heißt, hier muss der Befehl DisplayTransparentSprite() genutzt werden. In kurzform bedeutet des, das du die Zeile:

Code: Alles auswählen

DisplaySprite(1, x, y)
austaschen musst mit der Zeile:

Code: Alles auswählen

DisplayTransparentSprite(1, x, y)
So, wenn ich jetzt nicht ausversehen nen Tippfehler da rein gemacht hab sollt es dann wie gewollt klappen.
Und noch nen Tipp wegen der Hilfe, die ganzen Sprite und Screen Befehle stehen wenn du auf F1 drückst in der rechten Spalte unter 2D Libraries, dort auf "Sprite & Screen" klicken. :wink:

MFG PMV

Verfasst: 02.01.2005 18:23
von Franky
Das glaub ich nicht, PMV

Ich lese aus

Code: Alles auswählen

If LoadSprite(1, "Jan1.bmp" ,0)=0
 
  x = 4
  y = 363

EndIf

, dass er die Spielerposition setzen will, wenn das Sprite geladen wurde.

Das wäre dann aber falsch, die werte werden nur gesetzt, wenn die Figur nicht geladen wurde

Das müsste so:

Code: Alles auswählen

If LoadSprite(1, "Jan1.bmp" ,0)
 
  x = 4
  y = 363

EndIf

Verfasst: 02.01.2005 18:25
von Janiboy
Danke für eure Hilfe.
Übrigens: Die F1-Hilfe ist zwar gut aber ihr hier im Forum könnts einfach besser erklären und an Beispielen verdeutlichen (Kompliment ;))

Verfasst: 02.01.2005 18:30
von PMV
lol Franky -_-

^^ich weis doch was da stand ... und ich weis nicht was er wollte ... ich hab nur das gesehen, was da stand :wink:

^^Und ob er das nach meiner "Methode" macht, also das Programm ganz abbricht, wenn es nicht funzt ... oder ob er es weiter laufen lässt und das setzten der Koordinaten nur macht, wenn es klappt ... da bei seiner Roution das etwas Schwarsinnig ist, das Programm weiter laufen zu lassen, hab ich ihm dazu geraten ... wie er es nun macht, ist ihm überlassen :wink:

Janiboy, es hat aber nicht immer wer zeit dafür ... und solche Fragen könnt eigentlich jeder Anfänger stellen ... und das zu jedem Befehl ... dann wäre das Forum bald voll ... und öhm die Hilfe nutzlos :wink: ... meistens werden solche Anfängerfragen pro User 1 - 2 mal beantwortet ... oder direkt darauf aufmerksam gemacht, das er bitte die Hilfe lesen solle ... weil stell dir mal vor, du müsstest jeden Tag die selbe Fragen beantworten ... irgend wann hätteste da auch keine Lust mehr zu :D
Vorallem dann nicht, wenn du wüsstest, das diejenigen sich eigentlich selber darüber Informieren könnten, in dem Sie einfach mal nen bischen lesen würden <) ...

MFG PMV