Problem bei Textausgabe

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
JG
Beiträge: 63
Registriert: 23.10.2004 17:08

Problem bei Textausgabe

Beitrag von JG »

Hallo,
Ich will ein kleines Game programmieren. In der linken oberen Ecke soll es die Lebensenergie anzeigen, aber es ist einfach nits da...
Könnt ihr mir bitte helfen??
Der Quelltext:
;Inizierung:
; Variablen:
Global lebens_energie.w
Global Munition_1.w
Global Munition_2.w

Global Maus_Knopf.w

; Sonstiges:
InitSprite()
InitKeyboard()
InitMouse()
OpenScreen(800,600,16,"Game.exe")

; Grafiken Laden:
LoadSprite(0,"Grafiken\zielkreuz_0.bmp",0)
TransparentSpriteColor(0,255,0,255)

; Variablen Werte zuweisen:
lebens_energie = 100

;-----------------------------------------------

Repeat
; Abfrage der Benutzer Eingaben
ExamineMouse() ; Neue Mausdaten einlesen
ExamineKeyboard() ; Neue Tastaturdaten einlesen
If MouseButton(1) And Maus_Knopf = 0
Maus_Knopf = 1
EndIf

If MouseButton(1) = 0
Maus_Knopf = 0
EndIf

StartDrawing(ScreenOutput())
DrawingMode(1)
Locate(0,0)
FrontColor(0,0,0)
DrawText("Energie:" + Str(lebens_energie))
StopDrawing()


ClearScreen(255,255,255)
DisplayTransparentSprite(0,MouseX()-15,MouseY()-15)
FlipBuffers()



Until KeyboardPushed(1)
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Hähä, solche Fehler hab ich auch schon hinbekommen. :D
Ist eigentlich ganz logisch, du lässt per DrawText() die Lebensenergie anzeigen, im nächsten Schritt löschst du aber das Bild wieder mit ClearScreen(). Dadurch wird es wieder gelöscht. Jetzt lässt du Fadenkreuz und Co. anzeigen und flippst den Buffer. Alles was du ändern muss ist, die Zeile ClearScreen() VOR das Startdrawing() zu setzen (Es geht auch dahinter, also nach FlipBuffers()). Aber niemals mittenrein, sonst fehlen ja einige Teile bis dahin, die dann ja gelöscht werden, so wie hier jetzt die Lebensenergie.

EDIT: Anstelle den Codetext als Zitat anzugeben, solltest du vielleicht

Code: Alles auswählen

 verwenden. ;)
JG
Beiträge: 63
Registriert: 23.10.2004 17:08

Danke

Beitrag von JG »

Danke.

PS: Achso des mit CODE merk ich mir <)


JG
JG
Beiträge: 63
Registriert: 23.10.2004 17:08

Noch was

Beitrag von JG »

Wenn Ich mit dem Fadenkreuz über "Energie: 100" fahr seh ich die Enegie nur teilweise. Irgenwie funktioniert das Transparent nicht... :|


JG
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Versuch mal die Transparente Farbe auf Schwarz zu ändern, das soll bei manchen Leuten geholfen haben.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Ich hab mir jetzt mal ein Sprite erstellt mit 255,0,255 als transparente Farbe und darauf ein Zielkreuz. Bei mir funktioniert alles so wie es soll. Vielleicht hast du die falschen Farben genommen für den Hintergrund? Schon ein Bit mit dem falschen Wert und es ist nicht mehr transparent. Am besten, wie Deeem sagte, mach den Hintergrund schwarz, dann kannst du da auch wenig falsch machen (zum testen mal). Dann als transparente Farbei 0,0,0 wählen, sollte dann gehen.
Wenn die Lebensenergie IMMER über dem Zielkreuz sein soll, musst du zuerst das Zielkreuz anzeigen lassen, danach erst die Lebensenergie. Also du musst die beiden Anzeige-Befehle nur vertauschen. Stell dir das vor wie ein Blatt papier, das was du zuerst malst, liegt unten. Dann etwas darüber und es ist dadrüber sichtbar. So ist es auch hier mit dem Bildschirm. Was zuletzt angezeigt wird, liegt oben. Was zuerst angezeigt wurde, liegt unten.
JG
Beiträge: 63
Registriert: 23.10.2004 17:08

Danke

Beitrag von JG »

Ok soweit geht es nur ich hab ein neues problem...
Des mit der Munition geht net ganz, oder besser gesagt mit der Maus.
Die Munition raßt wenn man auf die Maus drückt ganz schnell runter( Also auf deutsch sie wird weniger.)

Nochmal der neue code(diesmal mit CODE :D ):

Code: Alles auswählen

;Inizierung:
;  Variablen:
Global Munition.w

Global Maus_Knopf.w 

;   Sonstiges:
InitSprite()
InitKeyboard()
InitMouse()
OpenScreen(800,600,16,"Game.exe")

;   Grafiken Laden:
LoadSprite(0,"Grafiken\zielkreuz_0.bmp",0)
TransparentSpriteColor(0,255,255,255)

LoadSprite(1,"Grafiken\back.bmp",0)
TransparentSpriteColor(0,255,255,255)

;   Variablen Werte zuweisen:
Munition = 10


;-----------------------------------------------

Repeat
; Abfrage der Benutzer Eingaben
ExamineMouse()                              ; Neue Mausdaten einlesen
ExamineKeyboard()                           ; Neue Tastaturdaten einlesen
If MouseButton(1) And Maus_Knopf = 0
Maus_Knopf = 1 
EndIf
 
If MouseButton(1) = 0
Maus_Knopf = 0
EndIf

If Maus_Knopf = 1
Munition = Munition - 1
EndIf


ClearScreen(0,0,0)

DisplaySprite(1,0,0)

StartDrawing(ScreenOutput())
DrawingMode(1)
Locate(30,570)
FrontColor(0,0,0)
DrawText("Munition:" + Str(Munition))
StopDrawing() 



DisplayTransparentSprite(0,MouseX()-15,MouseY()-15)
FlipBuffers()



Until KeyboardPushed(1)
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Code: Alles auswählen

If MouseButton(1) And Maus_Knopf = 0 
Maus_Knopf = 1 
Munition = Munition - 1 
EndIf 
  
If MouseButton(1) = 0 
Maus_Knopf = 0 
EndIf 
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
FlixFlax
Beiträge: 10
Registriert: 10.09.2004 11:47
Wohnort: Dänemark

Beitrag von FlixFlax »

Change this:

If MouseButton(1) And Maus_Knopf = 0
Maus_Knopf = 1
EndIf

If MouseButton(1) = 0
Maus_Knopf = 0
EndIf

If Maus_Knopf = 1
Munition = Munition - 1
EndIf
--------------------------------
to this:

If MouseButton(1) And Maus_Knopf = 0
Maus_Knopf = 1
Munition = Munition - 1
EndIf

If MouseButton(1) = 0
Maus_Knopf = 0
EndIf

----------------------------------
:allright:
FlixFlax
Beiträge: 10
Registriert: 10.09.2004 11:47
Wohnort: Dänemark

Beitrag von FlixFlax »

ich bin zu langsam :cry:
Antworten