Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame as pg
- import pygame.freetype
- import traceback
- vec = pg.math.Vector2
- # initial resolutions
- WINDOW_W = 800
- WINDOW_H = 480
- def vec_to_int(vector):
- return int(vector.x), int(vector.y)
- class Game:
- def __init__(self):
- pg.init()
- # initial window flags
- self.flags = pg.VIDEORESIZE
- # application window surface
- self.app_screen = pg.display.set_mode((WINDOW_W, WINDOW_H),
- self.flags)
- self.app_screen_rect = self.app_screen.get_rect()
- self.clock = pg.time.Clock()
- self.running = True
- self.font = pygame.freetype.SysFont('arial', size=64)
- self.mpos = vec()
- self.mouse_visible = True
- def events(self):
- for event in pg.event.get():
- if event.type == pg.QUIT:
- self.running = False
- elif event.type == pg.KEYDOWN:
- if event.key == pg.K_ESCAPE:
- self.running = False
- elif event.key == pg.K_f:
- # toggle fullscreen
- self.flags = self.flags ^ pg.FULLSCREEN
- self.reset_app_screen(self.app_screen_rect.size)
- elif event.key == pg.K_m:
- # toggle mouse visibility
- self.mouse_visible = not self.mouse_visible
- pg.mouse.set_visible(self.mouse_visible)
- elif event.type == pg.VIDEORESIZE:
- # if the user resizes the window (drag the bottom right corner)
- # get the new size from the event dict and reset the
- # window screen surface
- self.reset_app_screen(event.dict['size'])
- def reset_app_screen(self, size):
- self.app_screen = pg.display.set_mode(size, self.flags)
- self.app_screen_rect = self.app_screen.get_rect()
- pg.display.update()
- def update(self, dt):
- self.mpos = vec(pg.mouse.get_pos())
- def draw(self):
- self.app_screen.fill(pg.Color('Purple'))
- # draw a circle following the mouse
- if pg.mouse.get_pressed()[0]:
- color = 'darkred'
- else:
- color = 'skyblue'
- pg.draw.circle(self.app_screen, pg.Color(color),
- vec_to_int(self.mpos), 60)
- # text that indicates if the mouse is visible
- txt, rect = self.font.render(f'mouse visible: {self.mouse_visible}',
- fgcolor=pg.Color('white'))
- rect.midbottom = self.app_screen_rect.midbottom - vec(0, 20)
- self.app_screen.blit(txt, rect)
- pg.display.update()
- def run(self):
- while self.running:
- delta_time = self.clock.tick() / 1000
- self.events()
- self.update(delta_time)
- self.draw()
- pg.quit()
- if __name__ == '__main__':
- try:
- g = Game()
- g.run()
- except:
- traceback.print_exc()
- pg.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement