Python之pygame学习制作回弹方块(7)

2019-08-19 22:08:23 浏览数 (2)

pygame学习反弹方块

学习了前面的一些知识,可以回顾下前面学习的内容,制作一个在方块内的反弹元素。

主要是学习绘制方块跟移动方块,以及字体的绘制。

具体移动方块没有用绘制矩形区域,而是判断绘制方块的X,Y点的坐标。

如果坐标点靠近边缘线,则把移动的值 由正值变为负值。

代码语言:javascript复制
import pygame
from pygame.locals import *

pygame.init()  # 初始化Pygame
pygame.font.init()  # 初始化字体
# 颜色代码
white = 255, 255, 255
blue = 0, 0, 200
green = 0, 200, 0
red = 200, 0, 0
yellow = 200, 200, 0
purple = 200, 0, 200
aoi = 0, 200, 200
gray = 200, 200, 200
black = 0, 0, 0
color = [blue, green, red, yellow, purple, aoi, gray, black]

# 矩形位置
pos_x = 300
pos_y = 250

# 运动速度
vel_x = 1
vel_y = 1

count = 0  # 计算颜色
word = 0  # 计算反弹次数

screen = pygame.display.set_mode((600, 500))  # 窗口大小
pygame.display.set_caption("碰撞球")  # 标题

myfont = pygame.font.SysFont('幼圆', 60)  # 字体设置 选择电脑上有的字体
clock = pygame.time.Clock()


while True:
    for event in pygame.event.get():
        if event.type in (QUIT, KEYDOWN):
            exit(0)

    screen.fill(white)  # 屏幕底色

    textImage = myfont.render("碰撞次数:"   str(word), True, color[count])  # 显示文字
    screen.blit(textImage, (180, 220))

    # 矩形移动
    pos_x  = vel_x
    pos_y  = vel_y
    # 矩形反弹
    if pos_x > 500 or pos_x < 0:
        vel_x = -vel_x
        print(vel_x)
        count = count   1
        word = word   1
    if pos_y > 400 or pos_y < 0:
        vel_y = -vel_y
        count = count   1
        word = word   1
    # 计算颜色
    if count > 7:
        count = 0

    # 绘制矩形
    pos = pos_x, pos_y, 100, 100
    width = 0
    pygame.draw.rect(screen, color[count], pos, width)

    pygame.display.update()

0 人点赞