73 lines
1.7 KiB
Python
73 lines
1.7 KiB
Python
import pygame,sys
|
|
|
|
pygame.init()
|
|
window_size = (260,300)
|
|
sc = pygame.display.set_mode(window_size)
|
|
pygame.display.set_caption('反弹的小球')
|
|
|
|
ball_xy = [110,175]
|
|
ball_r = 10
|
|
ball_speed = [3,3]
|
|
|
|
box = pygame.Rect(115,290,50,15)
|
|
|
|
zk_lst = []
|
|
zk_x = 10
|
|
zk_y = 10
|
|
for i in range(5):
|
|
for j in range(5):
|
|
zk_rect = pygame.Rect(zk_x,zk_y,40,20)
|
|
zk_lst.append(zk_rect)
|
|
zk_x += 50
|
|
zk_x = 10
|
|
zk_y += 30
|
|
|
|
running = True
|
|
while running:
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
running = False
|
|
|
|
sc.fill('white')
|
|
|
|
ball = pygame.draw.circle(sc, 'black', ball_xy, ball_r)
|
|
|
|
if ball_xy[0] - ball_r < 0 or ball_xy[0] + ball_r > window_size[0]:
|
|
ball_speed[0] = -ball_speed[0]
|
|
if ball_xy[1] - ball_r < 0 or ball_xy[1] + ball_r > window_size[1]:
|
|
ball_speed[1] = -ball_speed[1]
|
|
if ball_xy[1] + ball_r > 300 and not ball.colliderect(box):
|
|
running = False
|
|
if ball.colliderect(box):
|
|
ball_speed[1] = -ball_speed[1]
|
|
|
|
for i in zk_lst:
|
|
if ball.colliderect(i):
|
|
zk_lst.remove(i)
|
|
if zk_lst == []:
|
|
running = False
|
|
|
|
ball_xy[0] += ball_speed[0]
|
|
ball_xy[1] += ball_speed[1]
|
|
|
|
pygame.draw.rect(sc, (0, 0, 0), rect=box)
|
|
|
|
for i in zk_lst:
|
|
pygame.draw.rect(sc, 'blue', rect=i)
|
|
|
|
keys = pygame.key.get_pressed()
|
|
if keys[pygame.K_LEFT]:
|
|
if box.x <= 0:
|
|
continue
|
|
else:
|
|
box.x += -2
|
|
if keys[pygame.K_RIGHT]:
|
|
if box.x >= 260:
|
|
continue
|
|
else:
|
|
box.x += 2
|
|
|
|
pygame.display.flip()
|
|
pygame.time.Clock().tick(35)
|
|
pygame.quit()
|
|
sys.exit() |