Reputation:
I created this function that randomly spawn a dot, but because its in my game loop the dot just does not stay where it is. I want it to spawn a dot and then wait 6 seconds and spawn another one randomly, but the first still being there. Because there is other things happening on the screen at the same time I cant use time.sleep(6)
. Any help solving this would be really appreciated.
def random_spawn():
image_x = random.randrange(122, 476)
image_y = random.randrange(90, 350)
screen.blit(Green, (image_x, image_y))
Upvotes: 2
Views: 602
Reputation: 6429
import random module:
import random
create random coordinates:
rand_X = (random.randrange(0, display_width - image_width)
rand_Y = (random.randrange(0, display_height - image_height)
blit image:
gameDisplay.blit(yourimage,(randAppleX,randAppleY))
Upvotes: 0
Reputation: 311
If you are trying to avoid using threads, and just using a while loop, perhaps this might work:
import time
def my_function():
print 'it has been about 6 seconds'
prev_time_stamp = time.time()
while True:
#do something
#do something else
if time.time() > prev_time_stamp + 6:
prev_time_stamp = time.time()
my_function()
#do something else
Upvotes: 0
Reputation: 2471
I think a way to fix this would be to only randomly spawn a dot if certain conditions are met. So you can define a function that randomly generates new coordinates outside of your main function (and returns them). Then your main game loop will take care of rendering the dot on the screen if certain conditions are met. For example:
image_x, image_y = get_random_coordinates()
while True:
if time.clock() - last_spawn_time > 6.0:
image_x, image_y = get_random_coordinates()
last_spawn_time = time.clock()
screen.blit(Green, (image_x, image_y))
So the idea is that you draw the same random coordinates, and keep drawing those same coordinates until the time between your last spawning and now is more than 6 seconds.
Upvotes: 0
Reputation: 7036
Don't use time.sleep
. In general, in game programming, you never want to use time.sleep
for any reason.
In your case, you just need to check a timer or clock every so often, and if the time is up, run your spawn function.
This is what a typical game loop will look like:
while True:
# get/handle player input
# update game state
# update sprites
# draw background
# draw sprites
# flip display
In your case, when you update your game state, you should check how much time has passed since you last spawned your random sprite. If it has been longer than 6 seconds, spawn a new one.
It will look something like this:
if time.clock() - last_spawn_time > 6.0:
random_spawn()
Upvotes: 2