
-----------------------------------
WhatAmIDoing
Mon Mar 08, 2004 12:22 pm

Frogger
-----------------------------------
ok guys this is my greatest game of all time frogger.  only no pics i used turing based shapes to do this.
this is a long one but i can't make exe files at school

import GUI
setscreen ("graphics:800;500,nobuttonbar,title:Frogger")
var win, cd : boolean := false
var music : boolean := true
var x, y, f, s : int
var chars : array char of boolean
var font, font2 : int
var a, b, a2, b2, a3, b3, a4, b4, a5, b5, a6, b6, c : int
var a7, b7, a8, b8, a9, b9, a10, b10, a11, b11, a12, b12 : int
var level : int := 1
var score, score2 : int := 0
var name, answer : string
var Delay : int := 30
var lives, timer := 10
var window : int := Window.GetSelect
font := Font.New ("comic sans ms:50")
font2 := Font.New ("comic sans ms:15")
process song
    loop
        if music = false then
            Music.SoundOff
        end if
        if music = true and cd = false then
            randint (f, 1, 4)
            if f = 1 then
                Music.PlayFile ("Faint.wav")
            elsif f = 2 then
                Music.PlayFile ("cd:5")
            elsif f = 3 then
                Music.PlayFile ("Smells.wav")
            elsif f = 4 then
                Music.PlayFile ("blah.wav")
            end if
        end if
        if music = true and cd = true then
            randint (s, 1, 10)
            if s = 1 then
                Music.PlayFile ("cd:1")
            elsif s = 2 then
                Music.PlayFile ("cd:2")
            elsif s = 3 then
                Music.PlayFile ("cd:3")
            elsif s = 4 then
                Music.PlayFile ("cd:4")
            elsif s = 5 then
                Music.PlayFile ("cd:5")
            elsif s = 6 then
                Music.PlayFile ("cd:6")
            elsif s = 7 then
                Music.PlayFile ("cd:7")
            elsif s = 8 then
                Music.PlayFile ("cd:8")
            elsif s = 9 then
                Music.PlayFile ("cd:9")
            elsif s = 10 then
                Music.PlayFile ("cd:10")
            end if
        end if
    end loop
end song
procedure Game
    drawfillbox (0, 0, maxx, maxy, black)
    drawfillbox (0, maxy - 20, maxx, maxy, white)
    drawfillbox (maxx - 300, 0, maxx, 150, blue)
    Font.Draw ("FINISH", maxx div 2, maxy - 20, font2, brightblue)
    Font.Draw (name, 700, 130, font2, white)
    Font.Draw ("Lives:", 500, 20, font2, white)
    Font.Draw (intstr (lives), 575, 20, font2, white)
    Font.Draw ("LVL:", 500, 110, font2, white)
    Font.Draw (intstr (level), 575, 110, font2, white)
    Font.Draw ("Score:", 500, 70, font2, white)
    Font.Draw (intstr (score), 575, 70, font2, white)
    x := maxx div 2
    y := 10
    win := false
    var fileNo : int
    if level > 30 then
        cls
        drawfillbox (0, 0, maxx, maxy, 7)
        Font.Draw ("YOU WIN", maxx div 2 - 400, maxy - 300, font, magenta)
        delay (2000)
        %high scores
        open : fileNo, "High Scores", read, write, mod, seek
        assert fileNo > 0
        cls
        drawfillbox (0, 0, maxx, maxy, 7)
        Font.Draw ("High Scores", 200, maxy - 50, font, brightgreen)
        colorback (black)
        color (white)
        locatexy (maxx div 2 - 300, maxy div 2 + 150)
        put "Name" : 10, "Level" : 10, "Score" : 10
        locatexy (maxx div 2 - 300, maxy div 2 + 190)
        put "----" : 10, "-----" : 10, "-----" : 10
        seek : fileNo, *
        write : fileNo, name, level, score
        locatexy (maxx div 2 - 300, maxy div 2 + 130)
        put name : 10, level : 5, score : 10
        close : fileNo
        delay (5000)
        quit
    elsif lives = 0 then
        cls
        drawfillbox (0, 0, maxx, maxy, 7)
        Font.Draw ("YOU Lose", maxx div 2 - 300, maxy - 300, font, magenta)
        delay (2000)
        drawfillbox (0, 0, maxx, maxy, 7)
        Font.Draw ("High Scores", 200, maxy - 50, font, brightgreen)
        colorback (black)
        color (white)
        locatexy (maxx div 2 - 300, maxy div 2 + 180)
        open : fileNo, "High Scores", read, write, mod, seek
        assert fileNo > 0
        put "Name" : 10, "Level" : 10, "Score" : 10
        locatexy (maxx div 2 - 300, maxy div 2 + 190)
        put "----" : 10, "-----" : 10, "-----" : 10
        seek:fileNo, *
        write : fileNo, name, level, score
        locatexy (maxx div 2 - 300, maxy div 2 + 150)
        put name : 10, level : 5, score : 10
        close : fileNo
        delay (6000)
        quit
    end if
    if level >= 10 then
        Delay := 15
        %starting co-ord for 1st line
        randint (a, 100, maxx div 2)
        randint (b, 150, maxy - 100)
        %starting co-ord for 2nd line
        randint (a2, -1000, 10)
        randint (b2, 150, maxy - 100)
        %starting co-ord for 3rd line
        randint (a3, -1000, 10)
        randint (b3, 150, maxy - 100)
        %starting co-ord for 4th line
        randint (a4, -500, 10)
        randint (b4, 150, maxy - 100)
        %starting co-ord for 5th line
        randint (a5, -150, 0)
        randint (b5, 150, maxy - 100)
        %starting co-ord for 6th line
        randint (a6, -2000, 10)
        randint (b6, 150, maxy - 100)
        %OTHER WAY
        %starting co-ord for 1st line
        randint (a7, maxx - 150, maxx)
        randint (b7, 150, maxy - 100)
        %starting co-ord for 2nd line
        randint (a8, maxx + 1000, maxx + 5000)
        randint (b8, 150, maxy - 100)
        %starting co-ord for 3rd line
        randint (a9, maxx, maxx + 1000)
        randint (b9, 150, maxy - 100)
        %starting co-ord for 4th line
        randint (a10, maxx + 500, maxx + 1000)
        randint (b10, 150, maxy - 100)
        %starting co-ord for 5th line
        randint (a11, maxx div 2, maxx)
        randint (b11, 150, maxy - 100)
        %starting co-ord for 6th line
        randint (a12, maxx, maxx + 2000)
        randint (b12, 150, maxy - 100)
        loop
            colorback (blue)
            color (white)
            %move square
            Input.KeyDown (chars)
            if chars (KEY_UP_ARROW) then
                y += 10
            elsif chars (KEY_DOWN_ARROW) then
                y -= 10
            elsif chars (KEY_LEFT_ARROW) then
                x -= 10
            elsif chars (KEY_RIGHT_ARROW) then
                x += 10
            elsif chars ('n') then
                randint (s, 1, 10)
                fork song
            end if
            %winning
            if y > maxy - 20 then
                win := true
                exit
                %can't go off screen
            elsif x > maxx - 350 and y < 175 then
                x := 0
            elsif y > 175 and x > maxx then
                x := 0
            elsif x < 0 and y < 175 then
                x := maxx - 350
            elsif y > 175 and x < 10 then
                x := maxx
            elsif y < 5 then
                y := 5
            end if
            %  losing
            if x > a - 30 and x < a + 30 and y > b - 15 and y < b + 15 then
                win := false
                exit
            elsif x > a2 - 90 and x < a2 + 30 and y > b2 - 15 and y < b2 + 15 then
                win := false
                exit
            elsif x > a3 - 90 and x < a3 + 30 and y > b3 - 15 and y < b3 + 15 then
                win := false
                exit
            elsif x > a4 - 90 and x < a4 + 30 and y > b4 - 15 and y < b4 + 15 then
                win := false
                exit
            elsif x > a5 - 90 and x < a5 + 30 and y > b5 - 15 and y < b5 + 15 then
                win := false
                exit
            elsif x > a6 - 90 and x < a6 + 30 and y > b6 - 15 and y < b6 + 15 then
                win := false
                exit
            elsif x > a7 - 30 and x < a7 + 90 and y > b7 - 15 and y < b7 + 15 then
                win := false
                exit
            elsif x > a8 - 30 and x < a8 + 90 and y > b8 - 15 and y < b8 + 15 then
                win := false
                exit
            elsif x > a9 - 30 and x < a9 + 90 and y > b9 - 15 and y < b9 + 15 then
                win := false
                exit
            elsif x > a10 - 30 and x < a10 + 90 and y > b10 - 15 and y < b10 + 15 then
                win := false
                exit
            elsif x > a11 - 30 and x < a11 + 90 and y > b11 - 15 and y < b11 + 15 then
                win := false
                exit
            elsif x > a12 - 30 and x < a12 + 90 and y > b12 - 15 and y < b12 + 15 then
                win := false
                exit
            end if
            %draws square
            drawfillbox (x, y, x + 10, y + 10, white)
            delay (Delay)
            drawfillbox (x + 15, y, x + 10, y + 10, black)
            drawfillbox (x - 15, y, x + 10, y + 10, black)
            drawfillbox (x, y + 15, x + 10, y + 10, black)
            drawfillbox (x, y - 15, x + 10, y + 10, black)
            randint (c, 0, maxcolor)
            %moves and draws 1st line
            a += 5
            drawfilloval (a, b, 5, 5, c)
            drawfilloval (a - 90, b, 5, 5, black)
            drawfilloval (a + 10, b, 5, 5, black)
            %moves and draws 2nd line
            a2 += 15
            drawfilloval (a2, b2, 5, 5, c)
            drawfilloval (a2 - 90, b2, 5, 5, black)
            drawfilloval (a2 + 10, b2, 5, 5, black)
            %moves and draws 3rd line
            a3 += 15
            drawfilloval (a3, b3, 5, 5, c)
            drawfilloval (a3 - 90, b3, 5, 5, black)
            drawfilloval (a3 + 10, b3, 5, 5, black)
            %moves and draws 4th line
            a4 += 15
            drawfilloval (a4, b4, 5, 5, c)
            drawfilloval (a4 - 90, b4, 5, 5, black)
            drawfilloval (a4 + 10, b4, 5, 5, black)
            %moves and draws 5th line
            a5 += 30
            drawfilloval (a5, b5, 5, 5, c)
            drawfilloval (a5 - 90, b5, 5, 5, black)
            drawfilloval (a5 + 10, b5, 5, 5, black)
            %moves and draws 6th line
            a6 += 15
            drawfilloval (a6, b6, 5, 5, c)
            drawfilloval (a6 - 90, b6, 5, 5, black)
            drawfilloval (a6 + 10, b6, 5, 5, black)
            %moves and draws 7th line
            a7 -= 5
            drawfilloval (a7, b7, 5, 5, c)
            drawfilloval (a7 + 90, b7, 5, 5, black)
            drawfilloval (a7 - 10, b7, 5, 5, black)
            %moves and draws 8th line
            a8 -= 15
            drawfilloval (a8, b8, 5, 5, c)
            drawfilloval (a8 + 90, b8, 5, 5, black)
            drawfilloval (a8 - 10, b8, 5, 5, black)
            %moves and draws 9th line
            a9 -= 30
            drawfilloval (a9, b9, 5, 5, c)
            drawfilloval (a9 + 90, b9, 5, 5, black)
            drawfilloval (a9 - 10, b9, 5, 5, black)
            %moves and draws 10th line
            a10 -= 15
            drawfilloval (a10, b10, 5, 5, c)
            drawfilloval (a10 + 90, b10, 5, 5, black)
            drawfilloval (a10 - 10, b10, 5, 5, black)
            %moves and draws 11th line
            a11 -= 15
            drawfilloval (a11, b11, 5, 5, c)
            drawfilloval (a11 + 90, b11, 5, 5, black)
            drawfilloval (a11 - 10, b11, 5, 5, black)
            %moves and draws 12th line
            a12 -= 15
            drawfilloval (a12, b12, 5, 5, c)
            drawfilloval (a12 + 90, b12, 5, 5, black)
            drawfilloval (a12 - 10, b12, 5, 5, black)
            if a > maxx + 90 then
                a := -10
            elsif a2 > maxx + 90 then
                a2 := -10
            elsif a3 > maxx + 90 then
                a3 := -10
            elsif a4 > maxx + 90 then
                a4 := -10
            elsif a5 > maxx + 90 then
                a5 := -10
            elsif a6 > maxx + 90 then
                a6 := -10
            elsif a7 < -90 then
                a7 := maxx
            elsif a8 < -90 then
                a8 := maxx
            elsif a9 < -90 then
                a9 := maxx
            elsif a10 < -90 then
                a10 := maxx
            elsif a11 < -90 then
                a11 := maxx
            elsif a12 < -90 then
                a12 := maxx
            end if
        end loop
    elsif level < 10 and level > 0 and timer >= 0 then
        %starting co-ord for 1st line
        randint (a, 100, maxx div 2)
        randint (b, 150, maxy - 100)
        %starting co-ord for 2nd line
        randint (a2, -1000, 10)
        randint (b2, 150, maxy - 100)
        %starting co-ord for 3rd line
        randint (a3, -500, 10)
        randint (b3, 150, maxy - 100)
        %starting co-ord for 4th line
        randint (a4, 1, 10)
        randint (b4, 150, maxy - 100)
        %starting co-ord for 5th line
        randint (a5, -5000, -1000)
        randint (b5, 150, maxy - 100)
        %starting co-ord for 6th line
        randint (a6, -50, 100)
        randint (b6, 150, maxy - 100)
        loop
            colorback (blue)
            color (white)
            %move square
            Input.KeyDown (chars)
            if chars (KEY_UP_ARROW) then
                y += 10
            elsif chars (KEY_DOWN_ARROW) then
                y -= 10
            elsif chars (KEY_LEFT_ARROW) then
                x -= 10
            elsif chars (KEY_RIGHT_ARROW) then
                x += 10
            elsif chars ('n') then
                randint (s, 1, 10)
                fork song
            end if
            %winning
            if y > maxy - 20 then
                win := true
                exit
                %can't go off screen
            elsif x > maxx - 350 and y < 175 then
                x := 0
            elsif y > 175 and x > maxx then
                x := 0
            elsif x < 0 and y < 175 then
                x := maxx - 350
            elsif y > 175 and x < 0 then
                x := maxx
            elsif y < 0 then
                y := 10
            end if
            %  losing
            if x > a - 90 and x < a + 30 and y > b - 15 and y < b + 15 then
                win := false
                exit
            elsif x > a2 - 90 and x < a2 + 30 and y > b2 - 15 and y < b2 + 15 then
                win := false
                exit
            elsif x > a3 - 90 and x < a3 + 30 and y > b3 - 15 and y < b3 + 15 then
                win := false
                exit
            elsif x > a4 - 90 and x < a4 + 30 and y > b4 - 15 and y < b4 + 15 then
                win := false
                exit
            elsif x > a5 - 90 and x < a5 + 30 and y > b5 - 15 and y < b5 + 15 then
                win := false
                exit
            elsif x > a6 - 90 and x < a6 + 30 and y > b6 - 15 and y < b6 + 15 then
                win := false
                exit
            end if
            %draws square
            drawfillbox (x, y, x + 10, y + 10, white)
            delay (Delay)
            drawfillbox (x + 15, y, x + 10, y + 10, black)
            drawfillbox (x - 15, y, x + 10, y + 10, black)
            drawfillbox (x, y + 15, x + 10, y + 10, black)
            drawfillbox (x, y - 15, x + 10, y + 10, black)
            randint (c, 0, maxcolor)
            %moves and draws 1st line
            a += 5
            drawfilloval (a, b, 5, 5, c)
            drawfilloval (a - 90, b, 5, 5, black)
            drawfilloval (a + 10, b, 5, 5, black)
            %moves and draws 2nd line
            a2 += 15
            drawfilloval (a2, b2, 5, 5, c)
            drawfilloval (a2 - 90, b2, 5, 5, black)
            drawfilloval (a2 + 10, b2, 5, 5, black)
            %moves and draws 3rd line
            a3 += 15
            drawfilloval (a3, b3, 5, 5, c)
            drawfilloval (a3 - 90, b3, 5, 5, black)
            drawfilloval (a3 + 10, b3, 5, 5, black)
            %moves and draws 4th line
            a4 += 15
            drawfilloval (a4, b4, 5, 5, c)
            drawfilloval (a4 - 90, b4, 5, 5, black)
            drawfilloval (a4 + 10, b4, 5, 5, black)
            %moves and draws 5th line
            a5 += 15
            drawfilloval (a5, b5, 5, 5, c)
            drawfilloval (a5 - 90, b5, 5, 5, black)
            drawfilloval (a5 + 10, b5, 5, 5, black)
            %moves and draws 6th line
            a6 += 30
            drawfilloval (a6, b6, 5, 5, c)
            drawfilloval (a6 - 90, b6, 5, 5, black)
            drawfilloval (a6 + 10, b6, 5, 5, black)
            if a > maxx + 90 then
                a := -10
            elsif a2 > maxx + 90 then
                a2 := -10
            elsif a3 > maxx + 90 then
                a3 := -10
            elsif a4 > maxx + 90 then
                a4 := -10
            elsif a5 > maxx + 90 then
                a5 := -10
            elsif a6 > maxx + 90 then
                a6 := -10
            end if
        end loop
    end if
    if win = true then
        cls
        drawfillbox (0, 0, maxx, maxy, black)
        Font.Draw ("You win!! Next LVL", maxx div 2 - 300, maxy div 2, font, brightgreen)
        var NextButton := GUI.CreateButton (100, 200, 0, "Next LVL", Game)
        var QuitButton := GUI.CreateButton (100, 100, 0, "QUIT", GUI.Quit)
        GUI.SetDefault (NextButton, true)
        level += 1
        Delay -= 2
        score += 10
        score2 := score
        if score2 = 50 then
            score2 := 0
            lives += 1
        end if
    elsif win = false then
        cls
        drawfillbox (0, 0, maxx, maxy, black)
        Font.Draw ("You lose!! Try again", maxx div 2 - 300, maxy div 2, font, brightgreen)
        var TryButton := GUI.CreateButton (100, 200, 0, "TRY AGAIN", Game)
        var QuitButton := GUI.CreateButton (100, 100, 0, "QUIT", GUI.Quit)
        GUI.SetDefault (TryButton, true)
        score -= 5
        lives -= 1
    end if
end Game
delay (100)
drawfillbox (0, 0, maxx, maxy, 7)
colorback (black)
color (white)
loop
    put "Enter your Name: " ..
    get name : *
    if length (name) > 9 then
        put "That name is too long try again!"
    elsif length (name) < 2 then
        put "That name is too short try again!"
    end if
    exit when length (name) < 9 and length (name) > 2
end loop
loop
    put "Sound on/off: " ..
    get answer
    if answer = "On" or answer = "on" then
        music := true
    elsif answer = "Off" or answer = "off" then
        music := false
    else
        put "On/Off"
    end if
    exit when answer = "On" or answer = "on" or answer = "Off" or answer = "off"
end loop
loop
    put "Soundtrack-game or own: " ..
    get answer
    if answer = "Game" or answer = "game" then
        cd := false
    elsif answer = "Own" or answer = "own" then
        cd := true
        put "Enter a cd to play from"
        put "Push the 'n' key to change songs"
        delay (1000)
    else
        put "On/Off"
    end if
    exit when answer = "Game" or answer = "game" or answer = "Own" or answer = "own"
end loop
colorback (blue)
color (white)
fork song
Game
loop
    exit when GUI.ProcessEvent
end loop
var fileNo : int
%high scores
open : fileNo, "High Scores", read, write, mod, seek
assert fileNo > 0
cls
drawfillbox (0, 0, maxx, maxy, 7)
Font.Draw ("High Scores", 200, maxy - 50, font, brightgreen)
colorback (black)
color (white)
locatexy (maxx div 2 - 300, maxy div 2 + 200)
put "Name" : 10, "Level" : 10, "Score" : 10
locatexy (maxx div 2 - 300, maxy div 2 + 190)
put "----" : 10, "-----" : 10, "-----" : 10
seek : fileNo, *
write : fileNo, name, level, score
locatexy (maxx div 2 - 300, maxy div 2 + 180)
put name : 10, level : 5, score : 10
close : fileNo
