DIM arrays - how do I declare multiple global arrays???

Previous topic - Next topic

griller

I've run into a problem with my "Agony of the Damned" trial game.

I only seem to be able to declare one global array using DIM. I need more than one array for my game!

Code:
DIM map_array [16][16][3]
DIM keylocation_array [1][1]
DIM unit_array [1][1]

Error:
C:\DOCUME~1\AL\LOCALS~1\Temp\glbasic\gpc_temp0.cpp: In function `int __GLBASIC__::__MainGameSub_()':
C:\DOCUME~1\AL\LOCALS~1\Temp\glbasic\gpc_temp0.cpp:20: error: `keylocation_array' undeclared (first use this function)
C:\DOCUME~1\AL\LOCALS~1\Temp\glbasic\gpc_temp0.cpp:20: error: (Each undeclared identifier is reported only once for each function it appears in.)
C:\DOCUME~1\AL\LOCALS~1\Temp\glbasic\gpc_temp0.cpp:21: error: `unit_array' undeclared (first use this function)

Synthetic

If you haven't already, try updating to the latest version. I just ran it on 4.051 with no errors.
"Impossible is a word people use to make themselves feel better when they quit."

My AMXMODX plugins for Day of Defeat 1.3 can be found here.

Kitty Hello

after the name of the "map_array" try to remove the spaces before the "[" symbol. Please tell me if it fixed the problem.

griller

Thank you for your advice Synthetic and GernotFrisch.

New code:
DIM map_array[16][16][3]
DIM keylocation_array[2][2]
DIM unit_array[2][2]

This did not work either :(

I am still playing with GLBasic 4.009 Demo version to see if it is capable of creating the game I wish to write. Is there a set of limitations within the demo? I have ordered GLBasic SDK premium with the Xmas discount offer so hopefully it will work with that compiler when I get it....

Kitty Hello

From the menu: Web/Internet Update, you can get a new version. This, however, seems totally strange. Please upload the .gbas file you try to compile with zshare and post a link. You example compiles fine here, so it must be something else.

griller

Success!!!

The update made it work perfectly - thank you Gernot. :)

I am happy to upload my program but what is "zshare"? Are you talking about "Submit a New Game"? I ran a search of your forum and of GLBasic and got no usefull results for "zshare" :(

Kitty Hello

Great to see it working! ZShare? Take a look at the very top of the forum pages.
If you want your game in the showroom, that's the way to go.
Send me a mail for the access-password for uploading.

griller

OK - I've posted my code at:

http://www.zshare.net/download/agony-of-the-damned-gbap.html

I hope to make a very cool (and bizzare) 2D turn based strategy game using your compiler.

I didn't notice the zshare link at the top of the page!!!

Kitty Hello

The gpap is the "Project" file. The "gbas" is the source file. You uploaded the project ;)

griller


Kitty Hello

Looks nice. Beware: GETFILE/PUTFILE is only valid for line numbers 0..255 (you use 450)
Better use INIPUT/INIOPEN for new projects now.

griller

OK Gernot, I have re-written my save/load subs to use INIPUT to save my arrays. Its a but slow but does the job with just one file.

Code:

SUB savemap:
 KILLFILE "Maps/map.ini"
 INIOPEN "Maps/map.ini"
 FOR x=0 TO 63
  counter = 0
  FOR y=0 TO 63
   FOR z=0 TO 2
    INIPUT x, counter, map_array
  • [y][z]
   counter = counter + 1
   NEXT
  NEXT
 NEXT
 INIOPEN ""
ENDSUB

SUB loadmap:
 INIOPEN "Maps/map.ini"
 FOR x=0 TO 63
  counter = 0
  FOR y=0 TO 63
   FOR z=0 TO 2
    map_array
  • [y][z] = INIGET$(x, counter)
   counter = counter + 1
   NEXT
  NEXT
 NEXT
 INIOPEN ""
ENDSUB

Kitty Hello

you seem to be a good programmer. You might have better results when you write all values for "y" in one string, seperating with a ',' and get them out later with SPLITSTR.
...just an idea.

griller

OK - I will have a play...

What a fantastic resource this forum is - this support is invaluable.

Hemlos

Hi, just passing through the forums..

 if youre reading and/or writing the data from an entire ARRAY[]  with more than 1 dimension, it will slow the cpu/ram exponentially....

ie
dim arrayname[100][100]=10000 data slots
dim arrayname[100][100][100]=1000000 data slots
dim arrayname[100][100][100][100]=100000000 data slots

and naturally:
ie dim arrayname[1000][1000][1000][1000]=1000000000000 data slots!

if you are experiencing a lack of performance, think about how much data youre actually using per frame when you build your array.

also you can optimize mapp_array
  • [y][y] to this: map_obbject[1000][3] where: 1000=1000 objects, where [3] is 3 dimensions X Y Z...you can assign more data per object for more dimensions..like time, speed, distance, etc...4 5 6
Bing ChatGpt is pretty smart :O