Warum brauche ich 2 Schleifen und nicht eine

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Baschdi

Betreff: Warum brauche ich 2 Schleifen und nicht eine

BeitragSa, Feb 02, 2008 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich habe ein runden basierendes strategie Spiel gemacht. Um ein Feld auf der Map zu belegen, also unzugänglich zu machen für andere Einheiten benutze ich folgende Zeile

Code: [AUSKLAPPEN]

For u.unit=Each unit
[...]
   ;Blockieren
   stat(u\xx/tile,u\yy/tile)=u\team
[...]
Next


Damit bekommt das Feld die Variable des Teammitglied, welches auf dem Feld steht. Allerdings reicht diese Zeile hier nicht aus um das Feld zu belgen, ich brauche noch eine weitere, welche meine FPS so runetrhaut, dass ich das ändern will und muss:


Code: [AUSKLAPPEN]


;Karte

For x=0 To mapX
For y=0 To mapY

   DrawImage tileset,x*tile-xback,y*tile-yback,map(x,y)
      
;##########################################
      For u.unit=Each unit
         stat(u\xx/tile,u\yy/tile)=u\team
      Next   
;##########################################

Next
Next



Wie man sieht sind das 3 Schleifen inneinander und damit ist völlig klar warum die fps runtergezogen wird , wenn man mehrere Einheiten hat. Aber warum? Normalerweise reicht es wenn ich eine Variable in der ersten Schleife ändere, aber in diesem Fall nicht. Wie kann man das umgehen, oder sogar beheben?

dank im voraus
mfg basti
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden
 

Matthias

BeitragSa, Feb 02, 2008 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Mh. Ziemlich undurchsichtig.

Was willst du denn überhaupt erreichen.

Warum brauchst du denn 3Schleifen. Die Doppelschleife ist dazu da das Map anzuzeigen und die Andere um deine Units Upzudaten.

Was heist den Tile ist das die TileGröße?
 

Dreamora

BeitragSa, Feb 02, 2008 14:38
Antworten mit Zitat
Benutzer-Profile anzeigen
die unit schleife hat da effektiv nichts drin zu suchen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Baschdi

BeitragSa, Feb 02, 2008 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Eben das ist mein Problem, wenn ich die Schleife da nciht reinpacken würde, würde die variable stat(u\xx/tile,u\yy/tile) nicht verändert werden.
Also die Variable stat zeigt an welchen STATus das feld hat.(0=frei;1-n=belegt durch team n; 9=belegt durch wasser z.b.)
Um jedes Feld, auf dem eine einheit steht mit der Variable seines teams zu versehen muss man also das schreiben:

Code: [AUSKLAPPEN]

For u.unit=Each unit
[...]
   ;Blockieren
   stat(u\xx/tile,u\yy/tile)=u\team
[...]
Next


aber dann funktioniert das nicht, also das feld hat immernoch die variable 0 und nicht die variable n für sien team n (also wenn team=1 dann n=1 dann stat=1)

und das verstehe ich nicht, weil es nicht so sein dürfte.........

mfg
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden
 

Dreamora

BeitragSa, Feb 02, 2008 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
dann würd ich sagen, sind deine xx, yy auf den units einfach immer 0 oder so oder du überschreibst sie mit irgendwas wieder
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Feb 02, 2008 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Du machst auch nichts mit der Schleife die in Abhängigkeit deiner beiden anderen Schleifen zu tun haben, denn die Variablen x und y verwendest du nicht in deiner:

Code: [AUSKLAPPEN]
      For u.unit=Each unit
         stat(u\xx/tile,u\yy/tile)=u\team
      Next


Von daher kann diese Schleife auch genauso gut ausserhalb deiner doppelt verschachtelten Map-Zeichenroutine angewendet werden und wird somit nicht unnötiger weise mapx*mapy oft berechnet.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Baschdi

BeitragSa, Feb 02, 2008 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
ja das weiß ich ja, und deshalb frag ich ja nach....
ihr habt also noch nie so ein Problem gehabt, also muss ich einfach ein bisschen rumprobieren...thx
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group