小球的移动

在这里插入图片描述

# 引入pygame
import pygame
import sys
import time

# init()用来对pygame进行初始化
pygame.init()

# pygame.display 该对象负责游戏窗口的显示
# set mode(resolution=(0,0)) -> Surface
#   该方法用来设置游戏窗口的大小,调用该方法,会立即显示一个游戏窗口
#   需要一个元组作为参数,元组中有两个元素
#       第一个 是屏幕的宽度
#       第二个 是屏幕的高度
#   该方法返回一个surface对象,该对象表示画面中的一个基本元素
screen = pygame.display.set_mode((800, 600))

# 设置键盘事件连续触发
# pygame.key.set_repeat(True)   # 不建议这样写,否则其他按键都是这样的效果

# set_caption()用来设置游戏窗口的标题
pygame.display.set_caption('游戏的测试窗口')

# 设置窗口的背景颜色
# 给screen 设置颜色
# 使用fill 来为surface设置背景颜色
# 设置颜色时,使用的是RGB值  红绿蓝 0-255
screen.fill((220, 220, 220))

# 获取球对象,加载图片
# image 对象专门用来加载图片
ball = pygame.image.load('intro_ball.gif')

# Rect
#   表示的是矩形
#   每一个图层在窗口中,所占的位置实际上都是一个矩形
#   通过该类来描述图层的位置
# 每个图层中都有一个默认的rect对象,可以直接通过get_rect()来获取
ball_rect = ball.get_rect()

# 获取screen的矩形对象
screen_rect = screen.get_rect()

# 可以通过修改矩形对象的X 和Y 来影响他的位置
# centerx 和 centery 用来设置图层 中心位置的坐标
# ball_rect.x = 0
# ball_rect.y = 0
ball_rect.centerx = screen_rect.centerx
ball_rect.centery = screen_rect.centery

screen.blit(ball, ball_rect)

# 对整个游戏窗口进行渲染
pygame.display.flip()

# print(screen)

# 创建一个变量,来表示小球移动的方向
dir = 6

# 创建一个变量,表示小球移动的速度
speed = 1

# 创建一个游戏主循环
while 1:
    # 事件(event)
    #   事件就是事
    #   event是pygame中的事件对象,通过event可以获取事件信息

    # 遍历事件的列表,检查有没有我们需要处理的事件
    for event in pygame.event.get():
        # 事件对象中有一个属性type表示当前事件类型,会返回一个整数
        if event.type == pygame.QUIT:
            # 点击退出X,结束程序
            # 可以让窗口通过X关闭
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            # 检查用户是否敲击键盘
            # 获取用户按下的按键
            # print(event.key)
            # key 用来在键盘按下时,会取按键的编号
            # 判断用户按的是哪个按键
            dir = event.key
        elif event.type == pygame.KEYUP:
            # 松开按键,小球停止移动
            # 判断松开是否是现在正在移动的方向
            if dir == event.key:
                dir = 0

    if dir == pygame.K_UP:
        print('↑')
        ball_rect.y -= speed
    elif dir == pygame.K_DOWN:
        print('↓')
        ball_rect.y += speed
    elif dir == pygame.K_LEFT:
        print('←')
        ball_rect.x -= speed
    elif dir == pygame.K_RIGHT:
        print('→')
        ball_rect.x += speed

    # 判断小球的位置是否超过边界
    if ball_rect.x < 0:
        ball_rect.x = 0
    elif ball_rect.right > screen_rect.width:
        ball_rect.right = screen_rect.width

    if ball_rect.y < 0:
        ball_rect.y = 0
    elif ball_rect.bottom > screen_rect.height:
        ball_rect.bottom = screen_rect.height

    # 重新填充背景颜色
    screen.fill((220, 220, 220))
    # 重新向画面中绘制小球
    screen.blit(ball, ball_rect)
    # 刷新屏幕
    pygame.display.flip()

    # sleep() 可以使程序休眠指定的秒数
    time.sleep(0.01)

    pass

效果图/通过上下左右键来移动小球
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯子@123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值