Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 In need of help for my Turing Game!!
Index -> Programming, Turing -> Turing Help
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
programmerNeedsHelp2.0




PostPosted: Thu Jun 15, 2017 8:29 pm   Post subject: In need of help for my Turing Game!!

I am currently making a game which consists of four levels. I want to program the game so that if the user loses any level (in which a "game over screen" is displayed), it tells the user to press a certain key to go back to the main menu of the game, in which the user can play the game again if he/she wants to. (so it has to repeat all code written prior to the displaying of "game over" screen, within the same file) But I can't figure this out! Is there anything similar to a goto statement as seen in c, python, and other languages? Here is the code:

% June 7th 2017
% SwordQuest.t
% A Sword Fighting Game Based On The Popular Title Nidhogg. The User Must
% Fight Their Way Through Four Levels Of Battles In Order To Win The Game.

% Indicate Screen Size and Background Image
View.Set ("graphics,offscreenonly")
var window : int := Window.Open ("graphics:930;605,nobuttonbar")
View.Set ("nocursor")

% 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 - 300
var playerXValueOriginal : int
var enemyOne : int
var enemyOneSprite : int
var enemyOneYValue : int := ground
var enemyOneXValue : int := CENTREX + 400
var enemyTwo : int
var enemyTwoSprite : int
var enemyTwoYValue : int := ground
var enemyTwoXValue : int := CENTREX + 400
var enemyThree : int
var lordZolton : int
var pressSToStartPic : int
var pressSToStartSprite : int
var arrowInput : array char of boolean
var arrowInputFireball : array char of boolean
var arrowInputTwo : array char of boolean
var arrowInputFireballTwo : array char of boolean
var arrowInputThree : array char of boolean
var arrowInputFireballThree : array char of boolean
var arrowInputFour : array char of boolean
var mainMenu : int
var levelOneBackground : int
var aboutGameButtonPic : int
var controlsButtonPic : int
var startButtonPic : int
var quitGameButtonPic : int
var aboutGameScreenOne : int
var aboutGameScreenTwo : int
var aboutGameScreenThree : int
var controlsScreen : int
var backButtonPic : 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
var levelOneComplete : int
var fireballEnemyOneDistance : real
var enemyOneLives : int := 10
var enemyLifeHearts : int
var enemyLifeHeartsSprite : int
var fireballMovement : int
var winLoseSeperator : int := 0
var levelTwoBackground : int
var enemyTwoSword : int
var enemyTwoLives : int := 10
var enemyThreeLives : int := 10
var lordZoltonLives : int := 10
var numPoints : int := 0
var levelTwoComplete : int
var enemyTwoPlayerDistance : real := 0
var fireballEnemyTwoDistance : real
var lifeHeartsThree : int
var enemyLifeHeartsTen : int
var levelThreeComplete : int
var enemyThreeSprite : int
var enemyThreePlayerDistance : real := 0
var enemyThreeSword : int
var enemyThreeXValue : int := CENTREX + 400
var enemyThreeYValue : int := ground
var levelFourBackground : int
var lordZoltonSprite : int
var lordZoltonSword : int
var lordZoltonPlayerDistance : real := 0
var lordZoltonXValue : int := CENTREX + 400
var lordZoltonYValue : int := ground
var fireballLordZoltonDistance : real := 0
var playerMovementSeperator : int := 0
var fireballSeperator : int := 0
var aiSeperator : int := 0
var fireballXValueNew : int
var level : boolean := true
var level2 : boolean := true
var level3 : boolean := true
var enemyThreSprite : int

% Indicate Variables For Menu Buttons
var playGame, aboutGame, exitAboutGame, exitAbout, menuDraw, exitGameControls : boolean
var buttonX, buttonY, button : int
var buttonXOne, buttonYOne, buttonOne : int
var buttonXTwo, buttonYTwo, buttonTwo : int
var buttonXThree, buttonYThree, buttonThree : int
var buttonX1, buttonY1, button1 : int

% Import Start Screen Music
Music.PlayFileLoop ("StartOfGameSoundtrack.mp3")

% Start Screen

% Import Forest Background
forestBackground := Pic.FileNew ("StartScreenForestBackground.bmp")
forestBackground := Pic.Scale (forestBackground, 930, 605)
Pic.Draw (forestBackground, 0, 0, picMerge)

% Import Game Logo/Title
swordQuestLogoImage := Pic.FileNew ("SwordQuestLogo.bmp")
swordQuestLogoImage := Pic.Scale (swordQuestLogoImage, 430, 270)
Pic.Draw (swordQuestLogoImage, CENTREX - 220, CENTREY - 120, picMerge)

% Start Option
pressSToStartPic := Pic.FileNew ("pressSToStart.bmp")
pressSToStartPic := Pic.Scale (pressSToStartPic, 500, 200)
pressSToStartSprite := Sprite.New (pressSToStartPic)
Sprite.Show (pressSToStartSprite)
for startLocation : 0 .. 40
Sprite.SetPosition (pressSToStartSprite, CENTREX, startLocation - 25, true)
View.Update
delay (20)
end for
loop
% Get input of (s) key to start game
startOption := getchar
if startOption = "s" or startOption = "S" then
Sprite.Hide (pressSToStartSprite)
cls
exit
end if
end loop

% Set menuDraw as false
menuDraw := false

loop

% Declare boolean values as false
exitAboutGame := false
playGame := false
exitGameControls := false
if menuDraw = false then

% Main Menu
mainMenu := Pic.FileNew ("mainMenu.bmp")
mainMenu := Pic.Scale (mainMenu, 930, 605)
Pic.Draw (mainMenu, 0, 0, picMerge)

% Create the pictures for main menu buttons
aboutGameButtonPic := Pic.FileNew ("aboutGameButtonPic.bmp")
Pic.Draw (aboutGameButtonPic, 8, 202, picMerge)
controlsButtonPic := Pic.FileNew ("controlsButtonPic.bmp")
Pic.Draw (controlsButtonPic, 319, 202, picMerge)
startButtonPic := Pic.FileNew ("startButtonPic.bmp")
Pic.Draw (startButtonPic, 630, 202, picMerge)
quitGameButtonPic := Pic.FileNew ("quitGameButtonPic.bmp")
Pic.Draw (quitGameButtonPic, 650, 20, picMerge)
menuDraw := true
end if

loop
mousewhere (buttonX, buttonY, button)

% In-game buttons

% Start Game Button
if (buttonX >= 631 and buttonX <= 919) and (buttonY >= 205 and buttonY <= 402) and button = 1 then
playGame := true

% Quit Game Button
elsif (buttonX >= 652 and buttonX <= 887) and (buttonY >= 21 and buttonY <= 70) and button = 1 then
Window.Close (window)
quit

% Game Controls Button
elsif (buttonX >= 321 and buttonX <= 611) and (buttonY >= 202 and buttonY <= 402) and button = 1 then
exitGameControls := false

% Display "Game Controls" screen
Draw.Cls
View.Update
controlsScreen := Pic.FileNew ("controlsScreen.jpg")
controlsScreen := Pic.Scale (controlsScreen, 930, 605)
Pic.Draw (controlsScreen, 0, 0, picMerge)

loop
% Back Button in "Game Controls" screen
mousewhere (buttonX1, buttonY1, button1)
if (buttonX1 >= 602 and buttonX1 <= 640) and (buttonY1 >= 38 and buttonY1 <= 50) and button1 = 1 then
% Go back to main menu of game
exitGameControls := true
menuDraw := false
end if
exit when exitGameControls = true
end loop
exit when exitGameControls = true

% About Game Button
elsif (buttonX >= 8 and buttonX <= 300) and (buttonY >= 202 and buttonY <= 402) and button = 1 then

% Display "About Game" Screen One
Draw.Cls
View.Update
aboutGameScreenOne := Pic.FileNew ("aboutGameScreenOne.jpg")
aboutGameScreenOne := Pic.Scale (aboutGameScreenOne, 930, 605)
Pic.Draw (aboutGameScreenOne, 0, 0, picMerge)

loop

% "Back" Button in "About Game" Screen One
mousewhere (buttonXOne, buttonYOne, buttonOne)
if (buttonXOne >= 594 and buttonXOne <= 636) and (buttonYOne >= 98 and buttonYOne <= 111) and buttonOne = 1 then

% Go back to main menu of game
exitAboutGame := true
menuDraw := false
% Next Arrow in "About Game" Screen One
elsif (buttonXOne >= 489 and buttonXOne <= 510) and (buttonYOne >= 92 and buttonYOne <= 108) and buttonOne = 1 then
Draw.Cls
View.Update
aboutGameScreenTwo := Pic.FileNew ("aboutGameScreenTwo.jpg")
aboutGameScreenTwo := Pic.Scale (aboutGameScreenTwo, 930, 605)
Pic.Draw (aboutGameScreenTwo, 0, 0, picMerge)

loop
% "Back Button in "About Game" Screen Two
mousewhere (buttonXTwo, buttonYTwo, buttonTwo)
if (buttonXTwo >= 594 and buttonXTwo <= 636) and (buttonYTwo >= 98 and buttonYTwo <= 111) and buttonTwo = 1 then

% Go back to main menu of game
exitAboutGame := true
menuDraw := false

% Next Arrow in "About Game" Screen Two
elsif (buttonXTwo >= 489 and buttonXTwo <= 510) and (buttonYTwo >= 92 and buttonYTwo <= 108) and buttonTwo = 1 then
Draw.Cls
View.Update
aboutGameScreenThree := Pic.FileNew ("aboutGameScreenThree.jpg")
aboutGameScreenThree := Pic.Scale (aboutGameScreenThree, 930, 605)
Pic.Draw (aboutGameScreenThree, 0, 0, picMerge)
loop
% "Back Button in "About Game" Screen Three
mousewhere (buttonXThree, buttonYThree, buttonThree)
if (buttonXThree >= 594 and buttonXThree <= 636) and (buttonYThree >= 98 and buttonYThree <= 111) and buttonThree = 1 then

% Go back to main menu of game
exitAboutGame := true
menuDraw := false

end if
exit when exitAboutGame = true
end loop
exit when exitAboutGame = true
end if
exit when exitAboutGame = true
exit when exitGameControls = true

exit when playGame = true
end loop

end if
exit when exitAboutGame = true
exit when exitGameControls = true

exit when playGame = true
end loop
end if
exit when exitAboutGame = true
exit when exitGameControls = true
exit when playGame = true
end loop
exit when playGame = true
end loop

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Level One %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Import Start Of Game Music
Music.PlayFileStop
Music.PlayFileLoop ("gameBackgroundMusic.mp3")

% Import Level Background
levelOneBackground := Pic.FileNew ("levelOneBackground.bmp")
levelOneBackground := Pic.Scale (levelOneBackground, 930, 605)
Pic.Draw (levelOneBackground, 0, 0, picMerge)

% Import Level One Winning Screen
levelOneComplete := Pic.FileNew ("levelOneComplete.bmp")
levelOneComplete := Pic.Scale (levelOneComplete, 930, 605)

% Import Player and Convert To Sprite
player := Pic.FileNew ("playerBlaze.bmp")
player := Pic.Scale (player, 155, 165)
playerSprite := Sprite.New (player)
Sprite.Show (playerSprite)
Sprite.SetPosition (playerSprite, playerXValue, playerYValue, true)
playerAttack := Pic.FileNew ("playerBlazeSword.bmp")
playerAttack := Pic.Scale (playerAttack, 152, 165)

% Import Enemy One and Convert To Sprite
enemyOne := Pic.FileNew ("enemyOne.bmp")
enemyOne := Pic.Scale (enemyOne, 155, 166)
enemyOneSprite := Sprite.New (enemyOne)
Sprite.Show (enemyOneSprite)
Sprite.SetPosition (enemyOneSprite, 500, 290, true)
enemyOneSword := Pic.FileNew ("enemyOneSword.bmp")
enemyOneSword := Pic.Scale (enemyOneSword, 152, 165)

