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

Username:   Password: 
 RegisterRegister   
 whak-a-mole
Index -> Programming, Turing -> Turing Submissions
Goto page 1, 2  Next
View previous topic Printable versionDownload TopicRate TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
guttface




PostPosted: Tue Mar 02, 2004 9:22 pm   Post subject: whak-a-mole

hey. heres the code to a whak-a-mole im workin on. let me know what you think.
code:
setscreen ("graphics:340;360,position:300;200,nocursor,title:Whak-A-Mole")

var name : string
var sound1 : string
var molenum : int
var molenum2 : int
var difficulty : string (1)
var delay1 : int
var x : int := 60
var y : int := 60
var x1 : int := 60
var y1 : int := 60
var x2 : int := 60
var y2 : int := 60
var timeremain : int := 30
var timeposition : int := maxcol - 3
var gameover : int := 0
var countdownnum : int := 6
var btnnum : int
var btnupdn : int
var moux : int
var mouy : int
var moux1 : int
var mouy1 : int
var score : int := 0
var duration : int
var duration2 : int
var streamNumber : int
var filename : string
var hiscore : array 1 .. 10 of int
var hiscorer : array 1 .. 10 of string
var scorerank : int := 11
var scorerankword : string
var newhigh : string := ""
var count : int := 11
var endprog : string (1)
var fontId : int := Font.New ("verdana:34:bold")
var a : int := 0000
var c : int := 0000
var x4 : int := 10
var y4 : int := 210
var text : string := "Matt"
var buffer : string := ""
var x3 : array 1 .. length (text) of int
var y3 : array 1 .. length (text) of int

colourback (7)
cls

Font.Draw ("WHAK-A-MOLE", 10, 315, fontId, 2)
delay (500)
Font.Draw ("BY:", 10, 265, fontId, 3)
delay (250)
fontId := Font.New ("verdana:45:bold")

for i : 1 .. length (text)
    x3 (i) := x4 + Font.Width (buffer, fontId)
    y3 (i) := y4
    buffer += text (i)
end for

for decreasing i : length (text) .. 1
    for k : 1 .. x3 (i)
        Font.Draw (text (i), k, y3 (i), fontId, 14)
        delay (1)
        drawline (k - 1, y3 (i) - 5, k - 1, y3 (i) + 50, 7)
        Font.Draw (text (i), k - 2, y3 (i), fontId, 7)
    end for
    Font.Draw (text (i), x3 (i), y3 (i), fontId, 14)
    delay (50)
end for

a := 0000
c := 0000
x4 := 10
y4 := 160
text := "Guttman"
buffer := ""
var x5 : array 1 .. length (text) of int
var y5 : array 1 .. length (text) of int


for i : 1 .. length (text)
    x5 (i) := x4 + Font.Width (buffer, fontId)
    y5 (i) := y4
    buffer += text (i)
end for

for decreasing i : length (text) .. 1
    for k : 1 .. x5 (i)
        Font.Draw (text (i), k, y5 (i), fontId, 43)
        delay (1)
        drawline (k - 1, y5 (i) - 5, k - 1, y5 (i) + 50, 7)
        Font.Draw (text (i), k - 2, y5 (i), fontId, 7)
    end for
    Font.Draw (text (i), x5 (i), y5 (i), fontId, 43)
    delay (50)
end for

delay (100)

for count1 : 1 .. 2
    drawfilloval (75, 10, 40, 10, 7)
    drawfillbox (65, 15, 125, 55, 7)


    drawfilloval (75, 46, 40, 40, 4)
    drawfilloval (55, 66, 5, 5, 2)
    drawfilloval (95, 66, 5, 5, 2)
    drawarc (75, 26, 20, 10, 180, 0, 2)

    drawfillbox (110, 80, 150, 100, 0)
    drawfillbox (125, 30, 135, 80, 0)

    delay (500)

    drawfilloval (75, 46, 40, 40, 7)
    drawfillbox (110, 30, 150, 100, 7)

    drawfilloval (75, 10, 40, 4, 4)
    drawfilloval (55, 12, 1, 1, 2)
    drawfilloval (95, 12, 1, 1, 2)
    drawarc (75, 8, 20, 1, 180, 0, 2)

    drawfillbox (65, 15, 85, 55, 0)
    drawfillbox (85, 30, 135, 40, 0)

    delay (500)
end for

drawfilloval (75, 10, 40, 10, 7)
drawfillbox (65, 15, 125, 55, 7)


drawfilloval (75, 46, 40, 40, 4)
drawfilloval (55, 66, 5, 5, 2)
drawfilloval (95, 66, 5, 5, 2)
drawarc (75, 26, 20, 10, 180, 0, 2)

drawfillbox (110, 80, 150, 100, 0)
drawfillbox (125, 30, 135, 80, 0)

delay (500)

colourback (0)
cls
setscreen ("cursor")

loop
    cls
    put "Enter your name:   " ..
    get name : *
    exit when length (name) > 2 and length (name) < 19

    if length (name) < 3 then
        cls
        setscreen ("nocursor,noecho")
        put "THAT NAME IS TOO SHORT!"
        delay (2000)
        setscreen ("cursor,echo")
    elsif length (name) > 18 then
        cls
        setscreen ("nocursor,noecho")
        put "THAT NAME IS TOO LONG!"
        delay (2000)
        setscreen ("cursor,echo")
    end if
end loop

loop
    cls
    put "Enter difficulty 1-3:   " ..
    getch (difficulty)
    exit when difficulty = "1" or difficulty = "2" or difficulty = "3"
end loop

loop
    cls
    put "Sound on or off?   " ..
    get sound1
    exit when sound1 = "on" or sound1 = "off"
end loop

cls

setscreen ("nocursor,noecho")

if difficulty = "1" then
    delay1 := 250
    duration := 120
    duration2 := 60
    filename := Dir.Current + "\\highscore1"
elsif difficulty = "2" then
    delay1 := 125
    duration := 237
    duration2 := 118
    filename := Dir.Current + "\\highscore2"
elsif difficulty = "3" then
    delay1 := 63
    duration := 470
    duration2 := 234
    filename := Dir.Current + "\\highscore3"
end if

if sound1 = "on" then
    sound1 := "<<1c"
else
    sound1 := ""
end if

drawbox (0, 0, 340, 340, 17)
drawbox (10, 10, 330, 330, 17)
drawfill (5, 5, 17, 17)
drawfillbox (110, 0, 120, 340, 17)
drawfillbox (220, 0, 230, 340, 17)
drawfillbox (0, 110, 340, 120, 17)
drawfillbox (0, 220, 340, 230, 17)

procedure countdown
    loop
        countdownnum := countdownnum - 1
        locate ( (maxrow div 2) + 1, maxcol div 2)
        put countdownnum
        delay (1000)
        exit when countdownnum = 0
    end loop
    locate ( (maxrow div 2) + 1, maxcol div 2)
    put " "
end countdown

process timer
    loop
        timeremain := timeremain - 1
        if timeremain < 10 then
            locate (1, maxcol - 3)
            put "0"
            timeposition := maxcol - 2
        end if
        locate (1, timeposition)
        put timeremain
        delay (1000)
        exit when timeremain = 0
    end loop
    gameover := 1
end timer

process drawmole
    for count : 1 .. duration
        randint (molenum, 1, 9)
        if molenum = 1 then
            x := 60
            y := 60
        elsif molenum = 2 then
            x := 170
            y := 60
        elsif molenum = 3 then
            x := 280
            y := 60
        elsif molenum = 4 then
            x := 60
            y := 170
        elsif molenum = 5 then
            x := 170
            y := 170
        elsif molenum = 6 then
            x := 280
            y := 170
        elsif molenum = 7 then
            x := 60
            y := 280
        elsif molenum = 8 then
            x := 170
            y := 280
        elsif molenum = 9 then
            x := 280
            y := 280
        end if
        drawfilloval (x, y, 40, 40, 4)
        drawfilloval (x - 20, y + 20, 5, 5, 2)
        drawfilloval (x + 20, y + 20, 5, 5, 2)
        drawarc (x, y - 20, 20, 10, 180, 0, 2)
        delay (delay1)
    end for
end drawmole

process manerasemole (moux1 : int, mouy1 : int)
    if moux1 > 18 and moux1 < 102 and mouy1 > 18 and mouy1 < 102 then
        x1 := 60
        y1 := 60
    elsif moux1 > 128 and moux1 < 212 and mouy1 > 18 and mouy1 < 102 then
        x1 := 170
        y1 := 60
    elsif moux1 > 238 and moux1 < 322 and mouy1 > 18 and mouy1 < 102 then
        x1 := 280
        y1 := 60
    elsif moux1 > 18 and moux1 < 102 and mouy1 > 128 and mouy1 < 212 then
        x1 := 60
        y1 := 170
    elsif moux1 > 128 and moux1 < 212 and mouy1 > 128 and mouy1 < 212 then
        x1 := 170
        y1 := 170
    elsif moux1 > 238 and moux1 < 322 and mouy1 > 128 and mouy1 < 212 then
        x1 := 280
        y1 := 170
    elsif moux1 > 18 and moux1 < 102 and mouy1 > 238 and mouy1 < 322 then
        x1 := 60
        y1 := 280
    elsif moux1 > 128 and moux1 < 212 and mouy1 > 238 and mouy1 < 322 then
        x1 := 170
        y1 := 280
    elsif moux1 > 238 and moux1 < 322 and mouy1 > 238 and mouy1 < 322 then
        x1 := 280
        y1 := 280
    end if
    drawfilloval (x1, y1, 40, 40, 0)
    play (sound1)
    score := score + 100
    locate (1, (maxcol div 2) - 1)
    put score
end manerasemole

process autoerasemole
    delay (500)
    for count : 1 .. duration2
        randint (molenum2, 1, 9)
        if molenum2 = 1 then
            x2 := 60
            y2 := 60
        elsif molenum2 = 2 then
            x2 := 170
            y2 := 60
        elsif molenum2 = 3 then
            x2 := 280
            y2 := 60
        elsif molenum2 = 4 then
            x2 := 60
            y2 := 170
        elsif molenum2 = 5 then
            x2 := 170
            y2 := 170
        elsif molenum2 = 6 then
            x2 := 280
            y2 := 170
        elsif molenum = 7 then
            x2 := 60
            y2 := 280
        elsif molenum2 = 8 then
            x2 := 170
            y2 := 280
        elsif molenum2 = 9 then
            x2 := 280
            y2 := 280
        end if
        drawfilloval (x2, y2, 40, 40, 0)
        delay (delay1 * 2)
    end for
end autoerasemole

procedure checkhighscore
    for decreasing i : 10 .. 1
        if score > hiscore (i) then
            scorerank := i
        end if
    end for
end checkhighscore

procedure changescorelist
    loop
        count := count - 1
        exit when scorerank = count
        hiscore (count) := hiscore (count - 1)
    end loop
    hiscore (count) := score
    count := 11
    loop
        count := count - 1
        exit when scorerank = count
        hiscorer (count) := hiscorer (count - 1)
    end loop
    hiscorer (count) := name
end changescorelist

locate (1, 1)
put "                                       "
locate (1, 1)
put name
locate (1, maxcol div 2)
put "0"
locate (1, timeposition)
put "30"

countdown
fork timer
fork drawmole
fork autoerasemole

loop
    if buttonmoved ("down") then
        buttonwait ("down", moux, mouy, btnnum, btnupdn)
        if whatdotcolour (moux, mouy) = 4 or whatdotcolour (moux, mouy) = 2
            then
            fork manerasemole (moux, mouy)
        end if
    end if
    exit when gameover = 1
end loop

delay (500)

open : streamNumber, filename, get
if streamNumber > 0 then
    for i1 : 1 .. 10
        get : streamNumber, hiscore (i1)
    end for
    for i2 : 1 .. 10
        get : streamNumber, hiscorer (i2) : *
    end for
    close : streamNumber
else
    for i3 : 1 .. 10
        hiscore (1) := 10000
        hiscore (2) := 9000
        hiscore (3) := 8000
        hiscore (4) := 7000
        hiscore (5) := 6000
        hiscore (6) := 5000
        hiscore (7) := 4000
        hiscore (8) := 3000
        hiscore (9) := 2000
        hiscore (10) := 1000
    end for
    for i4 : 1 .. 10
        hiscorer (i4) := "Matt Guttman"
    end for
end if

checkhighscore

if scorerank < 11 then
    scorerankword := intstr (scorerank)
    newhigh := "NEW HIGH SCORE #" + scorerankword + "!"
    changescorelist
end if

cls
locate (1, (maxcol div 2) - 4)
put "GAME OVER"
put skip
put "Your score: ", score, "   ", newhigh
locate (6, (maxcol div 2) - 5)
put "HIGH SCORES"
put skip

for i5 : 1 .. 10
    put hiscorer (i5) : 20, hiscore (i5)
end for

open : streamNumber, filename, put
assert streamNumber > 0
for i6 : 1 .. 10
    put : streamNumber, hiscore (i6)
end for
for i7 : 1 .. 10
    put : streamNumber, hiscorer (i7)
end for
close : streamNumber

put skip
put "Press any key to exit"
getch (endprog)
Sponsor
Sponsor
Sponsor
sponsor
jonos




PostPosted: Tue Mar 02, 2004 9:55 pm   Post subject: (No subject)

ive seen that before, i think you've already posted it, or you stole it i don't know.

nice work, but the countdown for the beginning could make use of font.draw so that it doesn't cut out the graphics, or you can just put the graphics above it. anyways, nice work and graphics,.
omni




PostPosted: Wed Mar 03, 2004 12:45 pm   Post subject: (No subject)

the program is similiar to my target program, with the recoil. I think that might be where you saw it, or he got some of it from the textbook.
But good program nonetheless
G-lant




PostPosted: Wed Mar 03, 2004 1:53 pm   Post subject: (No subject)

This is good, and I wont knock you because im not good,but I knoiw my video games and what up with on the right, the second 'level' why is there cuts in th blocks?? and how come its like uber hard? and the second is easer?? o well its still prety cool... and I like it? Rolling Eyes
guttface




PostPosted: Wed Mar 03, 2004 3:59 pm   Post subject: (No subject)

its my code. u might of seen it cuz i posted it in submisions, but that was a compiled version- not the code.
xHoly-Divinity




PostPosted: Thu Feb 24, 2005 4:29 pm   Post subject: (No subject)

It would be better if you had an actual high score system instead of a fake. You can check it out in tutorials i have a fairly simple version of saving high score
person




PostPosted: Thu Feb 24, 2005 4:51 pm   Post subject: (No subject)

nice game except i didnt understand y there were spaces in the walls
Carino




PostPosted: Thu Feb 24, 2005 10:35 pm   Post subject: (No subject)

The spacers are there because of the text in the middle of the screen (the countdown). It continues to the end of the screen so it cuts through the walls. He should use the ".." to stop it.
ssr




PostPosted: Thu Feb 24, 2005 10:50 pm   Post subject: (No subject)

It's a nice game,. although there can be improvements and graphics can be better, but a nice game overall Laughing Laughing
jamonathin




PostPosted: Fri Feb 25, 2005 9:01 am   Post subject: (No subject)

Not bad game, you should just save some lines and var mreo variables in one line, and to get rid of putting holes in the walls (which is from your countdown) just put two ..'s after your text

ex.
code:

put countdownnum  ..
jamonathin




PostPosted: Fri Feb 25, 2005 9:04 am   Post subject: (No subject)

. . . i didn't even realize this was posted almost a year ago Doh!
ssr




PostPosted: Fri Feb 25, 2005 7:11 pm   Post subject: (No subject)

ooo Laughing Laughing
yaya I didnt realize it either...
just following others and posted my opinion Laughing
MysticVegeta




PostPosted: Sat Feb 26, 2005 4:26 pm   Post subject: (No subject)

You can use ->

var one, two, three : int

saves lines..
dann_west




PostPosted: Wed May 04, 2005 1:41 pm   Post subject: Re: whak-a-mole

I liked it i got 6800 points!
Twisted Evil Twisted Evil Twisted Evil Twisted Evil Twisted Evil Twisted Evil Twisted Evil
The_$hit




PostPosted: Thu May 05, 2005 11:09 am   Post subject: (No subject)

When i compile it it stops and says that array subscipt is out of range.
Display posts from previous:   
   Index -> Programming, Turing -> Turing Submissions
View previous topic Tell A FriendPrintable versionDownload TopicRate TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 2  [ 17 Posts ]
Goto page 1, 2  Next
Jump to:   


Style:  
Search: