[关闭]
@yanglt7 2018-12-08T09:14:52.000000Z 字数 2026 阅读 832

Pygame02_事件

Pygame


事件随时可能发生,Pygame 的做法是把所有的事件都存放到事件队列里。通过 for 语句迭代取出每一条事件,然后处理关注的时间事件即可。

例 2 将程序运行期间产生的所有事件记录并保存到一个文件中。

  1. import pygame
  2. import sys
  3. pygame.init()
  4. size = width, height = 600, 600
  5. screen = pygame.display.set_mode(size)
  6. pygame.display.set_caption("FishC Demo")
  7. f = open("record.txt", 'w')
  8. while True:
  9. for event in pygame.event.get():
  10. f.write(str(event) + '\n')
  11. if event.type == pygame.QUIT:
  12. sys.exit()

此处输入图片的描述

Pygame 没有办法直接在一个 Surface 对象上面显示文字,因此需要调用 font 模块的 render() 方法,该方法是将要显示文字渲染成一个 Surface 对象,这样就可以调用 blit() 方法将一个 Surface 对象放到另一个上面。

例 2-1

  1. import pygame
  2. import sys
  3. pygame.init()
  4. size = width, height = 600, 600
  5. bg = (0, 0, 0)
  6. screen = pygame.display.set_mode(size)
  7. pygame.display.set_caption("FishC Demo")
  8. event_texts = []
  9. # 要在 Pygame 中使用文本,必须创建 Font 对象
  10. # 第一个参数指定字体,第二个参数指定字体的尺寸
  11. font = pygame.font.Font(None, 20)
  12. # 调用 get_linesize() 方法获得每行文本的高度
  13. line_height = font.get_linesize()
  14. position = 0
  15. screen.fill(bg)
  16. while True:
  17. for event in pygame.event.get():
  18. if event.type == pygame.QUIT:
  19. sys.exit()
  20. # render() 方法将文本渲染成 Surface 对象
  21. # 第一个参数是待渲染的文本
  22. # 第二个参数是指定是否消除锯齿
  23. # 第三个参数指定文本的颜色
  24. screen.blit(font.render(str(event), True, (0, 255, 0)), (0, position))
  25. position += line_height
  26. if position > height:
  27. # 满屏时清屏
  28. position = 0
  29. screen.fill(bg)
  30. pygame.display.flip()

此处输入图片的描述

此处输入图片的描述

  1. import pygame
  2. import sys
  3. from pygame.locals import * # 将 Pygame 的所有常量名导入
  4. pygame.init()
  5. size = width, height = 600, 600
  6. speed = [-21]
  7. bg = (255, 255, 255)
  8. clock = pygame.time.Clock()
  9. screen = pygame.display.set_mode(size)
  10. pygame.display.set_caption("初次见面,请多多关照!")
  11. turtle = pygame.image.load("turtle.png")
  12. position = turtle.get_rect()
  13. l_head = turtle # 龟头朝左
  14. r_head = pygame.transform.flip(turtle, True, False) # 龟头朝左
  15. while True:
  16. for event in pygame.event.get():
  17. if event.type == pygame.QUIT:
  18. sys.exit()
  19. if event.type == KEYDOWN:
  20. if event.key == K_LEFT:
  21. turtle = l_head
  22. speed = [-1, 0]
  23. if event.key == K_RIGHT:
  24. turtle = r_head
  25. speed = [1, 0]
  26. if event.key == K_UP:
  27. speed = [0, -1]
  28. if event.key == K_DOWN:
  29. speed == [0, 1]
  30. position = position.move(speed)
  31. if position.left < 0 or position.right > width:
  32. # 翻转图像
  33. turtle = pygame.transform.flip(turtle, True, False)
  34. # 反方向移动
  35. speed[0] = -speed[0]
  36. if position.top < 0 or position.bottom > height:
  37. speed[1] = -speed[1]
  38. screen.fill(bg)
  39. screen.blit(turtle, position)
  40. pygame.display.flip()
  41. clock.tick(30)

此处输入图片的描述

摘自《零基础入门学习Python》

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注