(It's a kind of dodger game. When you are hit by enemy the game ends.)
Code: Select all
init python:
class Blink(renpy.Displayable):
def __init__(self):
renpy.Displayable.__init__(self)
self.WIDTH = 1024
self.HEIGHT = 640
self.LANE_WIDTH = 194
self.COURT_LEFT = 223
self.COURT_RIGHT = 805
# enemies
self.EnemySprite = [] # enemy sprite list.
for i in range(0, 5):
t = Text("Text for test", size = 36) #Transform("RideEnemy" + str(i), zoom = 0.6)
self.EnemySprite.append(t)
# need to calculate when the enemy should be added.
self.AddNewEnemyRate = 30
self.EnemyCount = 0
self.Enemies = []
self.cspeed = 0
self.oldSt = None
def visit(self):
sprites = self.EnemySprite
return sprites
def render(self, width, height, st, at):
r = renpy.Render(width, height)
if not self.oldSt:
self.oldSt = st
duration = st-self.oldSt
self.oldSt = st
if st <= 3:
self.cspeed = 100
elif st <= 6:
self.cspeed = 200
elif st <= 9:
self.cspeed = 400
elif st <= 12:
self.cspeed = 500
elif st >= 15:
self.cscpeed = 0
self.AddNewEnemyRate = 0
speed = duration * self.cspeed
### Enemies #######################################
# add new enemies
self.EnemyCount += 1
if self.EnemyCount == self.AddNewEnemyRate:
self.EnemyCount = 0
# Randomize enemy sprite
i = renpy.random.randint(1, 4)
enemy = self.EnemySprite[i]
# randomize enemy x position
EnemyX = self.COURT_LEFT + renpy.random.randint(0, 2) * self.LANE_WIDTH
# Enemy's starting y point.
EnemyY = -300
NewEnemy = {'img': enemy, 'x': EnemyX, 'y': EnemyY}
self.Enemies.append(NewEnemy)
for e in self.Enemies:
# Enemy goes down.
e['y'] = e['y'] + speed
enemy_render = renpy.render(e['img'], width, height, st, at)
# Delete if enemy is out of screen
###################
# when do this the last enemy sprite blinks.
if e['y'] > self.HEIGHT:
self.Enemies.remove(e)
# Draw enemy
r.blit(enemy_render, (e['x'], e['y']))
renpy.redraw(self, 0)
return r
init:
screen riding:
add Blink()
label start:
call screen riding
#if _return == True:
#":D"
#if _return == False:
#"T_T"
return
Code: Select all
###################
# when do this the last enemy sprite one screen blinks.
if e['y'] > self.HEIGHT:
self.Enemies.remove(e)
Moreover it seems a bit slow at first when the sprites are drawn.
I would be grateful for any advices on how could I find a solution.
Thanks in advance.