Posted: Thu Jun 08, 2017 8:04 pm Post subject: RE:max id error with sprites... CONTINUED
Is it giving the same error message? Because as long as all images have been loaded, that should run fine.
programmer_needs_help
Posted: Thu Jun 08, 2017 8:07 pm Post subject: RE:max id error with sprites... CONTINUED
Process "enemyOneAttack": Cannot allocate item. Out of id numbers (max 1000)
programmer_needs_help
Posted: Thu Jun 08, 2017 8:07 pm Post subject: RE:max id error with sprites... CONTINUED
Now it's an error for a new process !!!!
Here's the whole code:
% Indicate Screen Size and Background Image
View.Set ("graphics,offscreenonly")
var window : int := Window.Open ("graphics:930;605,nobuttonbar")
cls
% Indicate Variables
var swordQuestLogoImage : int
var forestBackground : int
const CENTREX : int := maxx div 2
const CENTREY : int := maxy div 2
var msSerifFont : int
var startOption : char
var player : int
var playerSprite : int
var playerYValue : int := 290
var ground : int := 290
var playerXValue : int := CENTREX - 400
var playerXValueOriginal : int
var enemyOne : int
var enemyOneSprite : int
var enemyOneYValue : int := ground
var enemyOneXValue : int := CENTREX + 400
var enemyTwo : int
var enemyThree : int
var lordZolton : int
var pressSToStartPic : int
var pressSToStartSprite : int
var arrowInput : array char of boolean
var arrowInputTwo : array char of boolean
var arrowInputThree : array char of boolean
var mainMenu : int
var levelOneBackground : int
var aboutGameButtonPic : int
var controlsButtonPic : int
var startButtonPic : int
var quitGameButtonPic : int
var aboutGameButton : int
var controlsButton : int
var startButton : int
var quitGameButton : int
var aboutGameScreenOne : int
var controlsScreen : int
var fireball : int
var fireballSprite : int
var fireballXValue : int
var enemyOnePlayerDistance : real := 0
var attackChance : int
var numLives : int := 3
var gameOver : int
var lifeHearts : int
var lifeHeartsSprite : int
var playerAttack : int
% Begin Process For Player Movement
process playerMovement
loop
% Arrow Key Input
% Player Movement With Down Key
Input.KeyDown (arrowInput)
% Player Movement With Up Key
if arrowInput (KEY_UP_ARROW) and playerYValue = ground then
playerXValueOriginal := playerXValue
loop
playerYValue := floor (-0.015 * ((playerXValue - playerXValueOriginal) div 2) ** 2 + 420)
playerXValue := playerXValue + 1
Sprite.SetPosition (playerSprite, playerXValue, playerYValue, false)
Sprite.Show (playerSprite)
delay (2)
exit when playerYValue <= ground
end loop
% Reset Player To Bottom Of Screen When Top of Screen Reached
% Player Movement With Right Key
elsif arrowInput (KEY_RIGHT_ARROW) then
playerXValue := playerXValue + 1
% Restrict Player Movement on Right Side of Screen
if playerXValue >= maxx then
playerXValue := 0
end if
% Player Movement With Left Key
elsif arrowInput (KEY_LEFT_ARROW) then
playerXValue := playerXValue - 1
% Restrict Player Movement on Left Side of Screen
if playerXValue = 0 then
playerXValue := maxx
end if
% Sword Attack
elsif arrowInput (' ') and playerYValue <= ground then
Sprite.ChangePic (playerSprite, playerAttack)
Sprite.SetPosition (playerSprite, playerXValue, playerYValue, true)
end if
% Reposition The Player On The Screen According To Input
Sprite.SetPosition (playerSprite, playerXValue, playerYValue, true)
delay (2)
end loop
end playerMovement
% Fireball Attack
process fireballMoving
loop
Input.KeyDown (arrowInputTwo)
if arrowInputTwo (KEY_DOWN_ARROW) and playerYValue <= ground then
fireballXValue := playerXValue
for fireballMovement2 : 1 .. 940
Sprite.SetPosition (fireballSprite, fireballXValue + fireballMovement2, ground, true)
delay (2)
end for
Sprite.Show (fireballSprite)
end if
end loop
end fireballMoving
% Enemy AI
[color=darkred]process enemyOneAttack
var a : int := 0
loop
enemyOnePlayerDistance := Math.Distance (playerXValue, playerYValue, enemyOneXValue, enemyOneYValue)
if enemyOnePlayerDistance >= 15 then
a := 0
end if
if enemyOnePlayerDistance > 0 and playerXValue < enemyOneXValue then
enemyOneXValue := enemyOneXValue - 2
Sprite.SetPosition (enemyOneSprite, enemyOneXValue, enemyOneYValue, true)
delay (7)
elsif enemyOnePlayerDistance > 0 and playerXValue > enemyOneXValue then
enemyOneXValue := enemyOneXValue + 2
Sprite.SetPosition (enemyOneSprite, enemyOneXValue, enemyOneYValue, true)
elsif enemyOnePlayerDistance < 15 then
randint (attackChance, 1, 4)
if attackChance = 1 then
Sprite.Hide (enemyOneSprite)
enemyOne := Pic.FileNew ("enemyOneSword.bmp")
Sprite.ChangePic (enemyOneSprite, enemyOne)
enemyOne := Pic.Scale (enemyOne, 152, 165)
enemyOneSprite := Sprite.New (enemyOne)
Sprite.Show (enemyOneSprite)
Sprite.SetPosition (enemyOneSprite, enemyOneXValue, enemyOneYValue, true)
delay (20)
View.Update
if a = 0 then
numLives := numLives - 1
if numLives = 2 then
Sprite.Hide (lifeHeartsSprite)
lifeHearts := Pic.FileNew ("lifeHeartsTwo.bmp")
lifeHearts := Pic.Scale (lifeHearts, 80, 40)
Sprite.ChangePic (lifeHeartsSprite, lifeHearts)
Sprite.Show (lifeHeartsSprite)
Sprite.SetPosition (lifeHeartsSprite, CENTREX - 370, CENTREY + 250, true)
elsif numLives = 1 then
Sprite.Hide (lifeHeartsSprite)
lifeHearts := Pic.FileNew ("lifeHeartsOne.bmp")
lifeHearts := Pic.Scale (lifeHearts, 40, 40)
Sprite.ChangePic (lifeHeartsSprite, lifeHearts)
Sprite.Show (lifeHeartsSprite)
Sprite.SetPosition (lifeHeartsSprite, CENTREX - 370, CENTREY + 250, true)
end if
a := 1
end if
exit when numLives = 0
end if
end if
delay (7)
end loop
Posted: Thu Jun 08, 2017 8:10 pm Post subject: RE:max id error with sprites... CONTINUED
Sorry some of that isn't readable, Here read this:
% Indicate Screen Size and Background Image
View.Set ("graphics,offscreenonly")
var window : int := Window.Open ("graphics:930;605,nobuttonbar")
cls
% Indicate Variables
var swordQuestLogoImage : int
var forestBackground : int
const CENTREX : int := maxx div 2
const CENTREY : int := maxy div 2
var msSerifFont : int
var startOption : char
var player : int
var playerSprite : int
var playerYValue : int := 290
var ground : int := 290
var playerXValue : int := CENTREX - 400
var playerXValueOriginal : int
var enemyOne : int
var enemyOneSprite : int
var enemyOneYValue : int := ground
var enemyOneXValue : int := CENTREX + 400
var enemyTwo : int
var enemyThree : int
var lordZolton : int
var pressSToStartPic : int
var pressSToStartSprite : int
var arrowInput : array char of boolean
var arrowInputTwo : array char of boolean
var arrowInputThree : array char of boolean
var mainMenu : int
var levelOneBackground : int
var aboutGameButtonPic : int
var controlsButtonPic : int
var startButtonPic : int
var quitGameButtonPic : int
var aboutGameButton : int
var controlsButton : int
var startButton : int
var quitGameButton : int
var aboutGameScreenOne : int
var controlsScreen : int
var fireball : int
var fireballSprite : int
var fireballXValue : int
var enemyOnePlayerDistance : real := 0
var attackChance : int
var numLives : int := 3
var gameOver : int
var lifeHearts : int
var lifeHeartsSprite : int
var playerAttack : int
% Begin Process For Player Movement
process playerMovement
loop
% Arrow Key Input
% Player Movement With Down Key
Input.KeyDown (arrowInput)
% Player Movement With Up Key
if arrowInput (KEY_UP_ARROW) and playerYValue = ground then
playerXValueOriginal := playerXValue
loop
playerYValue := floor (-0.015 * ((playerXValue - playerXValueOriginal) div 2) ** 2 + 420)
playerXValue := playerXValue + 1
Sprite.SetPosition (playerSprite, playerXValue, playerYValue, false)
Sprite.Show (playerSprite)
delay (2)
exit when playerYValue <= ground
end loop
% Reset Player To Bottom Of Screen When Top of Screen Reached
% Player Movement With Right Key
elsif arrowInput (KEY_RIGHT_ARROW) then
playerXValue := playerXValue + 1
% Restrict Player Movement on Right Side of Screen
if playerXValue >= maxx then
playerXValue := 0
end if
% Player Movement With Left Key
elsif arrowInput (KEY_LEFT_ARROW) then
playerXValue := playerXValue - 1
% Restrict Player Movement on Left Side of Screen
if playerXValue = 0 then
playerXValue := maxx
end if
% Sword Attack
elsif arrowInput (' ') and playerYValue <= ground then
Sprite.ChangePic (playerSprite, playerAttack)
Sprite.SetPosition (playerSprite, playerXValue, playerYValue, true)
end if
% Reposition The Player On The Screen According To Input
Sprite.SetPosition (playerSprite, playerXValue, playerYValue, true)
delay (2)
end loop
end playerMovement
% Fireball Attack
process fireballMoving
loop
Input.KeyDown (arrowInputTwo)
if arrowInputTwo (KEY_DOWN_ARROW) and playerYValue <= ground then
fireballXValue := playerXValue
for fireballMovement2 : 1 .. 940
Sprite.SetPosition (fireballSprite, fireballXValue + fireballMovement2, ground, true)
delay (2)
end for
Sprite.Show (fireballSprite)
end if
end loop
end fireballMoving
% Enemy AI
process enemyOneAttack
var a : int := 0
loop
enemyOnePlayerDistance := Math.Distance (playerXValue, playerYValue, enemyOneXValue, enemyOneYValue)
if enemyOnePlayerDistance >= 15 then
a := 0
end if
if enemyOnePlayerDistance > 0 and playerXValue < enemyOneXValue then
enemyOneXValue := enemyOneXValue - 2
Sprite.SetPosition (enemyOneSprite, enemyOneXValue, enemyOneYValue, true)
delay (7)
elsif enemyOnePlayerDistance > 0 and playerXValue > enemyOneXValue then
enemyOneXValue := enemyOneXValue + 2
Sprite.SetPosition (enemyOneSprite, enemyOneXValue, enemyOneYValue, true)
elsif enemyOnePlayerDistance < 15 then
randint (attackChance, 1, 4)
if attackChance = 1 then
Sprite.Hide (enemyOneSprite)
enemyOne := Pic.FileNew ("enemyOneSword.bmp")
Sprite.ChangePic (enemyOneSprite, enemyOne)
enemyOne := Pic.Scale (enemyOne, 152, 165)
enemyOneSprite := Sprite.New (enemyOne)
Sprite.Show (enemyOneSprite)
Sprite.SetPosition (enemyOneSprite, enemyOneXValue, enemyOneYValue, true)
delay (20)
View.Update
if a = 0 then
numLives := numLives - 1
if numLives = 2 then
Sprite.Hide (lifeHeartsSprite)
lifeHearts := Pic.FileNew ("lifeHeartsTwo.bmp")
lifeHearts := Pic.Scale (lifeHearts, 80, 40)
Sprite.ChangePic (lifeHeartsSprite, lifeHearts)
Sprite.Show (lifeHeartsSprite)
Sprite.SetPosition (lifeHeartsSprite, CENTREX - 370, CENTREY + 250, true)
elsif numLives = 1 then
Sprite.Hide (lifeHeartsSprite)
lifeHearts := Pic.FileNew ("lifeHeartsOne.bmp")
lifeHearts := Pic.Scale (lifeHearts, 40, 40)
Sprite.ChangePic (lifeHeartsSprite, lifeHearts)
Sprite.Show (lifeHeartsSprite)
Sprite.SetPosition (lifeHeartsSprite, CENTREX - 370, CENTREY + 250, true)
end if
a := 1
end if
exit when numLives = 0
end if
end if
delay (7)
end loop
Posted: Thu Jun 08, 2017 8:13 pm Post subject: RE:max id error with sprites... CONTINUED
The error is happening for the same reason as before. You have made the same mistake.
programmer_needs_help
Posted: Thu Jun 08, 2017 8:18 pm Post subject: RE:max id error with sprites... CONTINUED
omg I can't believe it! Alright lol i'll try and fix that.
programmer_needs_help
Posted: Thu Jun 08, 2017 8:57 pm Post subject: RE:max id error with sprites... CONTINUED
upon testing, the following doesn't crash:
% Indicate Screen Size and Background Image
View.Set ("graphics,offscreenonly")
var window : int := Window.Open ("graphics:930;605,nobuttonbar")
cls
% Indicate Variables
var swordQuestLogoImage : int
var forestBackground : int
const CENTREX : int := maxx div 2
const CENTREY : int := maxy div 2
var msSerifFont : int
var startOption : char
var player : int
var playerSprite : int
var playerYValue : int := 290
var ground : int := 290
var playerXValue : int := CENTREX - 400
var playerXValueOriginal : int
var enemyOne : int
var enemyOneSprite : int
var enemyOneYValue : int := ground
var enemyOneXValue : int := CENTREX + 400
var enemyTwo : int
var enemyThree : int
var lordZolton : int
var pressSToStartPic : int
var pressSToStartSprite : int
var arrowInput : array char of boolean
var arrowInputTwo : array char of boolean
var arrowInputThree : array char of boolean
var mainMenu : int
var levelOneBackground : int
var aboutGameButtonPic : int
var controlsButtonPic : int
var startButtonPic : int
var quitGameButtonPic : int
var aboutGameButton : int
var controlsButton : int
var startButton : int
var quitGameButton : int
var aboutGameScreenOne : int
var controlsScreen : int
var fireball : int
var fireballSprite : int
var fireballXValue : int
var enemyOnePlayerDistance : real := 0
var attackChance : int
var numLives : int := 3
var gameOver : int
var lifeHearts : int
var lifeHeartsSprite : int
var playerAttack : int
var enemyOneSword : int
% Begin Process For Player Movement
process playerMovement
loop
% Arrow Key Input
% Player Movement With Down Key
Input.KeyDown (arrowInput)
% Player Movement With Up Key
if arrowInput (KEY_UP_ARROW) and playerYValue = ground then
playerXValueOriginal := playerXValue
loop
playerYValue := floor (-0.015 * ((playerXValue - playerXValueOriginal) div 2) ** 2 + 420)
playerXValue := playerXValue + 1
Sprite.SetPosition (playerSprite, playerXValue, playerYValue, false)
Sprite.Show (playerSprite)
delay (2)
exit when playerYValue <= ground
end loop
% Reset Player To Bottom Of Screen When Top of Screen Reached
% Player Movement With Right Key
elsif arrowInput (KEY_RIGHT_ARROW) then
playerXValue := playerXValue + 1
% Restrict Player Movement on Right Side of Screen
if playerXValue >= maxx then
playerXValue := 0
end if
% Player Movement With Left Key
elsif arrowInput (KEY_LEFT_ARROW) then
playerXValue := playerXValue - 1
% Restrict Player Movement on Left Side of Screen
if playerXValue = 0 then
playerXValue := maxx
end if
% Sword Attack
elsif arrowInput (' ') and playerYValue <= ground then
Sprite.ChangePic (playerSprite, playerAttack)
Sprite.SetPosition (playerSprite, playerXValue, playerYValue, true)
end if
% Reposition The Player On The Screen According To Input
Sprite.SetPosition (playerSprite, playerXValue, playerYValue, true)
delay (2)
end loop
end playerMovement
% Fireball Attack
process fireballMoving
loop
Input.KeyDown (arrowInputTwo)
if arrowInputTwo (KEY_DOWN_ARROW) and playerYValue <= ground then
fireballXValue := playerXValue
for fireballMovement2 : 1 .. 940
Sprite.SetPosition (fireballSprite, fireballXValue + fireballMovement2, ground, true)
delay (2)
end for
Sprite.Show (fireballSprite)
end if
end loop
end fireballMoving
% Enemy AI
process enemyOneAttack
var a : int := 0
loop
enemyOnePlayerDistance := Math.Distance (playerXValue, playerYValue, enemyOneXValue, enemyOneYValue)
if enemyOnePlayerDistance >= 15 then
a := 0
end if
if enemyOnePlayerDistance > 0 and playerXValue < enemyOneXValue then
enemyOneXValue := enemyOneXValue - 2
Sprite.SetPosition (enemyOneSprite, enemyOneXValue, enemyOneYValue, true)
delay (7)
elsif enemyOnePlayerDistance > 0 and playerXValue > enemyOneXValue then
enemyOneXValue := enemyOneXValue + 2
Sprite.SetPosition (enemyOneSprite, enemyOneXValue, enemyOneYValue, true)
elsif enemyOnePlayerDistance < 15 then
randint (attackChance, 1, 4)
if attackChance = 1 then
Sprite.ChangePic (enemyOneSprite, enemyOneSword)
Sprite.SetPosition (enemyOneSprite, enemyOneXValue, enemyOneYValue, true)
View.Update
if a = 0 then
numLives := numLives - 1
if numLives = 2 then
Sprite.Hide (lifeHeartsSprite)
lifeHearts := Pic.FileNew ("lifeHeartsTwo.bmp")
lifeHearts := Pic.Scale (lifeHearts, 80, 40)
Sprite.ChangePic (lifeHeartsSprite, lifeHearts)
Sprite.Show (lifeHeartsSprite)
Sprite.SetPosition (lifeHeartsSprite, CENTREX - 370, CENTREY + 250, true)
elsif numLives = 1 then
Sprite.Hide (lifeHeartsSprite)
lifeHearts := Pic.FileNew ("lifeHeartsOne.bmp")
lifeHearts := Pic.Scale (lifeHearts, 40, 40)
Sprite.ChangePic (lifeHeartsSprite, lifeHearts)
Sprite.Show (lifeHeartsSprite)
Sprite.SetPosition (lifeHeartsSprite, CENTREX - 370, CENTREY + 250, true)
end if
a := 1
end if
exit when numLives = 0
end if
end if
delay (7)
end loop