Feld auf Gegner überprüfen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

mabox

Betreff: Feld auf Gegner überprüfen

BeitragFr, Jul 18, 2008 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo, ich mach grad nen kleines Spiel in welchem es beliebig viele Spieler geben soll. Jeder Speler hat eine bestimmte Anzahl von Einheiten, die er auf Felder setzen kann.

Mein Problem ist jetzt, dass ich nicht weis wie ich überprüfen soll ob schon eine gegnerische Einheit auf dem Feld ist wo man jetzt seine eigene plazieren will. (Auf ein Feld dürfen mehrere Einheiten eines Spielers. Aber keine Einheiten von verschiedenen Spielern.)

Ich habe die Position einer Einheit in Arrays gespeichert:Code: [AUSKLAPPEN]
feld(x20,y10,spieler)
x20 gibt die x-koordinate des Feldes an, y10 gibt die y-Koordinate des Feldes und spieler gibt an wer an der Reihe ist (Spieler 1,2,3....)
Der Wert des gesamten (also: feld(x20,y10,spieler) gibt die Anzahl der Einheiten auf diesem Feld an.

Wie kann ich jetzt überprüfen ob schon ein anderer Spieler auf dem Feld ist?
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

Jo0oker

BeitragFr, Jul 18, 2008 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß nicht ob ich dich richtig verstanden habe, aber warum vergleichst du nicht alle mit einer foreach schleife?

lg Jo0oker
 

MadMental

BeitragFr, Jul 18, 2008 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
Ich würde dein Problem mit einem 2 Dimensionalen Dim-Feld lösen. Wenn Dieses Feld nun dir gehört, also nur deine Einheiten können das Feld betreten, dann hat feld(x,y) = 1 oder so. Wenn jetzt nur der Gegner dieses Feld betreten darf, hat das Feld den Wert 2.. usw.
Wenn du mehrere Spieler hast, würde ich jedem eine Nummer zuweisen und dann immer die Nummer des jeweiligen Spielers abfragen

MM

mabox

BeitragFr, Jul 18, 2008 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
@Jo0oker, weil Ich keine Types benutze

@MadMental, dann fehlt mit die Anzahl der Einheiten auf einem Feld. Die war ja vorher darin gespeichert.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage
 

MadMental

BeitragFr, Jul 18, 2008 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du nur eine Einheit? o_O ^^
Dann füge dem Dim-Feld einfach eine weitere Dimension hinzu: Dim Feld(x,y,Einheiten_Anzahl), oder?

MM

The Shark

BeitragFr, Jul 18, 2008 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Geh die letzte dimension, also spieler durch und schau, ob bei einem anderem spieler, der nciht am zug ist der wert über 0 ist.

Code: [AUSKLAPPEN]

for spielernr=0 to maxspieler-1
  if feld(x20,y10,spielernr)>0 and spielernr<>aktueller_spieler
    besetzt=1
    exit
  endif
next

if besetzt=0 then Print "Feld frei von gegnerischen einheiten"


bzw als function:
Code: [AUSKLAPPEN]

if feldfrei(x,y,spieler) then feld(x,y,spieler)=feld(x,y,spieler)+1

function feldfrei(x,y,spieler)
  for spielernr=0 to maxspieler-1
    if feld(x20,y10,spielernr)>0 and spielernr<>spieler
      return 0
    endif
  next
  return 1
end function

mabox

BeitragFr, Jul 18, 2008 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank! es geht.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group