pygame是主要构筑在SDL库基础上的一组Python模块的集合,它使我们能够用Python语言来创建功能完整的游戏和多媒体程序。pygame是高度括平台可移植的,在任何SDL支持的平台上都可以运行(几乎可以在任何平台和操作系统上运行)。

注:SDL(Simple DirectMedia Layer)是一个跨平台的多媒体库,可以用来访问底层的音频、键盘、鼠标、摇杆、3D硬件(通过OpenGL)以及2D视频缓冲。它被用在MPEG播放软件、模拟器和很多流行的游戏中,包括获得大奖的Linux版的”Civilization: Call To Power”。

安装Pygame

https://www.pygame.org/wiki/GettingStarted

  1. 1
  2. 2
  3. 3
  4. 4
  1. pip install pygame
  2. #检验是否安装成功
  3. python3 -m pygame.examples.aliens

导入

  1. 1
  2. 2
  3. 3
  1. import pygame
  2. # 引入 pygame 中的所有常量
  3. from pygame.locals import *

模块

模块 说明
cdrom 访问光驱
cursors 加载光标图像,包含标准光标
display 控制显示窗口或屏幕
draw 在Surface上绘制简单的图形
event 管理事件和事件队列
font 创建并呈现TrueType字体
image 保存并加载图像
joystick 管理游戏手柄设备
key 管理键盘
pygame.mixer 音效
mouse 管理鼠标
pygame.movie 播放视频
pygame.music 播放音频
pygame.rect 管理矩形区域
pygame.sprite 操作移动图像
sndarray 用numpy操纵声音
surfarray 用numpy处理图像
time 控制时间
transform 缩放,旋转和翻转图像

初始化和退出

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  1. # 导入并初始化所有 pygame 模块,使用其他模块之前,必须先调用 init 方法
  2. pygame.init()
  3. # 卸载所有 pygame 模块,在游戏结束之前调用,没有必要显式的调用这个函数,因为pygame会在python退出的时候自动清理所有已经初始化的模块
  4. pygame.quit()

窗口/suiface pygame.display

pygame.display模块用于创建、管理游戏窗口
需要先创建一个窗口。其他的活动都是基于窗口的

  1. 1
  1. pygame.display.set_mode(resolution=(0,0),flags=0,depth=0)
  • resolution:指定屏幕的宽和高,默认创建的窗口大小和屏幕大小一致
  • flags:标志位
    • FULLSCREEN 创建一个全屏窗口
    • DOUBLEBUF 创建一个“双缓冲”窗口,建议在HWSURFACE或者OPENGL时使用
    • HWSURFACE 创建一个硬件加速的窗口,必须和FULLSCREEN同时使用
    • OPENGL 创建一个OPENGL渲染的窗口
    • RESIZABLE 创建一个可以改变大小的窗口
    • NOFRAME 创建一个没有边框的窗口
  • depth:颜色的位深,默认自动匹配
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  1. # 指定窗口的宽和高
  2. # 只能有一个
  3. screen = pygame.display.set_mode((600,500))
  4. screen = pygame.display.set_mode((1024, 768), pygame.FULLSCREEN)
  5. # 设置窗口的标题
  6. pygame.display.set_caption('Hello World!')
  7. # 填充背景颜色
  8. screen.fill((255,255,255))
  9. # 刷新屏幕内容显示,把内容显示到屏幕上
  10. pygame.display.update()
  11. # 如果使用DOUBLEBUF,需要用flip函数把内容显示到屏幕上
  12. pygame.display.flip()
  13. # 可以查看当前设备支持的分辨率
  14. pygame.display.list_modes()

游戏循环

如果没有循环,窗口无法保持,只能看到一闪而过

一个游戏循环(也可以称为主循环)就做下面这三件事:

  1. 处理事件
  2. 更新游戏状态
  3. 绘制游戏状态到屏幕上
  1. 1
  2. 2
  1. while True:
  2. pass
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  1. import pygame
  2. from pygame.locals import *
  3. pygame.init()
  4. screen = pygame.display.set_mode((600,500))
  5. pygame.display.set_caption('Hello World')
  6. while True:
  7. pass
  8. pygame.quit()

坐标系

以左上角为(0,0)点,往右方向为X轴,往下方向为Y轴,单位为像素

矩形区域 pygame.Rect

pygame.Rect是用于存储直角坐标的pygame对象,在游戏中所有可见的元素都是以矩形区域来描述位置的(区别于绘制图形中的矩形)

对象

  1. 1
  2. 2
  1. Rect(left, top, width, height)
  2. Rect((left, top), (width, height))

前两项描述位置,后两项描述大小

属性

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  1. x,y
  2. top, left, bottom, right
  3. topleft, bottomleft, topright, bottomright
  4. midtop, midleft, midbottom, midright
  5. center, centerx, centery
  6. size, width, height

绘制图形 pygame.draw

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  1. pygame.draw.rect(Surface, color, Rect, width=0)
  2. # 绘制一个矩形形状
  3. pygame.draw.polygon(Surface, color, pointlist, width=0)
  4. # 绘制多边形
  5. pygame.draw.circle(Surface, color, pos, radius, width=0)
  6. # 围绕一个点画一个圆
  7. pygame.draw.ellipse(Surface, color, Rect, width=0)
  8. # 在矩形内绘制圆形
  9. pygame.draw.arc(Surface, color, Rect, start_angle, stop_angle, width=1)
  10. # 绘制一个椭圆的局部部分
  11. pygame.draw.line(Surface, color, start_pos, end_pos, width=1)
  12. # 画出一条直线段
  13. pygame.draw.lines(Surface, color, closed, pointlist, width=1)
  14. # 绘制多个连续的线段
  15. pygame.draw.aaline(Surface, color, startpos, endpos, blend=1)
  16. # 画精美的抗锯齿线
  17. pygame.draw.aalines(Surface, color, closed, pointlist, blend=1)
  18. # 绘制抗锯齿线的连接序列

实例

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  1. import pygame
  2. from pygame.locals import *
  3. from math import pi
  4. # 定义颜色
  5. RED = (255,0,0)
  6. GREEN = (0,255,0)
  7. BLUE = (0,0,255)
  8. pygame.init()
  9. screen = pygame.display.set_mode((600,600))
  10. pygame.display.set_caption('绘制图形')
  11. # screen.fill((255,255,255))
  12. pygame.draw.rect(screen,BLUE,(400,400,100,100))
  13. pygame.draw.polygon(screen,GREEN,[[400,0],[500,70],[450,100]],5)
  14. pygame.draw.circle(screen,BLUE,[10,500],40)
  15. pygame.draw.ellipse(screen,BLUE,(300,200,50,40))
  16. pygame.draw.ellipse(screen,RED,(200,200,50,40),5)
  17. pygame.draw.arc(screen,GREEN,(300,500,40,40),0,pi/2,2)
  18. pygame.draw.arc(screen,RED,(300,500,40,40),pi/2,pi,2)
  19. pygame.draw.arc(screen,BLUE,(300,500,40,40),pi,3*pi/2,2)
  20. pygame.draw.arc(screen,(255,255,255),(300,500,40,40),3*pi/2,2*pi,2)
  21. pygame.draw.line(screen,RED,[1,1],[50,50],5)
  22. pygame.draw.lines(screen,RED,True,
  23. [[0,80],[50,90],[200,80],[220,30]],5)
  24. pygame.draw.aaline(screen,RED,[80,80],[40,90],True)
  25. while 1:
  26. pass
  27. pygame.display.update()

字体/文本 pygame.font

pygame.font模块将文本打印到窗口

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  1. pygame.font.Font(filename, size)
  2. # filename:字体文件的文件名
  3. # size:字体的高 height,单位为像素
  4. pygame.font.Font.render(text, antialias, color, background=None)
  5. # text:要显示的文字,文字只能包含一行,换行符不会被画出来
  6. # antialias: 是否抗锯齿
  7. # color:字体颜色
  8. # background:背景颜色(可选参数),如果没有指定background,背景是透明的
  9. # 返回一个surgace
  10. pygame.font.get_fonts()
  11. # 获取可用的字体的列表
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  1. import pygame
  2. pygame.init()
  3. screen = pygame.display.set_mode((300,300))
  4. pygame.display.set_caption('Font')
  5. # 1.字体对象,指定字体和大小
  6. myfont = pygame.font.Font(None,60)
  7. # myfont = pygame.font.Font('./font/楷体_GB2312.ttf',60)
  8. # 2.指定文本内容,文本颜色,文本背景色
  9. textSufaceObj = myfont.render('Hello world',True,(255,255,255),(0,255,0))
  10. # 3.指定文本位置
  11. screen.blit(textSufaceObj,(50,100))
  12. while 1:
  13. # 4.显示文本
  14. pygame.display.update()
  15. pygame.quit()

图像

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  1. img = pygame.image.load(filename)
  2. # 加载一张图片
  3. # 返回一个包含图像的Surface,Surface的格式和原来的文件相同(包括颜色格式、透明色和alpha透明)
  4. pygame.Surface.blit(img, dest, area=None, special_flags = 0)
  5. # 将图片绘制到屏幕相应坐标上(后面两个参数默认,可以不传)
  6. pygame.image.save(img, filename)
  7. # 把img这个Surface的内容保存为filename指定的图像文件
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  1. import pygame
  2. from pygame.locals import *
  3. pygame.init()
  4. screen = pygame.display.set_mode((100,100))
  5. pygame.display.set_caption('Image')
  6. image = pygame.image.load('./Ball.png')
  7. # 获得图像位置
  8. imageRect = image.get_rect()
  9. # 指定图片居中
  10. imageRect.center = (50,50)
  11. screen.fill((156,178,166))
  12. # screen.blit(image,(50,50))
  13. screen.blit(image,imageRect)
  14. while 1:
  15. pygame.display.update()
  16. pygame.quit()

音频

背景音乐

  1. 1
  1. pygame.mixer.music.load(filename)

filename:音频文件的文件名
该方法用来加载背景音乐,之后调用 pygame.mixer.music.play( ) 方法就可以播放背景音乐(Pygame 只允许加载一个背景音乐在同一个时刻)
音乐文件可以很大,系统以流的形式播放

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 大专栏  Pygame相关>10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  1. pygame.init() #进行全部模块的初始化,
  2. pygame.mixer.init() #或者只初始化音频部分
  3. pygame.mixer.music.load('xx.mp3') #使用文件名作为参数载入音乐 ,音乐可以是ogg、mp3等格式。载入的音乐不会全部放到内容中,而是以流的形式播放的,即在播放的时候才会一点点从文件中读取。
  4. pygame.mixer.music.play() #播放载入的音乐。该函数立即返回,音乐播放在后台进行。
  5. #play方法还可以使用两个参数
  6. pygame.mixer.music.play(loops=0, start=0.0) #loops和start分别代表重复的次数和开始播放的位置
  7. pygame.mixer.music.stop() #停止播放
  8. pygame.mixer.music.pause() #暂停播放
  9. pygame.mixer.music.unpause() #取消暂停
  10. pygame.mixer.music.fadeout(time) #用来进行淡出,在time毫秒的时间内音量由初始值渐变为0,最后停止播放
  11. pygame.mixer.music.set_volume(value) #来设置播放的音量,音量value的范围为0.0到1.0
  12. pygame.mixer.music.get_busy() #判断是否在播放音乐,返回1为正在播放
  13. pygame.mixer.music.set_endevent(pygame.USEREVENT + 1) #在音乐播放完成时,用事件的方式通知用户程序,设置当音乐播放完成时发送
  14. pygame.USEREVENT+1 #事件给用户程序
  15. pygame.mixer.music.queue(filename) #使用指定下一个要播放的音乐文件,当前的音乐播放完成后自动开始播放指定的下一个。一次只能指定一个等待播放的音乐文件
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  1. import pygame
  2. pygame.init()
  3. pygame.mixer.music.load('./sound/background.mp3')
  4. pygame.mixer.music.play()
  5. while 1:
  6. pass

循环播放

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  1. import pygame
  2. pygame.init()
  3. pygame.mixer.music.load('./sound/曲锦楠 - 霞光.mp3')
  4. pygame.mixer.music.play()
  5. clock = pygame.time.Clock()
  6. while 1:
  7. clock.tick(1)
  8. isbusy = pygame.mixer.music.get_busy()
  9. print(isbusy)
  10. if isbusy == 0:
  11. pygame.mixer.music.play()

特效声音

要在游戏中播放碰撞、爆炸、语音等音效,需要使用pygame.mixer模块。这个模块支持同时播放多个音效文件,多个文件在多个不同的通道Channel中播放,一个通道一次只能播放一个音效文件。

音效和音乐的区别是:音效要整个文件载入到Sound对象中才能播放,而音乐不用完全载入,而以流的方式播放。

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  1. pygame.mixer.get_num_channels()
  2. # 查看总共有多少个通道
  3. channel = pygame.mixer.Channel(i)
  4. # 取得第i个通道
  5. channel = pygame.mixer.find_channel()
  6. # 自动取得一个空闲的通道(没有音效正在播放的通道)
  7. sound = pygame.mixer.Sound('./sound/enemy1_down.wav')
  8. channel.play(sound)
  9. # 在一个通道中播放一个音效
  10. sound.play()
  11. # 自动找一个空闲的通道播放音效
  12. sound.stop()
  13. # 停止音效sound的播放
  14. channel.stop()
  15. # 停止在通道channel中播放的音效
  16. channel.pause()
  17. # 暂停通道中的音效
  18. channel.unpause()
  19. # 暂停的音效继续播放
  20. channel.get_busy()
  21. # 检查通道是否正在播放音效
  22. channel.fadeout(time)
  23. # 淡出,在time毫秒的时间内音量由初始值渐变为0,最后停止播放
  24. channel.queue(soundfile)
  25. # 为正在播放音效的通道指定下一个要播放的音效。当前的音效播放完成后,下一个音效会自动播放。一个通道只能有一个等待播放的音效。
  26. channel.set_volume(value)
  27. # 设置通道中播放的音效的音量
  28. sound.set_volume(value)
  29. # 设置单个音效的音量
  30. # 两者的取值范围都是0.0到1.0。音效播放的实际音量是通道音量和音效音量的乘积,比如通道音量0.5,音效音量0.6,则实际播放的音量为0.3

说了这么多,实际上只需要两句就足够了

  1. 1
  2. 2
  1. sound = pygame.mixer.Sound('./sound/enemy1_down.wav')
  2. sound.play()

视频 pygame.movie

https://stackoverflow.com/questions/37775635/pygame-movie-missing

该模块已经过时

要在游戏中播放片头动画、过场动画等视频画面,可以使用pygame.movie模块

要播放视频中的音乐,pygame.movie模块需要对音频接口的完全控制,不能初始化mixer模块。因此要这样完成初始化~~

  1. 1
  2. 2
  1. pygame.init()
  2. pygame.mixer.quit()

或者只初始化

  1. 1
  1. pygame.display.init()
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  1. movie = pygame.movie.Movie(’filename’)
  2. # 指定文件名载入视频。视频的格式可以为mpeg1。视频文件不会马上全部载入内存,而是在播放的时候一点一点的载入内存。
  3. movie.set_display(pygame.display.set_mode((640,480)))
  4. # 指定播放的surface。
  5. movie.set_volume(value)
  6. # 指定播放的音量。音量的值value的取值范围为0.0到1.0。
  7. movie.play()
  8. # 播放视频。这个函数会立即返回,视频在后台播放。这个函数可以带一个参数loops,指定重复次数。
  9. movie.stop()
  10. # 停止播放
  11. movie.pause()
  12. # 暂停播放
  13. movie.skip(seconds)
  14. # 使视频前进seconds秒钟。
  15. 如有不懂的可以参考Pygame的官方例子,在Python安装目录下的libsite-packagespygameexamplesmovieplayer.py文件。

动画

帧率(Frame rate):每秒钟能够刷新的次数

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  1. pygame.time.Clock()
  2. # 获得 pygame 的时钟对象
  3. pygame.time.Clock.tick(FPS)
  4. # 设置 pygame 时钟的间隔时间
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  1. import pygame
  2. from pygame.locals import *
  3. pygame.init()
  4. screen = pygame.display.set_mode((100,100))
  5. pygame.display.set_caption('Image')
  6. image = pygame.image.load('./Ball.png')
  7. imageRect = image.get_rect()
  8. imageRect.center = (50,50)
  9. # screen.blit(image,(50,50))
  10. fps = pygame.time.Clock()
  11. while 1:
  12. fps.tick(10)
  13. imageRect.x += 1
  14. # 需要重新绘制背景
  15. screen.fill((156,178,166))
  16. screen.blit(image,imageRect)
  17. # pygame.display.flip()
  18. pygame.display.update()
  19. pygame.quit()

事件

Pygame通过一个事件系统与用户进行交互,以及处理一些系统发生的事件。事件系统包括一个事件队列,其中每一项都是一个Event对象。所有的用户输入和一些系统事件,都会形成一个Event对象被添加到事件队列中。
Event对象有各种不同的类型,通过Event.type属性来区分。不同的类型的Event对象还有不同的其它属性。通过Event.dict属性来查看。

详细:http://www.xefan.com/archives/83586.html

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  1. import pygame
  2. from pygame.locals import *
  3. pygame.init()
  4. screen = pygame.display.set_mode((600,600))
  5. pygame.display.set_caption('Event')
  6. while 1:
  7. # 获取事件列表
  8. for event in pygame.event.get():
  9. # 点击关闭
  10. if event.type == QUIT:
  11. pygame.quit()
  12. exit()
  13. # 鼠标移动
  14. if event.type == MOUSEMOTION:
  15. print(event.pos)
  16. if event.type == MOUSEBUTTONDOWN:
  17. print('鼠标按下',event.pos)
  18. if event.type == MOUSEBUTTONUP:
  19. print('鼠标抬起',event.pos)
  20. # 方向键
  21. if event.type == KEYDOWN:
  22. if (event.key == K_UP or event.key == K_w):
  23. print('上')
  24. if (event.key == K_DOWN or event.key == K_s):
  25. print('下')
  26. if (event.key == K_LEFT or event.key == K_a):
  27. print('左')
  28. if (event.key == K_RIGHT or event.key == K_d):
  29. print('右')
  30. if event.key == K_ESCAPE:
  31. pygame.quit()
  32. exit()

定时器

每隔多少时间触发一次事件
pygame中的时间是以毫秒(千分之一秒)表示的

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  1. # 自定义计时事件
  2. COUNT = pygame.USEREVENT +1
  3. # 每隔1秒发送一次自定义事件
  4. pygame.time.set_timer(COUNT,1000)
  5. # 获取事件
  6. for event in pygame.event.get():
  7. # 判断事件是否为计时事件
  8. if event.type == COUNT:
  9. pass

计时器

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  1. import pygame,time
  2. from pygame.locals import *
  3. SCREEN_RECT = pygame.Rect(0,0,700,200)
  4. COUNT = pygame.USEREVENT+1
  5. pygame.init()
  6. screen = pygame.display.set_mode(SCREEN_RECT.size)
  7. pygame.display.set_caption('time')
  8. font = pygame.font.Font(None,60)
  9. pygame.time.set_timer(COUNT,1000)
  10. while 1:
  11. for event in pygame.event.get():
  12. if event.type == QUIT:
  13. pygame.quit()
  14. exit()
  15. if event.type == COUNT:
  16. now = time.ctime()
  17. clock = now[11:19]
  18. timeObj = font.render(clock,True,(255,255,255))
  19. # timeObj = font.render(now,True,(255,255,255))
  20. timeRect = timeObj.get_rect()
  21. timeRect.center = SCREEN_RECT.center
  22. screen.fill((0,0,0))
  23. screen.blit(timeObj,timeRect)
  24. pygame.display.update()

冲突

while True: # 程序主循环
for event in pygame.event.get():# 获取事件
if event.type == QUIT:# 判断事件是否为退出事件
pygame.quit()# 退出pygame
sys.exit()# 退出系统
pygame.display.update()# 绘制屏幕内容

参考:

Pygame相关的更多相关文章

  1. pygame游戏开发-简介

    转自白月黑羽Python教程:http://www.python3.vip/doc/tutorial/python/game/ 推荐对Python有兴趣的童鞋可以关注去看看,教程语言平实,简单易懂. ...

  2. Python实战练习_贪吃蛇 (pygame的初次使用)

    正如标题所写的那样,我将一步步的完成本次实战练习——贪吃蛇.废话不多说,感兴趣的伙伴可以一同挑战一下. 首先说明本次实战中我的配备: 开发环境:python 3.7: 开发工具:pycharm2019 ...

  3. Python3+Pygame实现的射击游戏,很流畅,有音效

    之前看到过很多人写的飞机大战,当然了之前我也写过多个版本,总体来说功能是实现了,但总感觉不够"炫" 今天浏览Python资料的时候,意外发现了这个很好的"射击" ...

  4. 嵌入式单片机STM32应用技术(课本)

    目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...

  5. pyinstaller相关问题 & pygame文件打包成exe文件 & 武装飞船 & 飞机大战

    自己照书写了一个飞机大战游戏的python程序,想把它打包成一个exe文件,在查阅相关教程并经过数次尝试后终于成功. 安装打包应用 pyinstaller 在cmd命令窗口下pip install p ...

  6. centos上安装pygame

    安装前依赖包检查及安装 python-devel SDL_image-devel SDL_mixer-devel SDL_ttf-devel SDL-devel numpy subversion po ...

  7. 【python游戏编程之旅】第六篇---pygame中的Sprite(精灵)模块和加载动画

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 直到现在我们已经学了很多pygame基础知识了,从这篇博客开始我们将会学习pygame中高级部分,更多和精灵 ...

  8. 【python游戏编程之旅】第三篇---pygame事件与设备轮询

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame中的IO.数据http://www.cnblogs.com/msxh/ ...

  9. 【python游戏编程之旅】第一篇---初识pygame

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 一.pygame简介 Pygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础 ...

随机推荐

  1. C++中free()与delete的区别

    1.new/delete是C++的操作符,而malloc/free是C中的函数. 2.new做两件事,一是分配内存,二是调用类的构造函数:同样,delete会调用类的析构函数和释放内存.而malloc ...

  2. ubuntu16.04设置apt 阿里源

    sudo gedit /etc/apt/sources.listdeb http://mirrors.aliyun.com/ubuntu/ trusty main restricted univers ...

  3. java中多线程入门有趣介绍

    我们在网上可以看到所有有关于java的线程的基本概念的很多解释,不乏有很多详细经典的解释和代码解说.但是我们的很多初学者看完不能有一个直观的印象,特别是一些没有编程基础的学习者,很多时候要花很多时间去 ...

  4. 2019-2020-1 20199324《Linux内核原理与分析》第八周作业

    第七章 可执行程序工作原理 一.ELF目标文件格式 目标文件:ABI,应用程序二进制接口,是编译器生成的文件. ELF:可执行的和可链接的格式,是一个目标文件格式的标准.三种类型是: 可重定位文件:L ...

  5. mysql,主键与索引的区别和联系

    关系数据库依赖于主键,它是数据库物理模式的基石.主键在物理层面上只有两个用途: 惟一地标识一行. 作为一个可以被外键有效引用的对象. 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成 ...

  6. CSS样式表-------第二章:选择器

    二 .选择器 内嵌.外部样式表的一般语法: 选择器 { 样式=值: 样式=值: 样式=值: ...... } 以下面html为例,了解区分一下各种样式的选择器 <head> <met ...

  7. day13-面向对象

    #解决同一类问题,使用面向对象的思想.类是制造对象的模具,类是抽象的,我们能知道它有哪些属性(name,age,saraly),但不知道具体的属性值. #看下面代码:类Penson制造了实例化对象re ...

  8. n的m划分

    n的m划分: dp[i][j]表示j的i划分,也就是将j颗球放入i个袋子里面,最后的答案是dp[m][n] 状态转移方程为dp[i][j]=dp[i-1][j]+dp[i][j-i]; 划分方法有两种 ...

  9. 高级I/O

    1.阻塞问题的几种解决模型 1.1 非阻塞模型:类似于死循环,需要适当加休眠,防止cpu占用太高:效率较低 1.2 线程异步:效率最高的一种解决方案 1.3 I/O多路转接与复用  select(低) ...

  10. 头次接触wamp服务器、xampp,初次单独使用tomcat部署

    刚刚经过了近两天的接触wamp.xampp.tomcat的时光,真的爽 导师有个网站打不开了,就让我去弄,还有一个网站的后台密码忘了,让我帮忙找回来.我第一感觉就是第一个活不简单,第二个还不简单吗?打 ...