
-----------------------------------
sliverofshadows475
Mon Dec 08, 2008 1:23 pm

Turing Game Problem [Flashing screen with multiple loops]
-----------------------------------
Hey guys, I have a problem with having multiple things in one loop process. I searched the site, and I looking briefly through topics that looked relevant, nothing seemed to help, so here I am asking you guys. Basically, what happens is:

When I run the program, the screen flashes a lot, I guess when it's repeatedly drawing the pictures. Here's my syntax.

 
var mypic :int:= Pic.FileNew ("C:/Users/Owner/Documents/Turing 4.1.1/Final Summitive Evaluation/heavycruiser1.jpg")
var mypic2 :int:= Pic.FileNew ("C:/Users/Owner/Pictures/spaveinvaders101.jpg")
var mypic3 :int:= Pic.FileNew ("C:/Users/Owner/Pictures/spaveinvaders102.jpg")
var mypic4 :int:= Pic.FileNew ("C:/Users/Owner/Pictures/spaveinvaders103.jpg")
var mypic5 :int:= Pic.FileNew ("C:/Users/Owner/Pictures/spaveinvaders104.jpg")
var mypic6 :int:= Pic.FileNew ("C:/Users/Owner/Pictures/spaveinvaders105.jpg")
var x : int := 300 
var y : int := 50 
var x1 : int := 50
var y1 : int := 300
var keys : array char of boolean  

loop
    Input.KeyDown (keys) 

    if keys (KEY_LEFT_ARROW) and x > 0 then 
        x -= 1 
    end if 

    if keys (KEY_RIGHT_ARROW) and x < maxx then 
        x += 1    
    end if 
    
    if keys (' ') then 
        drawline (x+10,510,x+10,95,red) 
        delay(7) 
        drawline (x+10,510,x+10,95,white)
    end if 
    Pic.Draw (mypic,x-20,y-20,0) 
    delay (4) 
    Pic.Draw (mypic2,50,300,0)
    delay (4)
    Pic.Draw (mypic3,150,300,0)
    delay (4)
    Pic.Draw (mypic4,250,300,0)
    delay (4)
    Pic.Draw (mypic5,350,300,0)
    delay (4)
    Pic.Draw (mypic6,450,300,0)
    delay (4)
    cls 
end loop  


Any help would be greatly appreciated. Thanks!

EDIT: I just found out about offscreenonly, but I'm not really sure of where to put View.Update...

-----------------------------------
TheGuardian001
Mon Dec 08, 2008 3:08 pm

Re: Turing Game Problem [Flashing screen with multiple loops]
-----------------------------------
What you're looking for is offscreen drawing. to use this, you need to things


View.Set("offscreenonly")

this sets offscreen drawing mode. all images are drawn offscreen and are invisible to the user
and


%all of your drawing code goes first
View.Update


this takes the everything that has been drawn offscreen and draws it as a solid image on screen where the user can see it.

You want this to come after you've drawn all of you're pictures, but before clearing the screen

-----------------------------------
Tony
Mon Dec 08, 2008 3:28 pm

Re: Turing Game Problem [Flashing screen with multiple loops]
-----------------------------------
I'm not really sure of where to put View.Update...
as TheGuardian001 points out, View.Update typically goes right before the cls.

The fact that you have multiple delays inside your loop, is not helping the issue of flickering. If you need to slow down the animation loop, use delay once.

-----------------------------------
sliverofshadows475
Mon Dec 08, 2008 7:12 pm

Re: Turing Game Problem [Flashing screen with multiple loops]
-----------------------------------
Thanks guys, you've really helped me.  :D

-----------------------------------
syntax_error
Mon Dec 08, 2008 9:15 pm

RE:Turing Game Problem [Flashing screen with multiple loops]
-----------------------------------
Just as a side note, you should keep all your pictures in one folder which contains the .t file as well, that way when you move your program as long as everything is in the folder its set to go.
