rpgfan3233
Technical User
Yeah, I know, it's a dead language, but I have a craving to learn more! :-D
I have 3 BSAVEd graphics that are BLOADed into a file. I'm using PUT statements to display them. The problem is the fact that each graphic is stored in a different array, which means 3 different arrays, and I'm using a random number to call a set of IF...THEN...ELSE statements which call a certain PUT statement based on the number. I was wondering if there was a way to call a single PUT statement, with a certain array as the target array based on the random number. I'm only using 3 graphics (which will eventually grow larger over time), so I'm basically just asking for code optimization, if that's possible.
Here is the code (note the redundancies when you look at the PUT statements):
Okay, the idea I'm having is to do something like this:
PUT (drawcharsX%, drawcharsY%), arrayName(char%)
where arrayName is an array that can be referenced to fetch one of the arrays that hold graphics, based on the value of "char%".
For example:
I hope somebody can help. I also hope I explained it well enough...
I have 3 BSAVEd graphics that are BLOADed into a file. I'm using PUT statements to display them. The problem is the fact that each graphic is stored in a different array, which means 3 different arrays, and I'm using a random number to call a set of IF...THEN...ELSE statements which call a certain PUT statement based on the number. I was wondering if there was a way to call a single PUT statement, with a certain array as the target array based on the random number. I'm only using 3 graphics (which will eventually grow larger over time), so I'm basically just asking for code optimization, if that's possible.
Here is the code (note the redundancies when you look at the PUT statements):
Code:
SCREEN 13
CLS
DIM blbelt(901) AS INTEGER, blmage(937) AS INTEGER, fighter(937) AS INTEGER
' "Fast Palette Swapping" technique
'$INCLUDE: 'colors.bi'
DEF SEG = VARSEG(blbelt(0))
BLOAD "bl_belt.bsv", 0
DEF SEG
DEF SEG = VARSEG(blmage(0))
BLOAD "bl_mage.bsv", 0
DEF SEG
DEF SEG = VARSEG(fighter(0))
BLOAD "fighter.bsv", 0
DEF SEG
FOR drawcharsY% = 0 TO 140 STEP 70
FOR drawcharsX% = 0 TO 280 STEP 40
RANDOMIZE TIMER
char% = INT(RND * 3) + 1
IF char% = 1 THEN
PUT ([COLOR=blue][b]drawcharsX%, drawcharsY%[/b][/color]), blbelt
ELSEIF char% = 2 THEN
PUT ([COLOR=blue][b]drawcharsX%, drawcharsY%[/b][/color]), blmage
ELSEIF char% = 3 THEN
PUT ([COLOR=blue][b]drawcharsX%, drawcharsY%[/b][/color]), fighter
END IF
NEXT drawcharsX%
NEXT drawcharsY%
Okay, the idea I'm having is to do something like this:
PUT (drawcharsX%, drawcharsY%), arrayName(char%)
where arrayName is an array that can be referenced to fetch one of the arrays that hold graphics, based on the value of "char%".
For example:
Code:
char% = 1
PUT (drawcharsX%, drawcharsY%), arrayName(char%) ' fetches the "blbelt" array
char% = 2
PUT (drawcharsX%, drawcharsY%), arrayName(char%) ' fetches the "blmage" array
char% = 3
PUT (drawcharsX%, drawcharsY%), arrayName(char%) ' fetches the "fighter" array
I hope somebody can help. I also hope I explained it well enough...