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()