python游戏库pygame经典教程

article/2025/10/6 11:00:35

目录

一.Pygame程序基本搭建过程

        1.初始化化程序

        2.创建Surface对象

        3.事件监听

        4.游戏循环 

二.Pygame Display显示模块详解

        1.将Surface对象粘贴至主窗口上

        2.设置窗口主窗口

        3.填充主窗口背景,参数值RGB

        4.设置窗口标题

        5.更新屏幕内容

        6.pygame.display其他方法

三.Pygame Surface创建图像

        1.Surface模块创建图像

        2.Surface从外部加载图像

四.Pygame Transform图像变形 

五.Pygame Time时间控制

        1.游戏暂停

        2.设置游戏的帧数率(FPS)

六.Pygame Rect区域位置

七.Pygame Event事件模块 

        1.事件类型

        2.事件处理方法

        3.处理键盘事件

        4.处理鼠标事件

 八.Pygame Dra绘图函数

        1.绘制矩形

        2.绘制多边形

        3.绘制圆形

        4.绘制椭圆形

        5.绘制圆弧曲线

        6.绘制直线

九.字体绘制

十.音频播放


一.Pygame程序基本搭建过程

Pygame搭建游戏窗口主要为如下几步

1.初始化化程序

在使用Pygame编程之前,我们要对程序进行初始化,代码如下

pygame.init()

该代码是整个程序的第一句代码,它的作用是自动检测Pygame软件包是否正常,并完成包括display(显卡模块),font(字体模块),mixer(声音模块),cursors(光标控制模块)等的模块的初始化


2.创建Surface对象

Surface是Pygame编程的窗口界面,类似画布,图像和文本可以显示在Surface上,创建方式主要有以下方式

(1)创建Surface对象:

#也可以叫做screen对象,本质上是一个Surface对象
screen = pygame.display.set_mode(400,400)

(2)创建一个带文本的Surface对象:

#创建一个包含文字的Surface对象
text = f.render("小马哥不马虎",True,(255,255,255),(0,0,0))
#通过blit方法将其绘制出来,textRect表示位置坐标
screen.blit(text,textRect)

(3)创建一个包含图像的Surface对象:

surface_image = pygame.image.load("图片路径")

3.事件监听

一个好的游戏少不了游戏与人的交互,通过事件,人按自己的想法对游戏进行交互

如下是一个关闭游戏的简单交互:

#所有get()获取事件
for event in pygame.event.get():#判断事件类型if event.type == pygame.QUIT:pygame.quit()

4.游戏循环 

代码:

while True:for event in pymage.event.get():if event.type == pygame.QUIT:pymage.quit()sys.exit()#更新并绘制屏幕内容pygame.display.flip()

二.Pygame Display显示模块详解

Pygame使用pygame.display显示模块中的方法创建游戏的主窗口:

格式:

screen = pygame.display.set_mode(size=(),flags=0)

·size:用来设置窗口的大小

·flags:功能标志位,表示创建的主窗口样式,flags参数如下:

flags参数
标志位功能
pygame.FULLSCREEN创建一个全屏窗口
pygame.HWSURFACE创建一个硬件加速窗口,必须和FULLSCREEN同时使用
pygame.OPENGL创建一个OPENGL渲染窗口
pygame.RESIZABLE创建一个可以改变大小的窗口
pygame.DOUBLEBUF创建一个双缓冲窗口,建议在HWSURFACE或OPENGL时使用
pygame.NOFRAME创建一个没有边框的窗口

1.将Surface对象粘贴至主窗口上

代码:

scrren.blit(source,dest,area=None,special_flage=0)

·source:表示要粘贴的Surface对象

·dest:主窗口一个标识的坐标位置

·area:接受一个Rect对象,默认为None,如果提供该参数则相当于抠图操作,即在屏幕的指定位置显示想要的内容

·special_flags:可选参数,用于指定对应位置颜色的混合方式


2.设置窗口主窗口

screen = pygame.display.set_mode(400,400)

3.填充主窗口背景,参数值RGB

screen.fill((156,156,156))

4.设置窗口标题

pygame.display.set.caption('小马哥不马虎')

5.更新屏幕内容

pygame.display.flip()

6.pygame.display其他方法

