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

Username:   Password: 
 RegisterRegister   
 racing games laps reseting and such
Index -> Programming, Turing -> Turing Help
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
cazo375




PostPosted: Tue Jan 13, 2009 6:56 pm   Post subject: racing games laps reseting and such

i am making a racing game for my isu and i have a few problems
such as:
- laps don't decrease
- cars don't rest after race
help is much appreciated
here is code:

Turing:
View.Set ("offscreenonly")
var chars : array char of boolean
var chars2 : array char of boolean
var pic := Pic.FileNew ("G:/racers/car1.jpg")
var pic2 := Pic.FileNew ("G:/racers/race track.jpg")
var pic3 := Pic.FileNew ("G:/racers/car2.jpg")
var font : int
var player : string (1)
var car := pic
var car2 := pic3
var counter := 0
var counter2 := 0
var x, y : real := 5
var x2, y2 : real := 5
var picRotated : array 0 .. 35 of int
var picRotated2 : array 0 .. 35 of int
var lap, lap2 : int
for rep : 0 .. 35
    picRotated (rep) := Pic.Rotate (pic, rep * 10, Pic.Width (pic) div 2 + 7, Pic.Height (pic) div 2 + 5)
end for
for rep2 : 0 .. 35
    picRotated2 (rep2) := Pic.Rotate (pic3, rep2 * 10, Pic.Width (pic3) div 2 + 7, Pic.Height (pic3) div 2 + 5)
end for
font := Font.New ("Agency FB:18")
loop
    x := 0
    y := 0
    x2 := 0
    y2 := 0
    lap := 3
    lap2 := 3
    getch (player)
    if player = "1" then
        setscreen ("graphics:400,400")
        View.Set ("offscreenonly")
        loop
            drawfill (0, 0, 40, 40)
            drawfillbox (0, 0, 400, 400, 7)
            drawfillbox (50, 50, 350, 350, 2)
            drawfillbox (0, 50, 50, 70, 0)
            drawfillbox (0, 50, 5, 55, 7)
            drawfillbox (0, 60, 5, 65, 7)
            drawfillbox (5, 55, 10, 60, 7)
            drawfillbox (5, 65, 10, 70, 7)
            drawfillbox (10, 50, 15, 55, 7)
            drawfillbox (10, 60, 15, 65, 7)
            drawfillbox (15, 55, 20, 60, 7)
            drawfillbox (15, 65, 20, 70, 7)
            drawfillbox (20, 50, 25, 55, 7)
            drawfillbox (20, 60, 25, 65, 7)
            drawfillbox (25, 55, 30, 60, 7)
            drawfillbox (25, 65, 30, 70, 7)
            drawfillbox (30, 50, 35, 55, 7)
            drawfillbox (30, 60, 35, 65, 7)
            drawfillbox (35, 55, 40, 60, 7)
            drawfillbox (35, 65, 40, 70, 7)
            drawfillbox (40, 50, 45, 55, 7)
            drawfillbox (40, 60, 45, 65, 7)
            drawfillbox (45, 55, 50, 65, 7)
            drawfillbox (45, 65, 50, 70, 7)
            drawfillbox (45, 60, 50, 65, 0)
            drawfillmapleleaf (125, 125, 275, 275, 40)
            Font.Draw ("MINI RACERS", 155, 185, font, 0)
            Font.Draw ("laps to go", 155, 75, font, 0)
            put lap
            Input.KeyDown (chars)
            if chars (KEY_RIGHT_ARROW) then
                counter -= 1
                car := picRotated (counter mod 36)
            end if
            if chars (KEY_LEFT_ARROW) then
                counter += 1
                car := picRotated (counter mod 36)
            end if
            if chars (KEY_UP_ARROW) then
                x += cosd ((counter mod 36) * 10 + 90) * 5
                y += sind ((counter mod 36) * 10 + 90) * 5
            end if
            if chars (KEY_DOWN_ARROW) then
                x -= cosd ((counter mod 36) * 10 + 90) * 5
                y -= sind ((counter mod 36) * 10 + 90) * 5
            end if
            Pic.Draw (car, round (x), round (y), picMerge)
            View.Update
            cls
            delay (25)
            if x <= 1 then
                x := x + 3
            end if
            if x >= 365 then
                x := x - 3
            end if
            if y <= 1 then
                y := y + 3
            end if
            if y >= 360 then
                y := y - 3
            end if
            if x <= 50 and y = 70 then
                lap := lap - 1
                delay (50)
            end if
            if lap = 0 then
                exit
            end if
        end loop
    elsif player = "2" then
        setscreen ("graphics:400,400")
        View.Set ("offscreenonly")
        loop

            drawfill (0, 0, 40, 40)
            drawfillbox (0, 0, 400, 400, 7)
            drawfillbox (50, 50, 350, 350, 2)
            drawfillbox (0, 50, 50, 70, 0)
            drawfillbox (0, 50, 5, 55, 7)
            drawfillbox (0, 60, 5, 65, 7)
            drawfillbox (5, 55, 10, 60, 7)
            drawfillbox (5, 65, 10, 70, 7)
            drawfillbox (10, 50, 15, 55, 7)
            drawfillbox (10, 60, 15, 65, 7)
            drawfillbox (15, 55, 20, 60, 7)
            drawfillbox (15, 65, 20, 70, 7)
            drawfillbox (20, 50, 25, 55, 7)
            drawfillbox (20, 60, 25, 65, 7)
            drawfillbox (25, 55, 30, 60, 7)
            drawfillbox (25, 65, 30, 70, 7)
            drawfillbox (30, 50, 35, 55, 7)
            drawfillbox (30, 60, 35, 65, 7)
            drawfillbox (35, 55, 40, 60, 7)
            drawfillbox (35, 65, 40, 70, 7)
            drawfillbox (40, 50, 45, 55, 7)
            drawfillbox (40, 60, 45, 65, 7)
            drawfillbox (45, 55, 50, 65, 7)
            drawfillbox (45, 65, 50, 70, 7)
            drawfillbox (45, 60, 50, 65, 0)
            drawfillmapleleaf (125, 125, 275, 275, 40)
            Font.Draw ("MINI RACERS", 155, 185, font, 0)
            put lap, " ", lap2
            Input.KeyDown (chars2)
            if chars2 ('d') then
                counter2 -= 1
                car2 := picRotated2 (counter2 mod 36)
            end if
            if chars2 ('a') then
                counter2 += 1
                car2 := picRotated2 (counter2 mod 36)
            end if
            if chars2 ('w') then
                x2 += cosd ((counter2 mod 36) * 10 + 90) * 5
                y2 += sind ((counter2 mod 36) * 10 + 90) * 5
            end if
            if chars2 ('s') then
                x2 -= cosd ((counter2 mod 36) * 10 + 90) * 5
                y2 -= sind ((counter2 mod 36) * 10 + 90) * 5
            end if
            Pic.Draw (car2, round (x2), round (y2), picMerge)
            View.Update

            Input.KeyDown (chars)
            if chars (KEY_RIGHT_ARROW) then
                counter -= 1
                car := picRotated (counter mod 36)
            end if
            if chars (KEY_LEFT_ARROW) then
                counter += 1
                car := picRotated (counter mod 36)
            end if
            if chars (KEY_UP_ARROW) then
                x += cosd ((counter mod 36) * 10 + 90) * 5
                y += sind ((counter mod 36) * 10 + 90) * 5
            end if
            if chars (KEY_DOWN_ARROW) then
                x -= cosd ((counter mod 36) * 10 + 90) * 5
                y -= sind ((counter mod 36) * 10 + 90) * 5
            end if
            Pic.Draw (car, round (x), round (y), picMerge)
            View.Update
            cls
            delay (25)
            if x <= 1 then
                x := x + 3
            end if
            if x >= 365 then
                x := x - 3
            end if
            if y <= 1 then
                y := y + 3
            end if
            if y >= 360 then
                y := y - 3
            end if
            if x2 <= 1 then
                x2 := x2 + 3
            end if
            if y2 <= 1 then
                y2 := y2 + 3
            end if
            if y2 >= 360 then
                y2 := y2 - 3
            end if
            if x2 >= 365 then
                x2 := x2 - 3
            end if
            if x <= 50 and y = 70 then
                lap := lap - 1
                delay (50)
            end if
            if x2 <= 50 and y2 = 70 then
                lap2 := lap2 - 1
                delay (50)
            end if
            if lap = 0 then
                cls
                put "PLAYER 1 WINS"
                exit
            end if
            if lap2 = 0 then
                cls
                put "PLAYER 2 WINS"
                exit
            end if
        end loop
    end if
end loop


Very Happy



Mod Edit: Remember to use syntax tags! Thanks Smile
code:
[syntax="turing"]Code Here[/syntax]
Sponsor
Sponsor
Sponsor
sponsor
TheGuardian001




PostPosted: Tue Jan 13, 2009 8:17 pm   Post subject: Re: racing games laps reseting and such

code:

if x <= 50 and y = 70 then
    lap := lap - 1
    delay (50)
end if

Do you realize exactly how precise that is?
your if statment says that their x must be less than 50 and their y must be exactly equal to 70. think about how often

y -= sind ((counter mod 36) * 10 + 90) * 5

will be exactly 70. it is essentially guaranteed not to happen.

fix the ranges on your collisions, and find a way to make sure they leave this range before decreasing the lap number, and your program should work much better.
cazo375




PostPosted: Tue Jan 13, 2009 8:33 pm   Post subject: Re: racing games laps reseting and such

i wanted to make a shot finish line to cross for the laps
Parker




PostPosted: Wed Jan 14, 2009 8:29 am   Post subject: RE:racing games laps reseting and such

Could you include the pictures so the game can be tested?
cazo375




PostPosted: Wed Jan 14, 2009 9:51 am   Post subject: Re: racing games laps reseting and such

here are the car pictures the track is uneed


car2.JPG
 Description:
 Filesize:  1.95 KB
 Viewed:  1301 Time(s)

car2.JPG



car1.JPG
 Description:
 Filesize:  1.87 KB
 Viewed:  1301 Time(s)

car1.JPG


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  [ 5 Posts ]
Jump to:   


Style:  
Search: