pygame游戏
pygame游戏开发
安装
windows terminal
pip install pygame
可能出现的报错
module 'pygame' has no attribute 'init'
http://www.51testing.com/html/66/186366-859344.html
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
https://blog.csdn.net/cxs123678/article/details/80659273
也可以在pycharm中terminal界面安装
pygame最小游戏框架
import pygame,sys
# 初始化
pygame.init()
# set_mode初始化窗口,第一个参数是一个二元组,(高度,宽度)
screen = pygame.display.set_mode((600, 400))
# 窗口标题内容,字符串类型
pygame.display.set_caption("pygame游戏")
while True:
# pygame.event.get(),从事件队列出取出事件,并在队列中删除
# event.type获得事件类型
# pygame.QUIT退出事件常量
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 退出系统
sys.exit()
#s 刷新屏幕,默认窗口全部重绘
pygame.display.update()
小球运动
Rect对象
屏幕从左上角开始逐行扫描
version1
'''ball_game version1'''
import pygame,sys
# 初始化
pygame.init()
speed = [1,1]
BLACK = (10,33,0)
# 加载小球的图像
ball = pygame.image.load('D:\\python\\images\\ball.gif')
'''Surface对象:ball.get_rect()载入所有图像
.get_rect()返回覆盖一个图像的矩形Rect对象'''
ballrect = ball.get_rect()
# set_mode初始化窗口,第一个参数是一个二元组,(宽度,高度)
size = width, height = 800, 600
screen = pygame.display.set_mode(size)
# 窗口标题内容,字符串类型
pygame.display.set_caption("pygame游戏")
while True:
# pygame.event.get(),从事件队列出取出事件,并在队列中删除
# event.type获得事件类型
# pygame.QUIT退出事件常量
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 退出系统
sys.exit()
# 小球移动(利用偏移量)和改变方向
ballrect = ballrect.move(speed[0],speed[1])
if ballrect.left <= 0 or ballrect.right >= width:
speed[0] = -speed[0]
if ballrect.top <= 0 or ballrect.bottom >= height:
speed[1] = -speed[1]
#填充背景颜色,当小球运动后不断刷新原位置,如果不刷新会出现拖影
screen.fill(BLACK)
# screen.blit(src,dist)将src绘制到dist的位置上
screen.blit(ball,ballrect)
# 刷新屏幕,默认窗口全部重绘
pygame.display.update()
version2
在version1的基础上调整小球的帧率
'''ball_game version2'''
import pygame,sys
# 初始化
pygame.init()
speed = [1,1]
BLACK = (10,33,0)
# 加载小球的图像
ball = pygame.image.load('D:\\python\\images\\ball.gif')
'''Surface对象:ball.get_rect()载入所有图像
.get_rect()返回覆盖一个图像的矩形Rect对象'''
ballrect = ball.get_rect()
# set_mode初始化窗口,第一个参数是一个二元组,(宽度,高度)
size = width, height = 800, 600
screen = pygame.display.set_mode(size)
# 窗口标题内容,字符串类型
pygame.display.set_caption("pygame游戏")
fps = 200
# 创建一个Clock对象,用于操作时间
flock = pygame.time.Clock()
while True:
# pygame.event.get(),从事件队列出取出事件,并在队列中删除
# event.type获得事件类型
# pygame.QUIT退出事件常量
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 退出系统
sys.exit()
# 小球移动(利用偏移量)和改变方向
ballrect = ballrect.move(speed[0],speed[1])
if ballrect.left <= 0 or ballrect.right >= width:
speed[0] = -speed[0]
if ballrect.top <= 0 or ballrect.bottom >= height:
speed[1] = -speed[1]
#填充背景颜色,当小球运动后不断刷新原位置,如果不刷新会出现拖影
screen.fill(BLACK)
# screen.blit(src,dist)将src绘制到dist的位置上
screen.blit(ball,ballrect)
# 刷新屏幕,默认窗口全部重绘
pygame.display.update()
# .tick()控制帧速度,即窗口刷新速度,每秒钟fps次刷新
flock.tick(fps)
version3
在version2 的基础上,增加通过键盘调整球的位置
'''ball_game version2'''
import pygame,sys
# 初始化
pygame.init()
speed = [1,1]
BLACK = (10,33,0)
# 加载小球的图像
ball = pygame.image.load('D:\\python\\images\\ball.gif')
'''Surface对象:ball.get_rect()载入所有图像
.get_rect()返回覆盖一个图像的矩形Rect对象'''
ballrect = ball.get_rect()
# set_mode初始化窗口,第一个参数是一个二元组,(宽度,高度)
size = width, height = 800, 600
screen = pygame.display.set_mode(size)
# 窗口标题内容,字符串类型
pygame.display.set_caption("pygame游戏")
fps = 200
# 创建一个Clock对象,用于操作时间
flock = pygame.time.Clock()
while True:
# pygame.event.get(),从事件队列出取出事件,并在队列中删除
# event.type获得事件类型
# pygame.QUIT退出事件常量
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 退出系统
sys.exit()
# 判断键盘事件,更新偏移量
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
speed[0] = speed[0] if speed[0] == 0 else (abs(speed[0] - 1))*int(speed[0]/abs(speed[0]))
elif event.key == pygame.K_RIGHT:
speed[0] = speed[0] +1 if speed[0] >=0 else speed[0] - 1
elif event.key == pygame.K_UP:
speed[1] = speed[1] + 1 if speed[1] >= 0 else speed[1] - 1
elif event.key == pygame.K_RIGHT:
speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1] - 1)) * int(speed[1] / abs(speed[1]))
# 小球移动(利用偏移量)和改变方向
ballrect = ballrect.move(speed[0],speed[1])
if ballrect.left <= 0 or ballrect.right >= width:
speed[0] = -speed[0]
if ballrect.top <= 0 or ballrect.bottom >= height:
speed[1] = -speed[1]
#填充背景颜色,当小球运动后不断刷新原位置,如果不刷新会出现拖影
screen.fill(BLACK)
# screen.blit(src,dist)将src绘制到dist的位置上
screen.blit(ball,ballrect)
# 刷新屏幕,默认窗口全部重绘
pygame.display.update()
# .tick()控制帧速度,即窗口刷新速度,每秒钟fps次刷新
flock.tick(fps)
屏幕绘制
扫描二维码关注公众号,回复:
9091867 查看本文章