Frames per seconds, y doesn't it work?
Author |
Message |
AsianSensation
|
Posted: Sun Apr 20, 2003 5:03 pm Post subject: Frames per seconds, y doesn't it work? |
|
|
I just changed me and SilverSprite's worms game to a real time linear battle game. However, the amount of flashing i am getting, even after using View.Update is unbelieveable. So I looked at the trusty Turing Help, they included a fun game (it comes with turing 4.0.3 i think), in there, the game is not slow at all, and they used "frames per second" to fix the problem. I try to use the same thing(literally, i copy and pasted), but i just can't get it to work. Could someone please help me? Here is the code and pictures that i am using:
code: | var forest := Pic.FileNew ("forest.jpg")
var grass := Pic.FileNew ("grass layer.bmp")
var chars : array char of boolean
var startTime : int
var lastFrameTime : int := 0
var frameTime : int := 0
var lastFrameRate : int := 0
var font1 := Font.New ("Times New Roman:16")
const MAX_FRAME_RATE : int := 30
const MIN_MILLISECS_BETWEEN_FRAMES : int := 1000 div MAX_FRAME_RATE
var backgroundPictureWidth1, backgroundPictureWidth2 : int
var backgroundPictureX1, backgroundPictureX2 : int
procedure DrawScreen
var frameRate : int
Pic.Draw (forest, -backgroundPictureX1, 0, picCopy)
frameRate := 1000 div (Time.Elapsed - frameTime)
if abs (lastFrameRate - frameRate) > 1 then
lastFrameRate := frameRate
end if
Font.Draw (intstr (lastFrameRate), 0, 370, font1, white)
frameTime := Time.Elapsed
Pic.Draw (grass, -backgroundPictureX2, 0, picMerge)
View.Update
end DrawScreen
backgroundPictureWidth1 := Pic.Width (forest)
backgroundPictureWidth2 := Pic.Width (grass)
backgroundPictureX1 := (backgroundPictureWidth1 - (maxx + 1)) div 2
backgroundPictureX2 := (backgroundPictureWidth2 - (maxx + 1)) div 2
startTime := Time.Elapsed
loop
Input.KeyDown (chars)
if chars (KEY_LEFT_ARROW) then
backgroundPictureX1 += 5
backgroundPictureX2 += 10
end if
if chars (KEY_RIGHT_ARROW) then
backgroundPictureX1 -= 5
backgroundPictureX2 -= 10
end if
DrawScreen
if Time.Elapsed - lastFrameTime < MIN_MILLISECS_BETWEEN_FRAMES then
delay (MIN_MILLISECS_BETWEEN_FRAMES - (Time.Elapsed - lastFrameTime))
end if
lastFrameTime := Time.Elapsed
end loop
|
Description: |
|
Download |
Filename: |
pics.zip |
Filesize: |
217.4 KB |
Downloaded: |
407 Time(s) |
|
|
|
|
|
|
Sponsor Sponsor
|
|
|
AsianSensation
|
Posted: Sun Apr 20, 2003 5:18 pm Post subject: (No subject) |
|
|
Never mind people, caught my mistake right after I posted this. I didn't include nooffscreenonly when I used View.Update. I am such an idiot. *Smaking myself on the head*.
|
|
|
|
|
|
|
|