Wert einer Variablen einer Strucktur im SpriteOutput?

Anfängerfragen zum Programmieren mit PureBasic.
Ghost
Beiträge: 141
Registriert: 10.04.2006 09:10

Wert einer Variablen einer Strucktur im SpriteOutput?

Beitrag von Ghost »

HI
Hab mal wieder eine Frage. :oops:
Wie kann man den Aktuellen Wert einer Varaiblen einer Strucktur ermitteln um ihn in einen spriteoutput zu dem Sprite dieser Strucktur anzeigenlassen?

also soweit kam ich schon

Code: Alles auswählen

ResetList(Jaeger())
While NextElement(Jaeger()) 
 StartDrawing(SpriteOutput(2))
   DrawingMode(1)
     Locate(0,10)
     FrontColor(255,0,0) 
     Box(0,13,Jaeger()\Armor, 2)
  StopDrawing ()
Wend 
Das Problem ist jetzt das er mir den Ausgangswert anzeigt statt den aktuellen Wert.
Zuletzt geändert von Ghost am 05.06.2006 11:47, insgesamt 2-mal geändert.
(nutze v. 3.3)
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Re: aktuellen Wert einer Strucktur ermitteln?

Beitrag von sen-me »

Ghost hat geschrieben:

Code: Alles auswählen

While NextElement(Jaeger()) 
 StartDrawing(SpriteOutput(2))
   DrawingMode(1)
     Locate(0,10)
     FrontColor(255,0,0) 
     Box(0,13,Jaeger()\Armor, 2)
  StopDrawing ()
Wend 
Ich würds mal so Probieren:

Code: Alles auswählen

ResetList(Jaeger())
ForEach Jaeger()
 StartDrawing(SpriteOutput(2))
   DrawingMode(1)
     Locate(0,10)
     FrontColor(255,0,0) 
     Box(0,13,Jaeger()\Armor, 2)
  StopDrawing()
Next
Bild
Ghost
Beiträge: 141
Registriert: 10.04.2006 09:10

Beitrag von Ghost »

Ops hab vergessen reset List mit abzukopieren.
ForEach nimt er leider nicht an liegt daran das ich noch V.3.3 nutze.
(nutze v. 3.3)
Christi
Beiträge: 154
Registriert: 31.08.2004 14:17
Kontaktdaten:

Beitrag von Christi »

Wenn man ForEach verwendet benötigt man kein ResetList().
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

Für PB 3.30 sollte es so funktionieren:

Code: Alles auswählen

StartDrawing(SpriteOutput(2)) 
  DrawingMode(1) 
  ResetList(Jaeger()) 
  While NextElement(Jaeger())
    Locate(0,10) 
    FrontColor(255,0,0) 
    Box(0,13,Jaeger()\Armor, 2) 
  Wend
StopDrawing() 
Habe dabei auch den ständigen Aufruf von Start/StopDrawing() aus der Schleife genommen. :wink:
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Ghost
Beiträge: 141
Registriert: 10.04.2006 09:10

Beitrag von Ghost »

hab mal die Zeile

Code: Alles auswählen

Box(0,13,Jaeger()\Armor, 2)
in

Code: Alles auswählen

Box(0,Jaeger()\Armor\3,2, 2)
und dann halt wie du (Andre) es gesagt hast.
also anspringen tut er schonmal aber hab noch 2 Probleme.
1. Die spriteoutputs weredn nicht gelöscht (also aus ein Punkt der sich langsam nach lingsbewegen soll wird ein Balken)

und 2. Also ich habe das Sprite mehrmals auf den Bildschirm und anstatt den Punkt nur auf dem betroffenen Sprite zu verschieben macht er dies auf alle Sprits der selben Strucktur.
(nutze v. 3.3)
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

Das war mir schon klar, hett ich dir auch gleich sagen könn...
Du musst dazwischen ClearScreen und FlipBuffers verwenden
Bild
Ghost
Beiträge: 141
Registriert: 10.04.2006 09:10

Beitrag von Ghost »

Reicht nicht einmal von repeet bis until ?
also falls ich
ClearScreen()
Start Drawing..
Flippbuffers mache
mache, dann läuft das Programm mit halber Geschwindigkeit[/code]
(nutze v. 3.3)
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

Weil StartDrawing sehr viel Ressourcen frisst..
Kannst du nicht ein Sprite am anfang erstellen wo du 1 mal was drauf zeichnest und dies dann immer verschiebst (Das Sprite)
Bild
Ghost
Beiträge: 141
Registriert: 10.04.2006 09:10

Beitrag von Ghost »

Wird Schlecht gehen.Ich sitze anb einen kleinen Spaceshooter und der ScrenOutput soll den Aktuellen zustand(Also zb. Lebenspunkte)des Gegners angegben.
Gut ich könte eine Skala mit auf den Sprite malen und dann ein neues Sprite zB. eine einfachér Punkt oder eine Einfache Linie die sich auf der Skala bewegt
aber das wäre Ziemlich umständlich und Kompliziert
(nutze v. 3.3)
Antworten