Seite 1 von 2

Problem bei Textausgabe

Verfasst: 23.10.2004 17:24
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)

Verfasst: 23.10.2004 17:31
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. ;)

Danke

Verfasst: 23.10.2004 18:12
von JG
Danke.

PS: Achso des mit CODE merk ich mir <)


JG

Noch was

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


JG

Verfasst: 23.10.2004 18:26
von Deeem2031
Versuch mal die Transparente Farbe auf Schwarz zu ändern, das soll bei manchen Leuten geholfen haben.

Verfasst: 23.10.2004 18:44
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.

Danke

Verfasst: 23.10.2004 20:34
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)

Verfasst: 23.10.2004 21:36
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 

Verfasst: 23.10.2004 21:42
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:

Verfasst: 23.10.2004 21:43
von FlixFlax
ich bin zu langsam :cry: