Advertisement
Guest User

Untitled

a guest
Apr 6th, 2020
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.00 KB | None | 0 0
  1. import pygame as pg
  2. import pygame.freetype
  3. import traceback
  4.  
  5. vec = pg.math.Vector2
  6.  
  7. # initial resolutions
  8. WINDOW_W = 800
  9. WINDOW_H = 480
  10.  
  11.  
  12. def vec_to_int(vector):
  13.     return int(vector.x), int(vector.y)
  14.  
  15.  
  16. class Game:
  17.     def __init__(self):
  18.         pg.init()
  19.         # initial window flags
  20.         self.flags = pg.VIDEORESIZE
  21.         # application window surface
  22.         self.app_screen = pg.display.set_mode((WINDOW_W, WINDOW_H),
  23.                                               self.flags)
  24.         self.app_screen_rect = self.app_screen.get_rect()
  25.         self.clock = pg.time.Clock()
  26.         self.running = True
  27.         self.font = pygame.freetype.SysFont('arial', size=64)
  28.         self.mpos = vec()
  29.         self.mouse_visible = True
  30.  
  31.     def events(self):
  32.         for event in pg.event.get():
  33.             if event.type == pg.QUIT:
  34.                 self.running = False
  35.             elif event.type == pg.KEYDOWN:
  36.                 if event.key == pg.K_ESCAPE:
  37.                     self.running = False
  38.                 elif event.key == pg.K_f:
  39.                     # toggle fullscreen
  40.                     self.flags = self.flags ^ pg.FULLSCREEN
  41.                     self.reset_app_screen(self.app_screen_rect.size)
  42.                 elif event.key == pg.K_m:
  43.                     # toggle mouse visibility
  44.                     self.mouse_visible = not self.mouse_visible
  45.                     pg.mouse.set_visible(self.mouse_visible)
  46.             elif event.type == pg.VIDEORESIZE:
  47.                 # if the user resizes the window (drag the bottom right corner)
  48.                 # get the new size from the event dict and reset the
  49.                 # window screen surface
  50.                 self.reset_app_screen(event.dict['size'])
  51.    
  52.     def reset_app_screen(self, size):
  53.         self.app_screen = pg.display.set_mode(size, self.flags)
  54.         self.app_screen_rect = self.app_screen.get_rect()
  55.         pg.display.update()
  56.  
  57.     def update(self, dt):
  58.         self.mpos = vec(pg.mouse.get_pos())
  59.  
  60.     def draw(self):
  61.         self.app_screen.fill(pg.Color('Purple'))
  62.         # draw a circle following the mouse
  63.         if pg.mouse.get_pressed()[0]:
  64.             color = 'darkred'
  65.         else:
  66.             color = 'skyblue'
  67.         pg.draw.circle(self.app_screen, pg.Color(color),
  68.                        vec_to_int(self.mpos), 60)
  69.         # text that indicates if the mouse is visible
  70.         txt, rect = self.font.render(f'mouse visible: {self.mouse_visible}',
  71.                                      fgcolor=pg.Color('white'))
  72.         rect.midbottom = self.app_screen_rect.midbottom - vec(0, 20)
  73.         self.app_screen.blit(txt, rect)
  74.         pg.display.update()
  75.  
  76.     def run(self):
  77.         while self.running:
  78.             delta_time = self.clock.tick() / 1000
  79.             self.events()        
  80.             self.update(delta_time)
  81.             self.draw()
  82.         pg.quit()
  83.  
  84.  
  85. if __name__ == '__main__':
  86.     try:
  87.         g = Game()
  88.         g.run()
  89.     except:
  90.         traceback.print_exc()
  91.         pg.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement