
-----------------------------------
programmer_needs_help
Fri Jun 09, 2017 5:28 pm

Programming Enemy Lives In a Game Not Working
-----------------------------------
So I'm making a sword fighting game in which I have to give both the enemy and player lives (so the game isn't incredibly challenging.) Now I've successfully programmed enemy lives but am not having luck programming enemy lives. After the player attacks, the lives of the enemy immediately go to zero and the player wins. This is the section of code that's not functioning:

% 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 = 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 = 100 then
                enemyOneLives := enemyOneLives - 1
                if enemyOneLives = 9 then
                    Sprite.Hide (enemyLifeHeartsSprite)
                    enemyLifeHearts := Pic.FileNew ("enemyHeartsNine.bmp")
                    enemyLifeHearts := Pic.Scale (enemyLifeHearts, 360, 60)
                    Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
                    Sprite.Show (enemyLifeHeartsSprite)
                    Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
                elsif enemyOneLives = 8 then
                    Sprite.Hide (enemyLifeHeartsSprite)
                    enemyLifeHearts := Pic.FileNew ("enemyHeartsEight.bmp")
                    enemyLifeHearts := Pic.Scale (enemyLifeHearts, 320, 60)
                    Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
                    Sprite.Show (enemyLifeHeartsSprite)
                    Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
                elsif enemyOneLives = 7 then
                    Sprite.Hide (enemyLifeHeartsSprite)
                    enemyLifeHearts := Pic.FileNew ("enemyHeartsSeven.bmp")
                    enemyLifeHearts := Pic.Scale (enemyLifeHearts, 280, 60)
                    Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
                    Sprite.Show (enemyLifeHeartsSprite)
                    Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
                elsif enemyOneLives = 6 then
                    Sprite.Hide (enemyLifeHeartsSprite)
                    enemyLifeHearts := Pic.FileNew ("enemyHeartsSix.bmp")
                    enemyLifeHearts := Pic.Scale (enemyLifeHearts, 240, 60)
                    Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
                    Sprite.Show (enemyLifeHeartsSprite)
                    Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
                elsif enemyOneLives = 5 then
                    Sprite.Hide (enemyLifeHeartsSprite)
                    enemyLifeHearts := Pic.FileNew ("enemyHeartsFive.bmp")
                    enemyLifeHearts := Pic.Scale (enemyLifeHearts, 200, 60)
                    Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
                    Sprite.Show (enemyLifeHeartsSprite)
                    Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
                elsif enemyOneLives = 4 then
                    Sprite.Hide (enemyLifeHeartsSprite)
                    enemyLifeHearts := Pic.FileNew ("enemyHeartsFour.bmp")
                    enemyLifeHearts := Pic.Scale (enemyLifeHearts, 160, 60)
                    Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
                    Sprite.Show (enemyLifeHeartsSprite)
                    Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
                elsif enemyOneLives = 3 then
                    Sprite.Hide (enemyLifeHeartsSprite)
                    enemyLifeHearts := Pic.FileNew ("enemyHeartsThree.bmp")
                    enemyLifeHearts := Pic.Scale (enemyLifeHearts, 120, 60)
                    Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
                    Sprite.Show (enemyLifeHeartsSprite)
                    Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
                elsif enemyOneLives = 2 then
                    Sprite.Hide (enemyLifeHeartsSprite)
                    enemyLifeHearts := Pic.FileNew ("enemyHeartsTwo.bmp")
                    enemyLifeHearts := Pic.Scale (enemyLifeHearts, 80, 60)
                    Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
                    Sprite.Show (enemyLifeHeartsSprite)
                    Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
                elsif enemyOneLives = 1 then
                    Sprite.Hide (enemyLifeHeartsSprite)
                    enemyLifeHearts := Pic.FileNew ("enemyHeartsOne.bmp")
                    enemyLifeHearts := Pic.Scale (enemyLifeHearts, 40, 60)
                    Sprite.ChangePic (enemyLifeHeartsSprite, enemyLifeHearts)
                    Sprite.Show (enemyLifeHeartsSprite)
                    Sprite.SetPosition (enemyLifeHeartsSprite, CENTREX + 270, CENTREY + 270, true)
                elsif enemyOneLives = 0 then
                    delay (10)
                    loop
                        Pic.Draw (levelOneComplete, 0, 0, picMerge)
                        Sprite.Hide (lifeHeartsSprite)
                        Sprite.Hide (enemyOneSprite)
                        Sprite.Hide (playerSprite)
                        Sprite.Hide (fireballSprite)
                        Sprite.Hide (enemyLifeHeartsSprite)
                    end loop
                end if
            end if
        end if
        % Reposition The Player On The Screen According To Input
        Sprite.SetPosition (playerSprite, playerXValue, playerYValue, true)
        delay (2)
    end loop
end playerMovement

-----------------------------------
programmer_needs_help
Fri Jun 09, 2017 5:29 pm

RE:Programming Enemy Lives In a Game Not Working
-----------------------------------
This is the code for player lives, which does work:

% Enemy AI
process enemyOneAttack
    var a : int := 0
    loop
        enemyOnePlayerDistance := Math.Distance (playerXValue, playerYValue, enemyOneXValue, enemyOneYValue)
        if enemyOnePlayerDistance >= 100 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 < 100 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

-----------------------------------
programmer_needs_help
Fri Jun 09, 2017 6:39 pm

RE:Programming Enemy Lives In a Game Not Working
-----------------------------------
To anyone trying to help me on this, I figured it out. Thank you!