% Import Fireball and Convert To Sprite
fireball := Pic.FileNew ("fireball.bmp")
fireball := Pic.Scale (fireball, 40, 30)
fireballSprite := Sprite.New (fireball)

% Import Life Hearts and Convert To Sprite
lifeHearts := Pic.FileNew ("lifeHeartsThree.bmp")
lifeHeartsThree := Pic.FileNew ("lifeHeartsThree.bmp")
lifeHearts := Pic.Scale (lifeHearts, 120, 40)
lifeHeartsThree := Pic.Scale (lifeHearts, 120, 40)
lifeHeartsSprite := Sprite.New (lifeHearts)
Sprite.Show (lifeHeartsSprite)
Sprite.SetPosition (lifeHeartsSprite, CENTREX - 370, CENTREY + 269, true)

% Import Enemy Life Hearts and Convert To Sprite
enemyLifeHearts := Pic.FileNew ("enemyHeartsTen.bmp")
enemyLifeHeartsTen := Pic.FileNew ("enemyHeartsTen.bmp")
enemyLifeHeartsTen := Pic.Scale (enemyLifeHeartsTen, 400, 60)
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 400, 60)
enemyLifeHeartsSprite := Sprite.New (enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)

% Begin Process For Player Movement
process playerMovement

% The Seperator Variable seperates Player Movement Functions From Each Other, So That Actions Cant Be Done Together, Causing Freezing
playerMovementSeperator := 0
loop
if level = true then
if enemyOnePlayerDistance >= 100 then
playerMovementSeperator := 0
end if
% 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

% Parabola Shape of Jump Motion
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 Parabola Motion When The Player Has Reached The Ground
exit when playerYValue <= ground
end loop

% 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 Right 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)
View.Update

% Release Sword From Player Grasp When Button Is Released (Change Pic Back To Normal)
Sprite.ChangePic (playerSprite, player)
Sprite.SetPosition (playerSprite, playerXValue, playerYValue, true)
enemyOnePlayerDistance := Math.Distance (playerXValue, playerYValue, enemyOneXValue, enemyOneYValue)

% Decreasing Enemy Lives With Attack
if enemyOnePlayerDistance < 100 then
if playerMovementSeperator = 0 then
enemyOneLives := enemyOneLives - 1

% Increase Number of Points With Hit From Sword
numPoints := numPoints + 200
if enemyOneLives = 9 then

% Replace Enemy Heart Sprite Pic to the One With Nine Hearts
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsNine.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 360, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
elsif enemyOneLives = 8 then

% Replace Enemy Heart Sprite Pic to the One With Eight Hearts
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsEight.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 320, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
elsif enemyOneLives = 7 then

% Replace Enemy Heart Sprite Pic to the One With Seven Hearts
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsSeven.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 280, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
elsif enemyOneLives = 6 then

% Replace Enemy Heart Sprite Pic to the One With Six Hearts
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsSix.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 240, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
elsif enemyOneLives = 5 then

% Replace Enemy Heart Sprite Pic to the One With Five Hearts
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsFive.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 200, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
elsif enemyOneLives = 4 then

% Replace Enemy Heart Sprite Pic to the One With Four Hearts
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsFour.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 160, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
elsif enemyOneLives = 3 then

% Replace Enemy Heart Sprite Pic to the One With Three Hearts
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsThree.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 120, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
elsif enemyOneLives = 2 then

% Replace Enemy Heart Sprite Pic to the One With Two Hearts
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsTwo.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 100, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
elsif enemyOneLives = 1 then

% Replace Enemy Heart Sprite Pic to the One With One Heart Left
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsOne.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 60, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
elsif enemyOneLives = 0 then
View.Update
loop

% Display Game Over Screen and Hide All Sprites (So Player Must Re-Start, and Cant Continue Game)
Pic.Draw (levelOneComplete, 0, 0, picMerge)
Sprite.Hide (lifeHeartsSprite)
Sprite.Hide (enemyOneSprite)
Sprite.Hide (playerSprite)
Sprite.Hide (fireballSprite)
Sprite.Hide (enemyLifeHeartsSprite)

winLoseSeperator := 1

delay (1)
exit
end loop
end if
playerMovementSeperator := 1
end if
end if
end if
% Reposition The Player On The Screen According To Input
Sprite.SetPosition (playerSprite, playerXValue, playerYValue, true)
delay (2)
end if
end loop
end playerMovement

% Fireball Attack
process fireballMoving
fireballSeperator := 0
loop
if level = true then
if enemyOnePlayerDistance >= 40 then
fireballSeperator := 0
end if

% Dissallows Use Of Fireball When Behind Player (Doesnt make Physical Sense To Allow, Would Cause No Advantage In Game)
if playerXValue < enemyOneXValue then
Input.KeyDown (arrowInputFireball)
if arrowInputFireball (KEY_DOWN_ARROW) and playerYValue <= ground then

% For loop to Move Fireball Across Screeen
for fireballMovement : playerXValue .. enemyOneXValue
fireballXValueNew := playerXValue + fireballMovement
fireballXValue := playerXValue
Sprite.SetPosition (fireballSprite, fireballMovement, ground, true)

% Calculate Distance Between Fireball and Enemy
fireballEnemyOneDistance := Math.Distance (enemyOneXValue, enemyOneYValue, fireballXValueNew, ground)

% Decreasing Enemy Lives With Attack
if (enemyOneXValue - fireballXValueNew) > 40 then
if fireballSeperator = 0 then
fireballSeperator := 1
end if
end if
delay (2)
Sprite.Show (fireballSprite)
exit when (fireballXValueNew - enemyOneXValue) >= 40 and fireballSeperator = 1
end for
Sprite.Hide (fireballSprite)
enemyOneLives := enemyOneLives - 1
numPoints := numPoints + 50
if enemyOneLives = 9 then

% Replace Enemy Heart Sprite Pic to the One With Nine Hearts
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsNine.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 360, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)

% Replace Enemy Heart Sprite Pic to the One With Eight Hearts
elsif enemyOneLives = 8 then
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsEight.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 320, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)

% Replace Enemy Heart Sprite Pic to the One With Seven Hearts
elsif enemyOneLives = 7 then
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsSeven.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 280, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)

% Replace Enemy Heart Sprite Pic to the One With Six Hearts
elsif enemyOneLives = 6 then
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsSix.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 240, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)

% Replace Enemy Heart Sprite Pic to the One With Five Hearts
elsif enemyOneLives = 5 then
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsFive.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 200, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)

% Replace Enemy Heart Sprite Pic to the One With Four Hearts
elsif enemyOneLives = 4 then
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsFour.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 160, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)

% Replace Enemy Heart Sprite Pic to the One With Three Hearts
elsif enemyOneLives = 3 then
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsThree.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 120, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)

% Replace Enemy Heart Sprite Pic to the One With Two Hearts
elsif enemyOneLives = 2 then
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsTwo.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 100, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)

% Replace Enemy Heart Sprite Pic to the One With One Heart
elsif enemyOneLives = 1 then
Sprite.Hide (enemyLifeHeartsSprite)
enemyLifeHearts := Pic.FileNew ("enemyHeartsOne.bmp")
enemyLifeHearts := Pic.Scale (enemyLifeHearts, 60, 60)
View.Update
Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
Sprite.Show (enemyLifeHeartsSprite)
Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
elsif enemyOneLives = 0 then
View.Update
loop

% Display Game Over Screen and Hide All Sprites (So Player Must Re-Start, and Cant Continue Game)
Pic.Draw (levelOneComplete, 0, 0, picMerge)
Sprite.Hide (lifeHeartsSprite)
Sprite.Hide (enemyOneSprite)
Sprite.Hide (playerSprite)
Sprite.Hide (fireballSprite)
Sprite.Hide (enemyLifeHeartsSprite)

% Setting this Variable to 1 Helps To Seperate The Game Over and
% Winning Screen, When an Player Has Lost A Life After Winning
% In The Background
winLoseSeperator := 1

delay (1)
exit
end loop
end if
end if
end if
end if
end loop
end fireballMoving

% Enemy AI
process enemyOneAttack

% Seperates AI Movements Frim Attacks, In Order To Avoid Glitches and Freezes
aiSeperator := 0
loop
if level = true then
% Calculate Distance Between Enemy and Player
enemyOnePlayerDistance := Math.Distance (playerXValue, playerYValue, enemyOneXValue, enemyOneYValue)
if enemyOnePlayerDistance >= 200 then
aiSeperator := 0
end if

% Makes Enemy Follow Player Towards The Left
if enemyOnePlayerDistance > 0 and playerXValue < enemyOneXValue then
enemyOneXValue := enemyOneXValue - 2
Sprite.SetPosition (enemyOneSprite, enemyOneXValue, enemyOneYValue, true)

% Makes Enemy Follow Player Towards The Right
elsif enemyOnePlayerDistance > 0 and playerXValue > enemyOneXValue then
enemyOneXValue := enemyOneXValue + 2
Sprite.SetPosition (enemyOneSprite, enemyOneXValue, enemyOneYValue, true)
elsif enemyOnePlayerDistance < 200 then

% Generates A Number Predicting The Chance of Enemy Attack
randint (attackChance, 1, 4)
if attackChance = 1 then
Sprite.ChangePic (enemyOneSprite, enemyOneSword)
Sprite.SetPosition (enemyOneSprite, enemyOneXValue, enemyOneYValue, true)
View.Update

if aiSeperator = 0 then

% Decreases Life Count When Enemy Successfully Attacks Player
numLives := numLives - 1
if numLives = 2 then

% Changes Player Life Hearts Sprite Pic To Two Lives (Two Hearts)
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)

% Changes Player Life Hearts Sprite Pic To Two Lives (One Heart)
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
aiSeperator := 1
end if
exit when numLives = 0
end if

end if

delay (7)
end if
end loop
if winLoseSeperator = 0 then
Sprite.Hide (enemyOneSprite)
Sprite.Hide (playerSprite)
gameOver := Pic.FileNew ("gameOver.bmp")
gameOver := Pic.Scale (gameOver, 930, 605)
Pic.Draw (gameOver, 0, 0, picMerge)
View.Update
loop

% Displays Game Over Screen When All Lives Are Lost (This is Being Repeated In The Same Level Bacause
% It Must Be Done For The Fireball And Sword Seperately
Pic.Draw (gameOver, 0, 0, picMerge)
Sprite.Hide (enemyLifeHeartsSprite)
Sprite.Hide (lifeHeartsSprite)
Sprite.Hide (enemyOneSprite)
Sprite.Hide (playerSprite)
Sprite.Hide (fireballSprite)
end loop
end if
end enemyOneAttack

% Level One Process Components
loop
if level = true then
fork playerMovement
fork enemyOneAttack
fork fireballMoving
end if
exit
end loop

loop
% Get input of (a) key to start game
if winLoseSeperator = 1 then
startOption := getchar
Sprite.Hide (playerSprite)
if startOption = "a" or startOption = "A" then
cls
exit
end if
end if
end loop

level := false

include "Sword Quest Level 2.t"
Sponsor
Sponsor
Sponsor
sponsor
Insectoid




PostPosted: Fri Jun 16, 2017 5:51 am   Post subject: RE:In need of help for my Turing Game!!

This is extremely difficult to do if you're using processes at all in your code. You should be using procedures instead. Processes will give you all kinds of unpredictable bugs that are impossible to solve.

The easiest way to do what you're asking is to wrap the entire game in a loop. The first thing that loop does is set all variables to the starting condition. The next thing it does is ruin your game loop (again, inside the giant everything loop). When the game is won/lost, the game loop exits, which returns control to the giant loop, which restarts and automatically resets all variables. It should look like this:

%declare all variables
Loop
%assign all variables
Loop %main game loop
%game code goes here
Exit when game is lost or won
End loop
End loop
Display posts from previous:   
   Index -> Programming, Turing -> Turing Help
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 2 Posts ]
Jump to:   


Style:  
Search: