Python学习(2)--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 查看本文章



发布了57 篇原创文章 · 获赞 12 · 访问量 7734

猜你喜欢

转载自blog.csdn.net/volunteer1024/article/details/94552994