07-10-2005, 03:11 AM
Hi all,
I just got FBIDE today and while I was playing round with it I came up with this program. Trouble is FBIDE is saying that it needs another 'FOR' only I can't see where.
Thanks in advance.
I just got FBIDE today and while I was playing round with it I came up with this program. Trouble is FBIDE is saying that it needs another 'FOR' only I can't see where.
Code:
SCREEN 19
RANDOMIZE TIMER
troops% = 1000
mindistx% = 5000
mindisty% = 5000
TYPE soldier
side AS INTEGER
health AS INTEGER
strength AS INTEGER
experience AS INTEGER
posx AS INTEGER
posy AS INTEGER
shortlist AS INTEGER
END TYPE
DIM army(1 TO troops%) AS soldier
FOR X% = 1 TO troops%
army(X%).side = INT(RND * 2) + 1
army(X%).health = 100
army(X%).strength = INT(RND * 50) + 25
army(X%).experience = INT(RND * 10) + 1
IF army(X%).side = 1 THEN
army(X%).posx = INT(RND * 350) + 1
ELSEIF army(X%).side = 2 THEN
army(X%).posx = 800 - INT((RND * 350) + 1)
END IF
army(X%).posy = INT(RND * 600) + 1
NEXT X%
FOR X% = 1 TO troops%
IF army(X%).side = 1 THEN
one% = one% + 1
ELSE
two% = two% + 1
END IF
NEXT X%
one$ = STR$(one%)
two$ = STR$(two%)
PRINT "Side one has: " + one$ + " troops."
PRINT "Side two has: " + two$ + " troops."
PRINT "Press any key to continue."
DO
press$ = INKEY$
IF press$ <> "" THEN
CLS
press$ = ""
EXIT DO
END IF
LOOP
DO
FOR X% = 1 TO troops%
IF army(X%).health <= 0 THEN
ELSE
PSET (army(X%).posx, army(X%).posy), army(X%).side
END IF
FOR Y% = 1 TO troops%
army(Y%).shortlist = 0
IF army(X%).side <> army(Y%).side THEN
army(Y%).shortlist = 1
ELSE
army(Y%).shortlist = 0
END IF
IF army(X%).posx - army(Y%).posx < mindistx% AND army(X%).posy - army(Y%).posy < mindisty% AND army(Y%).shortlist = 1 THEN
army(Y%).shortlist = 1
ELSE
army(Y%).shortlist = 0
END IF
NEXT Y%
FOR Y% = 1 TO troops%
IF army(X%).posx - army(Y%).posx < mindistx% AND army(X%).posy - army(Y%).posy < mindisty% AND army(Y%).shortlist = 1 THEN
army(Y%).shortlist = 1
ELSE
army(Y%).shortlist = 0
END IF
NEXT Y%
FOR Y% = 1 TO troops%
IF army(Y%).shortlist = 1 THEN
IF army(Y%).posx < army(X%).posx THEN
army(X%).posx = army(X%).posx - 1
ELSE
army(X%).posx = army(X%).posx + 1
END IF
IF army(Y%).posy < army(X%).posy THEN
army(X%).posy = army(X%).posy - 1
ELSE
army(X%).posy = army(X%).posy + 1
END IF
NEXT Y%
NEXT X%
SLEEP 1000
LOOP
Thanks in advance.