方法名称说明
pygame.display.get_surface()获取当前显示的Surface对象
pygame.display.flip()更新整个待显示的Surface对象到屏幕上
pygame.display.update()更新部分软件界面显示
pygame.display.lnfo()产生一个VideInfo对象,包含了显示界面的相关信息
pygame.display.set_icon()设置左上角的游戏图标,图标尺寸大小为32*32
pygame.display.iconify()将显示的主窗口即Surface对象最小化,或者隐藏
pygame.display.get_active()当前显示界面显示在屏幕上时返回True,如果窗口被隐藏和最小化时则返回False

三.Pygame Surface创建图像

1.Surface模块创建图像

语法格式:

Surface=pygame.Surface(size=(width,height),flags,depth)

·size:表示Surface对象的矩形区域大小

·flage:功能标志位,有两个可选参数值HWSURFACE和SPCALPHA,前者代表将创建的Surface对象存放于显存中,后者表示让图像的每一个像素包含一个alpha通道

·depth:指定像素的颜色深度,默认为自适应模式,由Pygame自动调节

代码实例:

import pygame
import syspygame.init()
#设置主窗口
screen = pygame.display.set_mode((400,400))
screen.fill('blue')
#设置窗口标题
pygame.display.set_caption('小马哥不马虎')
#创建一个图像
face = pygame.Surface((60,60),flags=pygame.HWSURFACE)
#填充图像
face.fill(color='pink')
while True:for event in pygame.event.get():if event.type==pygame.QUIT:pygame.quit()sys.exit()#将图像添加到主屏幕上screen.blit(face,(100,100))#更新屏幕内容pygame.display.flip()

效果:


2.Surface从外部加载图像

语法格式:

pygame.image.load('图片路径').convert()

代码实例:

import pygame
import syspygame.init()
#设置主窗口
screen = pygame.display.set_mode((400,400))
screen.fill('white')
#设置窗口标题
pygame.display.set_caption('小马哥不马虎')
#加载图片
image_surface = pygame.image.load('C:/Users/myun/Pictures/不知火舞.jpg')
image_surface.fill((0,0,255),rect=(100,100,100,50),special_flags=0)
image_surface.scroll(100,60)  #移动图片
while True:for event in pygame.event.get():if event.type==pygame.QUIT:pygame.quit()sys.exit()#将图像添加到主屏幕上screen.blit(image_surface,(0,0))#更新屏幕内容pygame.display.flip()

效果图:

Surface模块处理图像方法:

方法说明
pygame.Surface.blit()将一个图像绘制到另一个图像上
pygame.Surface.convert()修改图像的格式
pygame.Surface.fill()使用纯色填充Surface图像
pygame.Surface.scroll()复制并移动Surface对象
pygame.Surface.set_alpha()设置整个图像的透明度
pygame.Surface.get_at()获取一个像素的颜色值
pygame.Surface.set_at()设置一个像素的颜色值
pygame.Surface.get_palette()获取Surface对象8位索引的调色板
pygame.Surface.map_rgb()将一个RGBA颜色转换为映射的颜色值
pygame.Surface.set_clip()设置该Surface对象的剪切区域
pygame.Surface.subsurface()根据父对象创建一个新的子Surface对象
pygame.Surface.get_offset()获取子Surface对象在父对象中的偏移量
pygame.Surface.get_size()获取Surface对象的大小

四.Pygame Transform图像变形 

Transform方法
方法说明
pygame.transform.scale()将图片缩放至指定的大小,并返回一个新的Surface对象
pygame.transform.rotate()将图片旋转至指定角度
pygame.transform.rotozoom()以角度旋转图像,同时将图像缩小或放大至指定的倍数

五.Pygame Time时间控制

1.游戏暂停

Pygame.time模块提供以下常用方法

方法说明
pygam.time.get_ticks()以毫秒为单位获取时间
pygame.time.wait()使程序暂停一段时间
pygame.time.set_time()创建一个定时器,即每隔一段时间就去执行一些动作
pygame.time.Clock()创建一个时间对象来帮助我们确定游戏要以多大的帧数运行

代码实例:

import pygame
pygame.init()
screen =pygame.display.set_mode((500,400))
pygame.display.set_caption('时间设置')
#获取时间
t=pygame.time.get_ticks()
#暂停游戏3000毫秒
t1=pygame.time.wait(3000)
print(t1)
image_surface=pygame.image.load('C:/Users/myun/Pictures/不知火舞.jpg')
while True:for event in pygame.event.get():if event.type==pygame.QUIT:exit()screen.blit(image_surface,(0,0))pygame.display.update()

效果:三秒后加载图片


2.设置游戏的帧数率(FPS)

Clock()方法可以实现对游戏帧数的设置

方法说明
pygame.time.Clock.tick()更新clock对象
pygame.time.Clock.get_time()获取上一个tick中的时间
pygame.time.Clock.get_fps()计算clock对象的帧数

代码实例:

import pygame
pygame.init()
screen =pygame.display.set_mode((500,400))
pygame.display.set_caption('时间设置')
#获取时间
t=pygame.time.get_ticks()
#暂停游戏3000毫秒
t1=pygame.time.wait(3000)
print(t1)
image_surface=pygame.image.load('C:/Users/myun/Pictures/不知火舞.jpg')
#创建时间对象
clock = pygame.time.Clock()
while True:#通过时间对象指定循环帧数,每秒循环60次clock.tick(60)for event in pygame.event.get():if event.type==pygame.QUIT:exit()screen.blit(image_surface,(0,0))pygame.display.update()

注:游戏帧数中在动态图时才显现出来


六.Pygame Rect区域位置

Rect()方法创建一个指定位置,指定大小的矩形区域

语法格式:

Rect=pygame.Rect(left,top,width,height)

代码实例: 

import pygame
pygame.init()
screen = pygame.display.set_mode((500,300))
pygame.display.set_caption('小马哥不马虎')
image_surface = pygame.image.load("C:/Users/myun/Pictures/bg.jpg")
rect1 = pygame.Rect(50,50,100,100)
# 在原图的基础上创建一个新的子图(surface对象)
image_child= image_surface.subsurface(rect1)
while True:for event in pygame.event.get():if event.type == pygame.QUIT:exit()#在屏幕上显示子图的区域screen.blit(image_child,rect1)pygame.display.update()

效果:在图片上截取了一个和Rect1同样大小的矩形区域

Rect对其他常用方法:

方法说明
pygame.Rect.copy()复制矩形
pygame.Rect.move()移动矩形区域,接受一个列表参数
pygame.Rect.move_ip()移动矩形(无返回)
pygame.Rect.inflate()增大或缩小矩形
pygame.Rect.clamp()将矩形移动到另一个矩形内
pygame.Rect.union()返回两个矩形合并后的矩形
pygame.Rect.fit()按横纵比调整矩形或移动矩形
pygame.Rect.contains()测试一个矩形是否在另个矩阵内
pygame.Rect.collidepoint()测试点是否在矩形中
pygame.Rect.colliderect()测试两个矩形是否重叠

七.Pygame Event事件模块 

1.事件类型

通过事件类型,可以有序的,逐一的处理用户的操作

事件
事件类型描述成员属性
        QOUIT用户按下窗口的关闭按钮none
ATIVEEVENTPygame被激活或者隐藏

gain,state

 KEYDOWN键盘按下unicode,key,mod
KEYUP键盘释放key,mod
MOUSEMOTION鼠标移动pos,rel,button
MOUSEBUTTONDOWN鼠标按下pos,button
MOUSEBUTTONUP鼠标放开pos,button
JOYAXISMOTION游戏手柄(Joystick or pad)移动joy,axis,value
JOYBALLMOTION游戏球(Joy  ball)移动joy,axis,value
JOYHATMOTION游戏手柄(Joystick)移动joy,axis,value
JOYBUTTONDOWN游戏手柄按下joy,button
JOYBUTTONUP游戏手柄放开joy,button
VIDEORESIZEpygame窗口缩放size,w,h
VIDEOEXPOSEPygame窗口部分公开none
USEREVENT触发一个用户事件事件代码

2.事件处理方法

Pygam.event模块提供了处理事件的常用方法,如下:

方法说明
pygame.event.get()从事件队列获取一个事件,并在事件队列中删除该事件
pygame.event.wait()阻塞直至事件发生才会继续执行,若没有事件发生将一直处于阻塞状态
pygame.event.set_blocked()控制哪些事件禁止进入队列,如果参数值为None,则表示禁止所有事件进入
pygame.event.pump()调用该方法后,Pygame会自动处理事件队列
pygame.event.poll()会根据实际情况返回一个真实的事件,或者一个None
pygame.event.peek()检测某类事件是否在队列中
pygame.event.clear()从队列中清除所有的事件
pygame.event.get_blocked()检测某一类型的事件是否被禁止进入队列
pygame.event.post()放置一个新的事件在队列中
pygame.event.Event()创建一个用户自定义的事件
pygame.event.set_allowed()控制哪些事件允许进入队列

3.处理键盘事件

键盘事件通过一个key属性,通过该属性可以获取键盘的按键,如下是键盘按键的常量:

常量名描述
K_BACKSPACE

退格键(Backspace)

K_TAB制表键(Tab)
K_CLEAR清除键(Clear)
K_RETURN回车键(Enter)
K_PAUSE暂停键(Pause)
K_ESCAPE退出键(Escape)
K_SPACE

空格键(Space)

K_0~K_90~9
K_a~k_za~z
K_DELETE

删除键(delete)

K_KP0~K_KP9

小键盘的0~9

K_F1~K_F15F1~F15
K_UP向上箭头
K_DOWN向下箭头
K_RIGHT向右箭头
K_LEFT向左箭头
KMOD_ALT同时按下Alt键

4.处理鼠标事件

事件说明
MOUSEMOTION鼠标按下
MOUSEBUTTONDOWN鼠标释放
MOUDEBUTTONUP鼠标释放

import pygame
from random import randint
# 初始化程序
pygame.init()
screen = pygame.display.set_mode((450,400))
# 更新显示
pygame.display.flip()
while True:#等待事件发生event = pygame.event.wait()if event.type == pygame.QUIT:exit("成功退出")if event.type == pygame.MOUSEBUTTONDOWN:# pos 获取鼠标当前位置print('鼠标按下',event.pos)mx,my = event.pos# 调用 pygame.draw 模块画圆pygame.draw.circle(screen,(255,255,0),(mx,my),50)# 处理完,更新显示pygame.display.update()if event.type == pygame.MOUSEBUTTONUP:print('鼠标弹起')passif event.type == pygame.MOUSEMOTION:print('鼠标移动')mx, my = event.pos# 随机生成 RGB 颜色值r = randint(0,255)g = randint(0,255)b = randint(0,255)pygame.draw.circle(screen, (r,g,b,),(mx, my), 50)# 处理完,更新显示pygame.display.update()

 八.Pygame Dra绘图函数

1.绘制矩形

语法格式:

pygame.draw.rect(surface,color,rect,width)

·surface:指主窗口

·color:该参数用于图形着色

·rect:绘制图形的位置和大小

·width:可选参数,指定边框的宽度,默认为0,表示填充该矩形区域

注:当width>0时,表示线框的宽度,而width<0时,此时不会绘制任何图形


2.绘制多边形

语法格式:

pygame.draw.polygon(surface,color,points,width)

其余参数与上面相同,points表示组成多边形的多个(x,y)坐标


3.绘制圆形

语法格式:

pygame.circle(surface,color,pos,radius,width=0)

·pos:该参数用来指定圆心的位置

·radius:用来指定圆的半径


4.绘制椭圆形

语法格式:

pygame.draw.ellipse(surface,Rect,width=0)

5.绘制圆弧曲线

语法格式:

pygame.draw.arc(Surface,color,Rect,start_angle,stop_angle,width=1)

·start_angle:该段该段圆弧的起始角度

·stop_angle:终止角度


6.绘制直线

语法格式:

一条直线:

pygame.draw.line(surface,color,start_pos,end_pos,width=1)

·start_posend_pos:表示线段的起始位置和结束位置(x,y)

·width=1:表示直线的宽度,默认为1

一条消除锯齿的平滑线:

pygame.aaline(surface,color,start_pos,end_pos,blend=1)

多条直线:

pygame.line(surface,color,closed,pointlist,width=1)

·pointlist:参数列表,包含了一些列点坐标的列表

·closed:布尔参数,如果设置为True,表示直线的第一个端点和直线的最后一个端点要首尾相连

多条抗锯齿直线:

pygame.draw.aalines(surface,color,closed,pointlist,blend=1)

绘图方法总汇:

pygame.draw模块绘图方法
方法说明
pygame.draw.rect()绘制矩阵
pygame.draw.polygon()绘制多边形
pygame.draw.circle()根据圆心和半径绘制圆形
pygame.draw.ellipse()绘制一个椭圆形
pygame.draw.arc()绘制弧线
pygame.draw.line()绘制线段
pygame.draw.ines()绘制多条连续的线段
pygame.draw.aaline()绘制一条平滑的线段(抗锯齿)
pygame.draw.aalines()绘制多条连续的线段

代码实例:

import pygame
from math import pi
#初始化
pygame.init()
# 设置主屏幕大小
size = (500, 450)
screen = pygame.display.set_mode(size)
# 设置一个控制主循环的变量
done = False
#创建时钟对象
clock = pygame.time.Clock()
while not done:# 设置游戏的fpsclock.tick(10)for event in pygame.event.get():if event.type == pygame.QUIT:done = True  # 若检测到关闭窗口,则将done置为True# 绘制一条宽度为 3 的红色对角线pygame.draw.line(screen, (0, 255, 0), [0, 0], (500, 450), 3)# 绘制多条蓝色的直线(连续直线,非抗锯齿),False 表示首尾不相连pygame.draw.lines(screen, (0, 0, 255), False, [[0, 80], [50, 90], [200, 80], [220, 30]], 1)# 绘制一个灰色的矩形区域,以灰色填充区域pygame.draw.rect(screen, (155, 155, 155), (75, 10, 50, 20), 0)# 绘制一个线框宽度为2的矩形区域pygame.draw.rect(screen, (0, 0, 0), [150, 10, 50, 20],2)# 绘制一个椭圆形,其线宽为2pygame.draw.ellipse(screen, (255, 0, 0), (225, 10, 50, 20), 2)# 绘制一个实心的红色椭圆形pygame.draw.ellipse(screen, (255, 0, 0), (300, 10, 50, 20))# 绘制一个绿色边框(宽度为2)三角形pygame.draw.polygon(screen, (100, 200, 45), [[100, 100], [0, 200], [200, 200]], 2)# 绘制一个蓝色实心的圆形,其中[60,250]表示圆心的位置,40为半径,width默认为0pygame.draw.circle(screen, (0, 0, 255), [60, 250], 40)# 绘制一个圆弧,其中0表示弧线的开始位置,pi/2表示弧线的结束位置,2表示线宽pygame.draw.arc(screen, (255, 10, 0), (210, 75, 150, 125), 0, pi / 2, 2)# 刷新显示屏幕pygame.display.flip()
# 点击关闭,退出pygame程序
pygame.quit()

效果图:


九.字体绘制

font模块可以绘制字体

·pygame.font.Font(filename,size):获取字体

·pygame.font.Font.render(text,antialias,color,background=None):显示字体

·get_rect():获取坐标对象

实例:

import pygame,sys
from pygame.locals import *pygame.init()surface = pygame.display.set_mode((500, 400), 0, 32)
pygame.display.set_caption("文字绘制")
surface.fill((255, 255, 255))# 获取字体对象,可以获取系统自带的,也可以自定义字体
fonts = pygame.font.get_fonts()
fonts = 'fonts/ARBERKLEY.ttf'
basicFont = pygame.font.SysFont(fonts, 50)# surface对象
text = basicFont.render('这是一串字符', True, (255,255,255), (0,255,0))# 设置文本位置
textRect = text.get_rect()textRectObj.center = (250, 200)# 将渲染的surface对象更新到屏幕上
surface.blit(text,textRect)# 程序主循环
while True:# 获取事件for event in pygame.event.get():# 判断事件是否为退出事件if event.type == QUIT:# 退出pygamepygame.quit()# 退出系统sys.exit()# 绘制屏幕内容pygame.display.update()

十.音频播放

mixer音频模块

·pygame.mixer.Sound(filename):播放特效音

·pygame.mixer.music.load(filename):加载背景音乐

代码实例:

import pygame, sys
from pygame.locals import *# 初始化pygame
pygame.init()# 设置窗口的大小,单位为像素
screen = pygame.display.set_mode((500, 400))# 设置窗口的标题
pygame.display.set_caption('音频播放')# 设置背景
screen.fill((255, 255, 255))# 加载并播放一个特效音频文件
sound = pygame.mixer.Sound('C:/Users/myun/Music/狙击枪.wav')
sound.play()# 加载背景音乐文件
pygame.mixer.music.load('C:/Users/myun/Music/Oh The Larceny - Light That Fire.mp3')# 播放背景音乐,第一个参数为播放的次数(-1表示无限循环),第二个参数是设置播放的起点(单位为秒)
pygame.mixer.music.play(-1, 0.0)# 程序主循环
while True:# 获取事件for event in pygame.event.get():# 判断事件是否为退出事件if event.type == QUIT:# 停止播放背景音乐pygame.mixer.music.stop()# 退出pygamepygame.quit()# 退出系统sys.exit()# 绘制屏幕内容pygame.display.update()


http://chatgpt.dhexx.cn/article/auEKT4Cn.shtml

相关文章

Python游戏编程(Pygame)

安装Pygame pip install pygameC:\Users> pip install pygame Collecting pygame Downloading https://files.pythonhosted.org/packages/3e/f5/feabd88a2856ec86166a897b62bfad828bfe7a94a27cbd7ebf07fd 70399/pygame-1.9.4-cp37-cp37m…

Python、PyGame游戏项目

英文打字游戏项目 项目简介 英文打字小游戏&#xff0c;友好的多界面交互&#xff0c;界面整洁、美观&#xff0c;可动态调节游戏等级难度&#xff0c;可配置游戏信息。 有游戏分数&#xff0c;游戏时间&#xff0c;拼写特效&#xff0c;背景音乐&#xff0c;不同游戏等级的历…

手把手教你用python写游戏

引言 最近python语言大火&#xff0c;除了在科学计算领域python有用武之地之外&#xff0c;在游戏、后台等方面&#xff0c;python也大放异彩&#xff0c;本篇博文将按照正规的项目开发流程&#xff0c;手把手教大家写个python小游戏,项目来自《Python编程从入门到实践》&…

分享30个有趣的 Python小游戏,我能玩一天

大家好&#xff0c;今天给大家带来30个 Python 小游戏&#xff0c;喜欢记得点赞、一定要收藏&#xff0c;完整版代码&#xff0c;文末获取 文章目录 有手就行1、吃金币2、打乒乓3、滑雪4、并夕夕版飞机大战5、打地鼠 简简单单6、小恐龙7、消消乐8、俄罗斯方块9、贪吃蛇 普普通通…

Python游戏汇总:三十个pygame游戏代码【附源码免费分享】

导语 哈喽哈喽&#xff01;我是木木子&#xff01; ​ 每日更新游戏不知不觉已经很多啦~ Python兴趣始于游戏&#xff0c;所以更新的文章中基本上都是游戏代码居多。 然后我疯狂的找各种小游戏、小脚本、小项目的教程源码什么的&#xff0c;然后自己进行学习、制作、修改等…

Python游戏汇总:三十个pygame游戏代码

提示&#xff1a;爱学习哦&#xff0c;不要沉迷游戏&#xff0c;平时打发一下无聊时间最好啦 正文 欢迎阅读&#xff1a; 1.python21点小游戏。2.Python笨鸟先飞小游戏。3.python绘制满天星小游戏。4.吃豆豆小游戏项目。 5.python忍者奔跑小游戏。6.python迷宫小游戏。7.pyt…

8个Python小游戏,可以上班摸鱼玩一天

1、吃金币 源码分享&#xff1a; import os import cfg import sys import pygame import random from modules import *游戏初始化 def initGame():# 初始化pygame, 设置展示窗口pygame.init()screen pygame.display.set_mode(cfg.SCREENSIZE)pygame.display.set_caption(ca…

30个Python小游戏,小白练手,我都能玩一天【内附源码】

今天给大家带来30个py小游戏&#xff0c;一定要收藏&#xff01; 全部源码都整理好了&#xff0c;在文章最底部~ 有手就行 1、吃金币 【有手就行系列不介绍玩法了附源码】 源码分享&#xff1a; import os import cfg import sys import pygame import random from module…

迷你项目python

迷你项目python 骰子模拟器石头剪刀布随机密码生成器 骰子模拟器 目的&#xff1a;创建一个程序来模拟掷骰子。 提示&#xff1a;当用户询问时&#xff0c;使用random模块生成一个1到6之间的数字。 import random while int(input(press 1 to roll the dice or 0 to exit:\n…

23款小游戏-Python一行代码就能玩

给IT入门加星标&#xff0c;提升编程技能 free-python-games&#xff0c;一行代码就能进入使用Python开发的小游戏快乐玩耍&#xff01; 安装 pip?install?freegamesPython包括随您的安装一起分发的大量标准库。标准库有一个称为Turtle的模块&#xff0c;这是一种向普通人…

Python游戏开发实战:飞机大战(含代码)

【课程简介】 玩游戏老是输&#xff0c;不如试试自己做个游戏当欧皇。本次课程教大家如何通过pygame模块实现游戏, 以飞机大战为例&#xff0c;讲解游戏的基本机制, 让大家掌握游戏实现原理 &#xff0c;触类旁通更多Python游戏开发。 【课程推荐】Python游戏开发实战&#x…

【Python游戏】Python各大游戏合集:超级玛丽、天天酷跑、我的世界、魔塔、雷霆战机 | 附带源码

相关文件 关注小编&#xff0c;私信小编领取哟&#xff01; 当然别忘了一件三连哟~~ 公众号&#xff1a;Python日志 可以关注小编公众号&#xff0c;会不定时的发布一下Python小技巧&#xff0c;还有很多资源可以免费领取哟&#xff01;&#xff01; 源码领取&#xff1a;加P…

13个Python小游戏(含源码),开始敲起来,玩吧!

来源丨网络 经常听到有朋友说&#xff0c;学习编程是一件非常枯燥无味的事情。其实&#xff0c;大家有没有认真想过&#xff0c;可能是我们的学习方法不对&#xff1f; 比方说&#xff0c;你有没有想过&#xff0c;可以通过打游戏来学编程&#xff1f; 今天我想跟大家分享几个P…

30个Python小游戏,上班摸鱼我能玩一天【内附源码】

大家好&#xff0c;我是辣条。 今天给大家带来30个py小游戏&#xff0c;一定要收藏&#xff01; 目录 有手就行 1、吃金币 2、打乒乓 3、滑雪 4、并夕夕版飞机大战 5、打地鼠 简简单单 6、小恐龙 7、消消乐 8、俄罗斯方块 9、贪吃蛇 普普通通 10、24点小游戏 1…

iosetup mysql_InnoDB: Error: io_setup() failed with EAGAIN after 5 attempts

在一台服务器中以各数据库的备份文件为数据文件启动多个MySQL实例供SQL Review使用。 之前运行一直没有问题(最多的时候有23个MySQL实例同时运行)&#xff0c;后来新配置了一台服务器&#xff0c;启动其对应的实例时失败。 部分错误日志如下&#xff1a; …… 140505 16:05:59 …

linux系统中socket错误码:EINTR和EAGAIN的处理

目录 人为重启被中断的系统调用 安装信号时设置 SA_RESTART属性 忽略信号 永远阻塞的系统调用&#xff0c;被信号中断&#xff0c;导致其不继续等待&#xff0c;转而去执行signal_handler 1、什么是慢系统调用&#xff1f; 该术语适用于那些可能永远阻塞的系统调用。永远阻…

iosetup mysql_InnoDB: Error: io_setup() failed with EAGAIN

最近安装好了MySQL之后&#xff0c;在启动MySQL服务时无法正常启动MySQL。提示没有更新/var/lib/mfailedZDB.pid并退出。该MySQL与Oracle位于同一主机。有些内核参数进行过调整应该也是使用与MySQL。下面是该问题的具体描述。 1、故障现象SZDB:/usr/src/mysql_src # /etc/init.…

blocking socket 读写返回 EAGAIN

非阻塞的 socket 读写操作返回 EAGAIN&#xff0c;表示当前已经读完内核缓冲区或者写满内核缓冲区&#xff0c;需要等待下一次 select/poll/epoll 事件到来时再操作。 对于阻塞的 socket 读写操作&#xff0c;如果内核缓冲区是空&#xff0c;read 将一直阻塞&#xff1b;如果不…

【Linux Socket C++】为什么IO复用需要用到非阻塞IO?EAGAIN的简单介绍与应用

目录 为什么IO复用需要非阻塞的IO EAGAIN的介绍 EAGAIN的应用 为什么IO复用需要非阻塞的IO 我们可以先看一下官方的回答&#xff1a; 在Linux命令行输入&#xff1a;man 2 select 找到[BUGS]&#xff0c;如下&#xff1a; 官方给予的回答是这样的&#xff1a; Under Lin…

avcodec_receive_frame始终返回EAGAIN

今天我们研究一个问题&#xff1a; avcodec_receive_frame()始终返回EAGAIN 根本的解决方案还需要深入debug&#xff0c;但是这个函数很太复杂&#xff0c;需要些时间和耐心&#xff1b; 目前在不考虑编解码性能的情况下&#xff0c;能work around的方法只有一个&#xff0c;那…