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

Username:   Password: 
 RegisterRegister   
 Game Speed Trouble?!?!
Index -> Programming, Turing -> Turing Help
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
Gooie




PostPosted: Fri Nov 02, 2007 10:28 pm   Post subject: Game Speed Trouble?!?!

I am just starting out with Turing, and wanted to do a simple game, so of course Pong came to mind. I worked on it on and off for a bout a month, and figured out collision. But, when I got it done. I can't seem to fine tune the speed. Because depending on the speed of the computer the game is faster or slower. How would I go about changing that? Here's the source. Also any idea how to make my code more efficient, or better? I'll consider all sugestions.
Quote:

%--------------------Pong V1.0--------------------%
%-This software is licensed under the CC-GNU GPL.-%
%-------------------Mackie Drew-------------------%
%--------------------09/21/2007-------------------%

% Graphic Modes
View.Set ("offscreenonly,nobuttonbar,title:Pong")

% Define Variables
var key : array char of boolean
var right_x, right_y, left_x, left_y, ball_x, ball_y, speed, ball_dir, font, left_points, right_points : int

% Variable Assignments
left_x := 0
left_y := 170
right_x := 629
right_y := 170
ball_x := Rand.Int (100, 540)
ball_y := Rand.Int (100, 240)
speed := 1
left_points := 0
right_points := 0
ball_dir := Rand.Int (0, 3)
font := Font.New ("serif:36")

% Main Game Loop
loop

% Draw Objects
Draw.FillOval (ball_x, ball_y, 4, 4, black)
Draw.FillBox (right_x, right_y, right_x + 10, right_y + 60, black)
Draw.FillBox (left_x, left_y, left_x + 10, left_y + 60, black)
Draw.Line (0, maxy - 18, maxx, maxy - 18, 1)
locate (1, 2)
put left_points
locate (1, 79)
put right_points

/*
Direction Map
0 = Right Up
1 = Right Down
2 = Left Down
3 = Left Up
*/

% Ball Movement
if ball_dir = 0 then % Right Up

ball_x += speed
ball_y += speed

if ball_y > right_y and ball_y < right_y + 60 and ball_x + 5 = maxx - 10 and (ball_dir = 0 or ball_dir = 1) then
ball_dir := 3
elsif ball_y = maxy - 24 then
ball_dir := 1
elsif ball_x = maxx then
ball_dir := 3
end if

elsif ball_dir = 1 then % Right Down

ball_x += speed
ball_y -= speed

if ball_y > right_y and ball_y < right_y + 60 and ball_x + 5 = maxx - 10 and (ball_dir = 0 or ball_dir = 1) then
ball_dir := 2

elsif ball_y = 0 then
ball_dir := 0

elsif ball_x = maxx then
ball_dir := 2
end if

elsif ball_dir = 2 then % Left Down

ball_x -= speed
ball_y -= speed

if ball_y > left_y and ball_y < left_y + 60 and ball_x = 10 and (ball_dir = 2 or ball_dir = 3) then
ball_dir := 1
elsif ball_x = 0 then
ball_dir := 1
elsif ball_y = 0 then
ball_dir := 3
end if

elsif ball_dir = 3 then % Left Up

ball_x -= speed
ball_y += speed

if ball_y = maxy - 24 then
ball_dir := 2

elsif ball_x = 0 then
ball_dir := 0

elsif ball_y > left_y and ball_y < left_y + 60 and ball_x = 10 and (ball_dir = 2 or ball_dir = 3) then
ball_dir := 0
end if

end if

% Point System
if ball_x = 0 then
right_points += 1
end if

if ball_x = maxx then
left_points += 1
end if

% Ask For Keys
Input.KeyDown (key)

% Left Paddle Movement Keys
if key (chr (119)) and left_y < maxy - 80 then % if key W

left_y += speed

elsif key (chr (115)) and left_y > 0 then % if key S

left_y -= speed

end if

% Right Paddle Movement Keys
if key (KEY_UP_ARROW) and right_y < maxy - 80 then % if key up arrow

right_y += speed

elsif key (KEY_DOWN_ARROW) and right_y > 0 then % if key down arrow

right_y -= speed

end if

%Update Graphics
View.Update
Draw.Cls
delay (4)
exit when right_points = 12 or left_points = 12
end loop

if right_points = 12 then
Draw.Text ("RIGHT PLAYER WINS!", 70, 190, font, black)
elsif left_points = 12 then
Draw.Text ("LEFT PLAYER WINS!", 100, 190, font, black)
end if
[/quote]
Sponsor
Sponsor
Sponsor
sponsor
CodeMonkey2000




PostPosted: Fri Nov 02, 2007 10:34 pm   Post subject: RE:Game Speed Trouble?!?!

This code is crying for a collide function. But I doubt you know about functions. About the speed try replacing Draw.Cls with Time.DelaySinceLast(round(1000/65)) for a smooth 65 frames per second.
Gooie




PostPosted: Fri Nov 02, 2007 10:49 pm   Post subject: Re: RE:Game Speed Trouble?!?!

CodeMonkey2000 @ November 2nd, 10:34 pm wrote:
This code is crying for a collide function. But I doubt you know about functions. About the speed try replacing Draw.Cls with Time.DelaySinceLast(round(1000/65)) for a smooth 65 frames per second.


Awesome! Thanks! Time.DelaySinceLast(round(1000/65)) fixed the problem. Now, how would I go about using these collide functions? I really need a simpler way to make collision.
CodeMonkey2000




PostPosted: Sat Nov 03, 2007 12:05 am   Post subject: RE:Game Speed Trouble?!?!

You have to create your own collide function. Look up functions on the Turing Walkthrough. You already know how to look for collisions, so apply it in a function.
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  [ 4 Posts ]
Jump to:   


Style:  
Search: