add a stopwatch to a game in pygame












2















i want to add a stopwatch in my pygame. I am planning to modify this code and add in my pygame:



Sec += 1
print(str(Min) + " Mins " + str(Sec) + " Sec ")
if Sec == 60:
Sec = 0
Min += 1
print(str(Min) + " Minute")


Should i add a timer box in my def init part and create a new def for the timer code? I want to have the timer without using the code tick since my game is running clock.tick(60) so it does not effect the tick



UPDATED
So here is my game code:



import sys, pygame, random

class Breakout():

def main(self):

xspeed_init = 6
yspeed_init = 6
max_lives = 5
bat_speed = 30
score = 0
bgcolour = 0x2F, 0x4F, 0x4F # darkslategrey
size = width, height = 640, 480

pygame.init()
screen = pygame.display.set_mode(size)
#screen = pygame.display.set_mode(size, pygame.FULLSCREEN)

bat = pygame.image.load("bat.png").convert()
batrect = bat.get_rect()

ball = pygame.image.load("ball.png").convert()
ball.set_colorkey((255, 255, 255))
ballrect = ball.get_rect()

pong = pygame.mixer.Sound('Blip_1-Surround-147.wav')
pong.set_volume(10)

wall = Wall()
wall.build_wall(width)

# Initialise ready for game loop
batrect = batrect.move((width / 2) - (batrect.right / 2), height - 20)
ballrect = ballrect.move(width / 2, height / 2)
xspeed = xspeed_init
yspeed = yspeed_init
lives = max_lives
clock = pygame.time.Clock()
pygame.key.set_repeat(1,30)
pygame.mouse.set_visible(0) # turn off mouse pointer

while 1:

# 60 frames per second
clock.tick(60)

# process key presses
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
sys.exit()
if event.key == pygame.K_LEFT:
batrect = batrect.move(-bat_speed, 0)
if (batrect.left < 0):
batrect.left = 0
if event.key == pygame.K_RIGHT:
batrect = batrect.move(bat_speed, 0)
if (batrect.right > width):
batrect.right = width

# check if bat has hit ball
if ballrect.bottom >= batrect.top and
ballrect.bottom <= batrect.bottom and
ballrect.right >= batrect.left and
ballrect.left <= batrect.right:
yspeed = -yspeed
pong.play(0)
offset = ballrect.center[0] - batrect.center[0]
# offset > 0 means ball has hit RHS of bat
# vary angle of ball depending on where ball hits bat
if offset > 0:
if offset > 30:
xspeed = 7
elif offset > 23:
xspeed = 6
elif offset > 17:
xspeed = 5
else:
if offset < -30:
xspeed = -7
elif offset < -23:
xspeed = -6
elif xspeed < -17:
xspeed = -5

# move bat/ball
ballrect = ballrect.move(xspeed, yspeed)
if ballrect.left < 0 or ballrect.right > width:
xspeed = -xspeed
pong.play(0)
if ballrect.top < 0:
yspeed = -yspeed
pong.play(0)

# check if ball has gone past bat - lose a life
if ballrect.top > height:
lives -= 1
# start a new ball
xspeed = xspeed_init
rand = random.random()
if random.random() > 0.5:
xspeed = -xspeed
yspeed = yspeed_init
ballrect.center = width * random.random(), height / 3
if lives == 0:
msg = pygame.font.Font(None,70).render("Game Over", True, (0,255,255), bgcolour)
msgrect = msg.get_rect()
msgrect = msgrect.move(width / 2 - (msgrect.center[0]), height / 3)
screen.blit(msg, msgrect)
pygame.display.flip()
# process key presses
# - ESC to quit
# - any other key to restart game
while 1:
restart = False
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
sys.exit()
if not (event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT):
restart = True
if restart:
screen.fill(bgcolour)
wall.build_wall(width)
lives = max_lives
score = 0
break

if xspeed < 0 and ballrect.left < 0:
xspeed = -xspeed
pong.play(0)

if xspeed > 0 and ballrect.right > width:
xspeed = -xspeed
pong.play(0)

# check if ball has hit wall
# if yes yhen delete brick and change ball direction
index = ballrect.collidelist(wall.brickrect)
if index != -1:
if ballrect.center[0] > wall.brickrect[index].right or
ballrect.center[0] < wall.brickrect[index].left:
xspeed = -xspeed
else:
yspeed = -yspeed
pong.play(0)
wall.brickrect[index:index + 1] =
score += 10

screen.fill(bgcolour)
scoretext = pygame.font.Font(None,40).render(str(score), True, (0,255,255), bgcolour)
scoretextrect = scoretext.get_rect()
scoretextrect = scoretextrect.move(width - scoretextrect.right, 0)
screen.blit(scoretext, scoretextrect)

for i in range(0, len(wall.brickrect)):
screen.blit(wall.brick, wall.brickrect[i])

# if wall completely gone then rebuild it
if wall.brickrect == :
wall.build_wall(width)
xspeed = xspeed_init
yspeed = yspeed_init
ballrect.center = width / 2, height / 3

screen.blit(ball, ballrect)
screen.blit(bat, batrect)
pygame.display.flip()

class Wall():

def __init__(self):
self.brick = pygame.image.load("brick.png").convert()
brickrect = self.brick.get_rect()
self.bricklength = brickrect.right - brickrect.left
self.brickheight = brickrect.bottom - brickrect.top

def build_wall(self, width):
xpos = 0
ypos = 60
adj = 0
self.brickrect =
for i in range (0, 52):
if xpos > width:
if adj == 0:
adj = self.bricklength / 2
else:
adj = 0
xpos = -adj
ypos += self.brickheight

self.brickrect.append(self.brick.get_rect())
self.brickrect[i] = self.brickrect[i].move(xpos, ypos)
xpos = xpos + self.bricklength

if __name__ == '__main__':
br = Breakout()
br.main()









share|improve this question





























    2















    i want to add a stopwatch in my pygame. I am planning to modify this code and add in my pygame:



    Sec += 1
    print(str(Min) + " Mins " + str(Sec) + " Sec ")
    if Sec == 60:
    Sec = 0
    Min += 1
    print(str(Min) + " Minute")


    Should i add a timer box in my def init part and create a new def for the timer code? I want to have the timer without using the code tick since my game is running clock.tick(60) so it does not effect the tick



    UPDATED
    So here is my game code:



    import sys, pygame, random

    class Breakout():

    def main(self):

    xspeed_init = 6
    yspeed_init = 6
    max_lives = 5
    bat_speed = 30
    score = 0
    bgcolour = 0x2F, 0x4F, 0x4F # darkslategrey
    size = width, height = 640, 480

    pygame.init()
    screen = pygame.display.set_mode(size)
    #screen = pygame.display.set_mode(size, pygame.FULLSCREEN)

    bat = pygame.image.load("bat.png").convert()
    batrect = bat.get_rect()

    ball = pygame.image.load("ball.png").convert()
    ball.set_colorkey((255, 255, 255))
    ballrect = ball.get_rect()

    pong = pygame.mixer.Sound('Blip_1-Surround-147.wav')
    pong.set_volume(10)

    wall = Wall()
    wall.build_wall(width)

    # Initialise ready for game loop
    batrect = batrect.move((width / 2) - (batrect.right / 2), height - 20)
    ballrect = ballrect.move(width / 2, height / 2)
    xspeed = xspeed_init
    yspeed = yspeed_init
    lives = max_lives
    clock = pygame.time.Clock()
    pygame.key.set_repeat(1,30)
    pygame.mouse.set_visible(0) # turn off mouse pointer

    while 1:

    # 60 frames per second
    clock.tick(60)

    # process key presses
    for event in pygame.event.get():
    if event.type == pygame.QUIT:
    sys.exit()
    if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_ESCAPE:
    sys.exit()
    if event.key == pygame.K_LEFT:
    batrect = batrect.move(-bat_speed, 0)
    if (batrect.left < 0):
    batrect.left = 0
    if event.key == pygame.K_RIGHT:
    batrect = batrect.move(bat_speed, 0)
    if (batrect.right > width):
    batrect.right = width

    # check if bat has hit ball
    if ballrect.bottom >= batrect.top and
    ballrect.bottom <= batrect.bottom and
    ballrect.right >= batrect.left and
    ballrect.left <= batrect.right:
    yspeed = -yspeed
    pong.play(0)
    offset = ballrect.center[0] - batrect.center[0]
    # offset > 0 means ball has hit RHS of bat
    # vary angle of ball depending on where ball hits bat
    if offset > 0:
    if offset > 30:
    xspeed = 7
    elif offset > 23:
    xspeed = 6
    elif offset > 17:
    xspeed = 5
    else:
    if offset < -30:
    xspeed = -7
    elif offset < -23:
    xspeed = -6
    elif xspeed < -17:
    xspeed = -5

    # move bat/ball
    ballrect = ballrect.move(xspeed, yspeed)
    if ballrect.left < 0 or ballrect.right > width:
    xspeed = -xspeed
    pong.play(0)
    if ballrect.top < 0:
    yspeed = -yspeed
    pong.play(0)

    # check if ball has gone past bat - lose a life
    if ballrect.top > height:
    lives -= 1
    # start a new ball
    xspeed = xspeed_init
    rand = random.random()
    if random.random() > 0.5:
    xspeed = -xspeed
    yspeed = yspeed_init
    ballrect.center = width * random.random(), height / 3
    if lives == 0:
    msg = pygame.font.Font(None,70).render("Game Over", True, (0,255,255), bgcolour)
    msgrect = msg.get_rect()
    msgrect = msgrect.move(width / 2 - (msgrect.center[0]), height / 3)
    screen.blit(msg, msgrect)
    pygame.display.flip()
    # process key presses
    # - ESC to quit
    # - any other key to restart game
    while 1:
    restart = False
    for event in pygame.event.get():
    if event.type == pygame.QUIT:
    sys.exit()
    if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_ESCAPE:
    sys.exit()
    if not (event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT):
    restart = True
    if restart:
    screen.fill(bgcolour)
    wall.build_wall(width)
    lives = max_lives
    score = 0
    break

    if xspeed < 0 and ballrect.left < 0:
    xspeed = -xspeed
    pong.play(0)

    if xspeed > 0 and ballrect.right > width:
    xspeed = -xspeed
    pong.play(0)

    # check if ball has hit wall
    # if yes yhen delete brick and change ball direction
    index = ballrect.collidelist(wall.brickrect)
    if index != -1:
    if ballrect.center[0] > wall.brickrect[index].right or
    ballrect.center[0] < wall.brickrect[index].left:
    xspeed = -xspeed
    else:
    yspeed = -yspeed
    pong.play(0)
    wall.brickrect[index:index + 1] =
    score += 10

    screen.fill(bgcolour)
    scoretext = pygame.font.Font(None,40).render(str(score), True, (0,255,255), bgcolour)
    scoretextrect = scoretext.get_rect()
    scoretextrect = scoretextrect.move(width - scoretextrect.right, 0)
    screen.blit(scoretext, scoretextrect)

    for i in range(0, len(wall.brickrect)):
    screen.blit(wall.brick, wall.brickrect[i])

    # if wall completely gone then rebuild it
    if wall.brickrect == :
    wall.build_wall(width)
    xspeed = xspeed_init
    yspeed = yspeed_init
    ballrect.center = width / 2, height / 3

    screen.blit(ball, ballrect)
    screen.blit(bat, batrect)
    pygame.display.flip()

    class Wall():

    def __init__(self):
    self.brick = pygame.image.load("brick.png").convert()
    brickrect = self.brick.get_rect()
    self.bricklength = brickrect.right - brickrect.left
    self.brickheight = brickrect.bottom - brickrect.top

    def build_wall(self, width):
    xpos = 0
    ypos = 60
    adj = 0
    self.brickrect =
    for i in range (0, 52):
    if xpos > width:
    if adj == 0:
    adj = self.bricklength / 2
    else:
    adj = 0
    xpos = -adj
    ypos += self.brickheight

    self.brickrect.append(self.brick.get_rect())
    self.brickrect[i] = self.brickrect[i].move(xpos, ypos)
    xpos = xpos + self.bricklength

    if __name__ == '__main__':
    br = Breakout()
    br.main()









    share|improve this question



























      2












      2








      2








      i want to add a stopwatch in my pygame. I am planning to modify this code and add in my pygame:



      Sec += 1
      print(str(Min) + " Mins " + str(Sec) + " Sec ")
      if Sec == 60:
      Sec = 0
      Min += 1
      print(str(Min) + " Minute")


      Should i add a timer box in my def init part and create a new def for the timer code? I want to have the timer without using the code tick since my game is running clock.tick(60) so it does not effect the tick



      UPDATED
      So here is my game code:



      import sys, pygame, random

      class Breakout():

      def main(self):

      xspeed_init = 6
      yspeed_init = 6
      max_lives = 5
      bat_speed = 30
      score = 0
      bgcolour = 0x2F, 0x4F, 0x4F # darkslategrey
      size = width, height = 640, 480

      pygame.init()
      screen = pygame.display.set_mode(size)
      #screen = pygame.display.set_mode(size, pygame.FULLSCREEN)

      bat = pygame.image.load("bat.png").convert()
      batrect = bat.get_rect()

      ball = pygame.image.load("ball.png").convert()
      ball.set_colorkey((255, 255, 255))
      ballrect = ball.get_rect()

      pong = pygame.mixer.Sound('Blip_1-Surround-147.wav')
      pong.set_volume(10)

      wall = Wall()
      wall.build_wall(width)

      # Initialise ready for game loop
      batrect = batrect.move((width / 2) - (batrect.right / 2), height - 20)
      ballrect = ballrect.move(width / 2, height / 2)
      xspeed = xspeed_init
      yspeed = yspeed_init
      lives = max_lives
      clock = pygame.time.Clock()
      pygame.key.set_repeat(1,30)
      pygame.mouse.set_visible(0) # turn off mouse pointer

      while 1:

      # 60 frames per second
      clock.tick(60)

      # process key presses
      for event in pygame.event.get():
      if event.type == pygame.QUIT:
      sys.exit()
      if event.type == pygame.KEYDOWN:
      if event.key == pygame.K_ESCAPE:
      sys.exit()
      if event.key == pygame.K_LEFT:
      batrect = batrect.move(-bat_speed, 0)
      if (batrect.left < 0):
      batrect.left = 0
      if event.key == pygame.K_RIGHT:
      batrect = batrect.move(bat_speed, 0)
      if (batrect.right > width):
      batrect.right = width

      # check if bat has hit ball
      if ballrect.bottom >= batrect.top and
      ballrect.bottom <= batrect.bottom and
      ballrect.right >= batrect.left and
      ballrect.left <= batrect.right:
      yspeed = -yspeed
      pong.play(0)
      offset = ballrect.center[0] - batrect.center[0]
      # offset > 0 means ball has hit RHS of bat
      # vary angle of ball depending on where ball hits bat
      if offset > 0:
      if offset > 30:
      xspeed = 7
      elif offset > 23:
      xspeed = 6
      elif offset > 17:
      xspeed = 5
      else:
      if offset < -30:
      xspeed = -7
      elif offset < -23:
      xspeed = -6
      elif xspeed < -17:
      xspeed = -5

      # move bat/ball
      ballrect = ballrect.move(xspeed, yspeed)
      if ballrect.left < 0 or ballrect.right > width:
      xspeed = -xspeed
      pong.play(0)
      if ballrect.top < 0:
      yspeed = -yspeed
      pong.play(0)

      # check if ball has gone past bat - lose a life
      if ballrect.top > height:
      lives -= 1
      # start a new ball
      xspeed = xspeed_init
      rand = random.random()
      if random.random() > 0.5:
      xspeed = -xspeed
      yspeed = yspeed_init
      ballrect.center = width * random.random(), height / 3
      if lives == 0:
      msg = pygame.font.Font(None,70).render("Game Over", True, (0,255,255), bgcolour)
      msgrect = msg.get_rect()
      msgrect = msgrect.move(width / 2 - (msgrect.center[0]), height / 3)
      screen.blit(msg, msgrect)
      pygame.display.flip()
      # process key presses
      # - ESC to quit
      # - any other key to restart game
      while 1:
      restart = False
      for event in pygame.event.get():
      if event.type == pygame.QUIT:
      sys.exit()
      if event.type == pygame.KEYDOWN:
      if event.key == pygame.K_ESCAPE:
      sys.exit()
      if not (event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT):
      restart = True
      if restart:
      screen.fill(bgcolour)
      wall.build_wall(width)
      lives = max_lives
      score = 0
      break

      if xspeed < 0 and ballrect.left < 0:
      xspeed = -xspeed
      pong.play(0)

      if xspeed > 0 and ballrect.right > width:
      xspeed = -xspeed
      pong.play(0)

      # check if ball has hit wall
      # if yes yhen delete brick and change ball direction
      index = ballrect.collidelist(wall.brickrect)
      if index != -1:
      if ballrect.center[0] > wall.brickrect[index].right or
      ballrect.center[0] < wall.brickrect[index].left:
      xspeed = -xspeed
      else:
      yspeed = -yspeed
      pong.play(0)
      wall.brickrect[index:index + 1] =
      score += 10

      screen.fill(bgcolour)
      scoretext = pygame.font.Font(None,40).render(str(score), True, (0,255,255), bgcolour)
      scoretextrect = scoretext.get_rect()
      scoretextrect = scoretextrect.move(width - scoretextrect.right, 0)
      screen.blit(scoretext, scoretextrect)

      for i in range(0, len(wall.brickrect)):
      screen.blit(wall.brick, wall.brickrect[i])

      # if wall completely gone then rebuild it
      if wall.brickrect == :
      wall.build_wall(width)
      xspeed = xspeed_init
      yspeed = yspeed_init
      ballrect.center = width / 2, height / 3

      screen.blit(ball, ballrect)
      screen.blit(bat, batrect)
      pygame.display.flip()

      class Wall():

      def __init__(self):
      self.brick = pygame.image.load("brick.png").convert()
      brickrect = self.brick.get_rect()
      self.bricklength = brickrect.right - brickrect.left
      self.brickheight = brickrect.bottom - brickrect.top

      def build_wall(self, width):
      xpos = 0
      ypos = 60
      adj = 0
      self.brickrect =
      for i in range (0, 52):
      if xpos > width:
      if adj == 0:
      adj = self.bricklength / 2
      else:
      adj = 0
      xpos = -adj
      ypos += self.brickheight

      self.brickrect.append(self.brick.get_rect())
      self.brickrect[i] = self.brickrect[i].move(xpos, ypos)
      xpos = xpos + self.bricklength

      if __name__ == '__main__':
      br = Breakout()
      br.main()









      share|improve this question
















      i want to add a stopwatch in my pygame. I am planning to modify this code and add in my pygame:



      Sec += 1
      print(str(Min) + " Mins " + str(Sec) + " Sec ")
      if Sec == 60:
      Sec = 0
      Min += 1
      print(str(Min) + " Minute")


      Should i add a timer box in my def init part and create a new def for the timer code? I want to have the timer without using the code tick since my game is running clock.tick(60) so it does not effect the tick



      UPDATED
      So here is my game code:



      import sys, pygame, random

      class Breakout():

      def main(self):

      xspeed_init = 6
      yspeed_init = 6
      max_lives = 5
      bat_speed = 30
      score = 0
      bgcolour = 0x2F, 0x4F, 0x4F # darkslategrey
      size = width, height = 640, 480

      pygame.init()
      screen = pygame.display.set_mode(size)
      #screen = pygame.display.set_mode(size, pygame.FULLSCREEN)

      bat = pygame.image.load("bat.png").convert()
      batrect = bat.get_rect()

      ball = pygame.image.load("ball.png").convert()
      ball.set_colorkey((255, 255, 255))
      ballrect = ball.get_rect()

      pong = pygame.mixer.Sound('Blip_1-Surround-147.wav')
      pong.set_volume(10)

      wall = Wall()
      wall.build_wall(width)

      # Initialise ready for game loop
      batrect = batrect.move((width / 2) - (batrect.right / 2), height - 20)
      ballrect = ballrect.move(width / 2, height / 2)
      xspeed = xspeed_init
      yspeed = yspeed_init
      lives = max_lives
      clock = pygame.time.Clock()
      pygame.key.set_repeat(1,30)
      pygame.mouse.set_visible(0) # turn off mouse pointer

      while 1:

      # 60 frames per second
      clock.tick(60)

      # process key presses
      for event in pygame.event.get():
      if event.type == pygame.QUIT:
      sys.exit()
      if event.type == pygame.KEYDOWN:
      if event.key == pygame.K_ESCAPE:
      sys.exit()
      if event.key == pygame.K_LEFT:
      batrect = batrect.move(-bat_speed, 0)
      if (batrect.left < 0):
      batrect.left = 0
      if event.key == pygame.K_RIGHT:
      batrect = batrect.move(bat_speed, 0)
      if (batrect.right > width):
      batrect.right = width

      # check if bat has hit ball
      if ballrect.bottom >= batrect.top and
      ballrect.bottom <= batrect.bottom and
      ballrect.right >= batrect.left and
      ballrect.left <= batrect.right:
      yspeed = -yspeed
      pong.play(0)
      offset = ballrect.center[0] - batrect.center[0]
      # offset > 0 means ball has hit RHS of bat
      # vary angle of ball depending on where ball hits bat
      if offset > 0:
      if offset > 30:
      xspeed = 7
      elif offset > 23:
      xspeed = 6
      elif offset > 17:
      xspeed = 5
      else:
      if offset < -30:
      xspeed = -7
      elif offset < -23:
      xspeed = -6
      elif xspeed < -17:
      xspeed = -5

      # move bat/ball
      ballrect = ballrect.move(xspeed, yspeed)
      if ballrect.left < 0 or ballrect.right > width:
      xspeed = -xspeed
      pong.play(0)
      if ballrect.top < 0:
      yspeed = -yspeed
      pong.play(0)

      # check if ball has gone past bat - lose a life
      if ballrect.top > height:
      lives -= 1
      # start a new ball
      xspeed = xspeed_init
      rand = random.random()
      if random.random() > 0.5:
      xspeed = -xspeed
      yspeed = yspeed_init
      ballrect.center = width * random.random(), height / 3
      if lives == 0:
      msg = pygame.font.Font(None,70).render("Game Over", True, (0,255,255), bgcolour)
      msgrect = msg.get_rect()
      msgrect = msgrect.move(width / 2 - (msgrect.center[0]), height / 3)
      screen.blit(msg, msgrect)
      pygame.display.flip()
      # process key presses
      # - ESC to quit
      # - any other key to restart game
      while 1:
      restart = False
      for event in pygame.event.get():
      if event.type == pygame.QUIT:
      sys.exit()
      if event.type == pygame.KEYDOWN:
      if event.key == pygame.K_ESCAPE:
      sys.exit()
      if not (event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT):
      restart = True
      if restart:
      screen.fill(bgcolour)
      wall.build_wall(width)
      lives = max_lives
      score = 0
      break

      if xspeed < 0 and ballrect.left < 0:
      xspeed = -xspeed
      pong.play(0)

      if xspeed > 0 and ballrect.right > width:
      xspeed = -xspeed
      pong.play(0)

      # check if ball has hit wall
      # if yes yhen delete brick and change ball direction
      index = ballrect.collidelist(wall.brickrect)
      if index != -1:
      if ballrect.center[0] > wall.brickrect[index].right or
      ballrect.center[0] < wall.brickrect[index].left:
      xspeed = -xspeed
      else:
      yspeed = -yspeed
      pong.play(0)
      wall.brickrect[index:index + 1] =
      score += 10

      screen.fill(bgcolour)
      scoretext = pygame.font.Font(None,40).render(str(score), True, (0,255,255), bgcolour)
      scoretextrect = scoretext.get_rect()
      scoretextrect = scoretextrect.move(width - scoretextrect.right, 0)
      screen.blit(scoretext, scoretextrect)

      for i in range(0, len(wall.brickrect)):
      screen.blit(wall.brick, wall.brickrect[i])

      # if wall completely gone then rebuild it
      if wall.brickrect == :
      wall.build_wall(width)
      xspeed = xspeed_init
      yspeed = yspeed_init
      ballrect.center = width / 2, height / 3

      screen.blit(ball, ballrect)
      screen.blit(bat, batrect)
      pygame.display.flip()

      class Wall():

      def __init__(self):
      self.brick = pygame.image.load("brick.png").convert()
      brickrect = self.brick.get_rect()
      self.bricklength = brickrect.right - brickrect.left
      self.brickheight = brickrect.bottom - brickrect.top

      def build_wall(self, width):
      xpos = 0
      ypos = 60
      adj = 0
      self.brickrect =
      for i in range (0, 52):
      if xpos > width:
      if adj == 0:
      adj = self.bricklength / 2
      else:
      adj = 0
      xpos = -adj
      ypos += self.brickheight

      self.brickrect.append(self.brick.get_rect())
      self.brickrect[i] = self.brickrect[i].move(xpos, ypos)
      xpos = xpos + self.bricklength

      if __name__ == '__main__':
      br = Breakout()
      br.main()






      python pygame






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 23 '18 at 10:24







      David Lee

















      asked Nov 23 '18 at 8:15









      David LeeDavid Lee

      214




      214
























          2 Answers
          2






          active

          oldest

          votes


















          0














          You can use for example pygame.time.get_ticks() to get the number of milliseconds since pygame.init() was called, and then use simple division to get the seconds and minutes etc from that number.



          Here's a simple example:



          import pygame
          import pygame.freetype

          def main():
          pygame.init()
          screen=pygame.display.set_mode((400, 300))
          clock=pygame.time.Clock()
          font=pygame.freetype.SysFont(None, 34)
          font.origin=True
          while True:
          for e in pygame.event.get():
          if e.type == pygame.QUIT: return
          screen.fill(pygame.Color('grey12'))
          ticks=pygame.time.get_ticks()
          millis=ticks%1000
          seconds=int(ticks/1000 % 60)
          minutes=int(ticks/60000 % 24)
          out='{minutes:02d}:{seconds:02d}:{millis}'.format(minutes=minutes, millis=millis, seconds=seconds)
          font.render_to(screen, (100, 100), out, pygame.Color('dodgerblue'))
          pygame.display.flip()
          clock.tick(60)

          if __name__ == '__main__': main()


          enter image description here



          If you want to have your stopwatch "to start later", you could store the output of pygame.time.get_ticks() at this moment and simply substract it from the result of further calls (something like starttime=pygame.time.get_ticks() and ticks=pygame.time.get_ticks()-starttime later in the loop, you'll get the idea).






          share|improve this answer
























          • so where should i add this code to my game so the timer will also display on the game?

            – David Lee
            Nov 23 '18 at 10:17











          • The easiest way would be to just put the relevant code into your main loop. Maybe create a simple function for it and call it in your main loop.

            – sloth
            Nov 23 '18 at 10:26



















          0














          If your game is running on while loop, with fps of 60, you can get minutes and seconds by doing so:



          frame_count = 0
          frame_rate = 60

          ... while block of game running 60 fps

          # Every second passes 60 frames, so you get seconds by dividing
          # by 60
          seconds = total_seconds // 60

          # Because 1 second is 60 frames, minute is 60 seconds * 60 frames.
          # So you divide by 60 * 60 = 3600
          minutes = total_seconds // 3600 # Because every second is 60 fps

          output_string = "Time: {0:02}:{1:02}".format(minutes, seconds)

          frame_count += 1


          I found this solution here






          share|improve this answer





















          • 1





            but my game is running clock.tick(60), if i use the above code it will mess up my game speed. Is it possible to make a stopwatch without using tick?

            – David Lee
            Nov 23 '18 at 8:31













          • You don't have to use clock.tick, but you need frame_rate when you render your game.

            – Dinko Pehar
            Nov 23 '18 at 8:36











          • I edited a code, please check

            – Dinko Pehar
            Nov 23 '18 at 8:41














          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53442856%2fadd-a-stopwatch-to-a-game-in-pygame%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          2 Answers
          2






          active

          oldest

          votes








          2 Answers
          2






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          You can use for example pygame.time.get_ticks() to get the number of milliseconds since pygame.init() was called, and then use simple division to get the seconds and minutes etc from that number.



          Here's a simple example:



          import pygame
          import pygame.freetype

          def main():
          pygame.init()
          screen=pygame.display.set_mode((400, 300))
          clock=pygame.time.Clock()
          font=pygame.freetype.SysFont(None, 34)
          font.origin=True
          while True:
          for e in pygame.event.get():
          if e.type == pygame.QUIT: return
          screen.fill(pygame.Color('grey12'))
          ticks=pygame.time.get_ticks()
          millis=ticks%1000
          seconds=int(ticks/1000 % 60)
          minutes=int(ticks/60000 % 24)
          out='{minutes:02d}:{seconds:02d}:{millis}'.format(minutes=minutes, millis=millis, seconds=seconds)
          font.render_to(screen, (100, 100), out, pygame.Color('dodgerblue'))
          pygame.display.flip()
          clock.tick(60)

          if __name__ == '__main__': main()


          enter image description here



          If you want to have your stopwatch "to start later", you could store the output of pygame.time.get_ticks() at this moment and simply substract it from the result of further calls (something like starttime=pygame.time.get_ticks() and ticks=pygame.time.get_ticks()-starttime later in the loop, you'll get the idea).






          share|improve this answer
























          • so where should i add this code to my game so the timer will also display on the game?

            – David Lee
            Nov 23 '18 at 10:17











          • The easiest way would be to just put the relevant code into your main loop. Maybe create a simple function for it and call it in your main loop.

            – sloth
            Nov 23 '18 at 10:26
















          0














          You can use for example pygame.time.get_ticks() to get the number of milliseconds since pygame.init() was called, and then use simple division to get the seconds and minutes etc from that number.



          Here's a simple example:



          import pygame
          import pygame.freetype

          def main():
          pygame.init()
          screen=pygame.display.set_mode((400, 300))
          clock=pygame.time.Clock()
          font=pygame.freetype.SysFont(None, 34)
          font.origin=True
          while True:
          for e in pygame.event.get():
          if e.type == pygame.QUIT: return
          screen.fill(pygame.Color('grey12'))
          ticks=pygame.time.get_ticks()
          millis=ticks%1000
          seconds=int(ticks/1000 % 60)
          minutes=int(ticks/60000 % 24)
          out='{minutes:02d}:{seconds:02d}:{millis}'.format(minutes=minutes, millis=millis, seconds=seconds)
          font.render_to(screen, (100, 100), out, pygame.Color('dodgerblue'))
          pygame.display.flip()
          clock.tick(60)

          if __name__ == '__main__': main()


          enter image description here



          If you want to have your stopwatch "to start later", you could store the output of pygame.time.get_ticks() at this moment and simply substract it from the result of further calls (something like starttime=pygame.time.get_ticks() and ticks=pygame.time.get_ticks()-starttime later in the loop, you'll get the idea).






          share|improve this answer
























          • so where should i add this code to my game so the timer will also display on the game?

            – David Lee
            Nov 23 '18 at 10:17











          • The easiest way would be to just put the relevant code into your main loop. Maybe create a simple function for it and call it in your main loop.

            – sloth
            Nov 23 '18 at 10:26














          0












          0








          0







          You can use for example pygame.time.get_ticks() to get the number of milliseconds since pygame.init() was called, and then use simple division to get the seconds and minutes etc from that number.



          Here's a simple example:



          import pygame
          import pygame.freetype

          def main():
          pygame.init()
          screen=pygame.display.set_mode((400, 300))
          clock=pygame.time.Clock()
          font=pygame.freetype.SysFont(None, 34)
          font.origin=True
          while True:
          for e in pygame.event.get():
          if e.type == pygame.QUIT: return
          screen.fill(pygame.Color('grey12'))
          ticks=pygame.time.get_ticks()
          millis=ticks%1000
          seconds=int(ticks/1000 % 60)
          minutes=int(ticks/60000 % 24)
          out='{minutes:02d}:{seconds:02d}:{millis}'.format(minutes=minutes, millis=millis, seconds=seconds)
          font.render_to(screen, (100, 100), out, pygame.Color('dodgerblue'))
          pygame.display.flip()
          clock.tick(60)

          if __name__ == '__main__': main()


          enter image description here



          If you want to have your stopwatch "to start later", you could store the output of pygame.time.get_ticks() at this moment and simply substract it from the result of further calls (something like starttime=pygame.time.get_ticks() and ticks=pygame.time.get_ticks()-starttime later in the loop, you'll get the idea).






          share|improve this answer













          You can use for example pygame.time.get_ticks() to get the number of milliseconds since pygame.init() was called, and then use simple division to get the seconds and minutes etc from that number.



          Here's a simple example:



          import pygame
          import pygame.freetype

          def main():
          pygame.init()
          screen=pygame.display.set_mode((400, 300))
          clock=pygame.time.Clock()
          font=pygame.freetype.SysFont(None, 34)
          font.origin=True
          while True:
          for e in pygame.event.get():
          if e.type == pygame.QUIT: return
          screen.fill(pygame.Color('grey12'))
          ticks=pygame.time.get_ticks()
          millis=ticks%1000
          seconds=int(ticks/1000 % 60)
          minutes=int(ticks/60000 % 24)
          out='{minutes:02d}:{seconds:02d}:{millis}'.format(minutes=minutes, millis=millis, seconds=seconds)
          font.render_to(screen, (100, 100), out, pygame.Color('dodgerblue'))
          pygame.display.flip()
          clock.tick(60)

          if __name__ == '__main__': main()


          enter image description here



          If you want to have your stopwatch "to start later", you could store the output of pygame.time.get_ticks() at this moment and simply substract it from the result of further calls (something like starttime=pygame.time.get_ticks() and ticks=pygame.time.get_ticks()-starttime later in the loop, you'll get the idea).







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 23 '18 at 10:00









          slothsloth

          75.4k15129173




          75.4k15129173













          • so where should i add this code to my game so the timer will also display on the game?

            – David Lee
            Nov 23 '18 at 10:17











          • The easiest way would be to just put the relevant code into your main loop. Maybe create a simple function for it and call it in your main loop.

            – sloth
            Nov 23 '18 at 10:26



















          • so where should i add this code to my game so the timer will also display on the game?

            – David Lee
            Nov 23 '18 at 10:17











          • The easiest way would be to just put the relevant code into your main loop. Maybe create a simple function for it and call it in your main loop.

            – sloth
            Nov 23 '18 at 10:26

















          so where should i add this code to my game so the timer will also display on the game?

          – David Lee
          Nov 23 '18 at 10:17





          so where should i add this code to my game so the timer will also display on the game?

          – David Lee
          Nov 23 '18 at 10:17













          The easiest way would be to just put the relevant code into your main loop. Maybe create a simple function for it and call it in your main loop.

          – sloth
          Nov 23 '18 at 10:26





          The easiest way would be to just put the relevant code into your main loop. Maybe create a simple function for it and call it in your main loop.

          – sloth
          Nov 23 '18 at 10:26













          0














          If your game is running on while loop, with fps of 60, you can get minutes and seconds by doing so:



          frame_count = 0
          frame_rate = 60

          ... while block of game running 60 fps

          # Every second passes 60 frames, so you get seconds by dividing
          # by 60
          seconds = total_seconds // 60

          # Because 1 second is 60 frames, minute is 60 seconds * 60 frames.
          # So you divide by 60 * 60 = 3600
          minutes = total_seconds // 3600 # Because every second is 60 fps

          output_string = "Time: {0:02}:{1:02}".format(minutes, seconds)

          frame_count += 1


          I found this solution here






          share|improve this answer





















          • 1





            but my game is running clock.tick(60), if i use the above code it will mess up my game speed. Is it possible to make a stopwatch without using tick?

            – David Lee
            Nov 23 '18 at 8:31













          • You don't have to use clock.tick, but you need frame_rate when you render your game.

            – Dinko Pehar
            Nov 23 '18 at 8:36











          • I edited a code, please check

            – Dinko Pehar
            Nov 23 '18 at 8:41


















          0














          If your game is running on while loop, with fps of 60, you can get minutes and seconds by doing so:



          frame_count = 0
          frame_rate = 60

          ... while block of game running 60 fps

          # Every second passes 60 frames, so you get seconds by dividing
          # by 60
          seconds = total_seconds // 60

          # Because 1 second is 60 frames, minute is 60 seconds * 60 frames.
          # So you divide by 60 * 60 = 3600
          minutes = total_seconds // 3600 # Because every second is 60 fps

          output_string = "Time: {0:02}:{1:02}".format(minutes, seconds)

          frame_count += 1


          I found this solution here






          share|improve this answer





















          • 1





            but my game is running clock.tick(60), if i use the above code it will mess up my game speed. Is it possible to make a stopwatch without using tick?

            – David Lee
            Nov 23 '18 at 8:31













          • You don't have to use clock.tick, but you need frame_rate when you render your game.

            – Dinko Pehar
            Nov 23 '18 at 8:36











          • I edited a code, please check

            – Dinko Pehar
            Nov 23 '18 at 8:41
















          0












          0








          0







          If your game is running on while loop, with fps of 60, you can get minutes and seconds by doing so:



          frame_count = 0
          frame_rate = 60

          ... while block of game running 60 fps

          # Every second passes 60 frames, so you get seconds by dividing
          # by 60
          seconds = total_seconds // 60

          # Because 1 second is 60 frames, minute is 60 seconds * 60 frames.
          # So you divide by 60 * 60 = 3600
          minutes = total_seconds // 3600 # Because every second is 60 fps

          output_string = "Time: {0:02}:{1:02}".format(minutes, seconds)

          frame_count += 1


          I found this solution here






          share|improve this answer















          If your game is running on while loop, with fps of 60, you can get minutes and seconds by doing so:



          frame_count = 0
          frame_rate = 60

          ... while block of game running 60 fps

          # Every second passes 60 frames, so you get seconds by dividing
          # by 60
          seconds = total_seconds // 60

          # Because 1 second is 60 frames, minute is 60 seconds * 60 frames.
          # So you divide by 60 * 60 = 3600
          minutes = total_seconds // 3600 # Because every second is 60 fps

          output_string = "Time: {0:02}:{1:02}".format(minutes, seconds)

          frame_count += 1


          I found this solution here







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 23 '18 at 8:41

























          answered Nov 23 '18 at 8:23









          Dinko PeharDinko Pehar

          1,5493425




          1,5493425








          • 1





            but my game is running clock.tick(60), if i use the above code it will mess up my game speed. Is it possible to make a stopwatch without using tick?

            – David Lee
            Nov 23 '18 at 8:31













          • You don't have to use clock.tick, but you need frame_rate when you render your game.

            – Dinko Pehar
            Nov 23 '18 at 8:36











          • I edited a code, please check

            – Dinko Pehar
            Nov 23 '18 at 8:41
















          • 1





            but my game is running clock.tick(60), if i use the above code it will mess up my game speed. Is it possible to make a stopwatch without using tick?

            – David Lee
            Nov 23 '18 at 8:31













          • You don't have to use clock.tick, but you need frame_rate when you render your game.

            – Dinko Pehar
            Nov 23 '18 at 8:36











          • I edited a code, please check

            – Dinko Pehar
            Nov 23 '18 at 8:41










          1




          1





          but my game is running clock.tick(60), if i use the above code it will mess up my game speed. Is it possible to make a stopwatch without using tick?

          – David Lee
          Nov 23 '18 at 8:31







          but my game is running clock.tick(60), if i use the above code it will mess up my game speed. Is it possible to make a stopwatch without using tick?

          – David Lee
          Nov 23 '18 at 8:31















          You don't have to use clock.tick, but you need frame_rate when you render your game.

          – Dinko Pehar
          Nov 23 '18 at 8:36





          You don't have to use clock.tick, but you need frame_rate when you render your game.

          – Dinko Pehar
          Nov 23 '18 at 8:36













          I edited a code, please check

          – Dinko Pehar
          Nov 23 '18 at 8:41







          I edited a code, please check

          – Dinko Pehar
          Nov 23 '18 at 8:41




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53442856%2fadd-a-stopwatch-to-a-game-in-pygame%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          這個網誌中的熱門文章

          Xamarin.form Move up view when keyboard appear

          Post-Redirect-Get with Spring WebFlux and Thymeleaf

          Anylogic : not able to use stopDelay()