一个打球吃小球的游戏
from math import sqrt
import pygame
import random
def r_c():
return random.randint(0,255),random.randint(0,255),random.randint(0,255)
if __name__ == "__main__":
pygame.init()
screen =pygame.display.set_mode((600,400))
screen.fill((255,255,255))
pygame.display.flip()
# all_balls 中保存多个球
# 每个球的 半径 圆心坐标 颜色 x速度 y速度
all_balls = []
while True:
pygame.time.delay(25)
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
if event.type ==pygame.MOUSEBUTTONDOWN:
ball ={
'r': random.randint(10, 25),
'pos': event.pos,
'color': r_c(),
'x_speed': random.randint(-3, 3),
'y_speed': random.randint(-3, 3)
}
all_balls.append(ball)
screen.fill((255,255,255))
for ball_dict in all_balls:
x , y = ball_dict["pos"]
x_speed = ball_dict["x_speed"]
y_speed =ball_dict["y_speed"]
x += x_speed
y += y_speed
pygame.draw.circle(screen, ball_dict['color'], (x, y), ball_dict['r'])
# 更新球对应的坐标
ball_dict['pos'] = x, y
for ball_dict in all_balls:
x, y = ball_dict["pos"]
x_speed = ball_dict["x_speed"]
y_speed = ball_dict["y_speed"]
y += y_speed
x+= x_speed
if x + ball_dict["r"] >= 600 or x -ball_dict["r"]<0:
x_speed *= -1
if y + ball_dict["r"]>=400 or y -ball_dict["r"]<0:
y_speed *= -1
for index1 in all_balls:
for index2 in all_balls:
if index1 == index2:
continue
else:
x1 ,y1 = index1[]
pygame.draw.circle(screen, ball_dict['color'], (x, y), ball_dict['r'])
ball_dict['pos'] = x, y
ball_dict['x_speed'] = x_speed
ball_dict['y_speed'] = y_speed
pygame.display.update()