1. 弹跳的小球
pygame
#!/usr/bin/env Python
# coding=utf-8
#解决gbk编码问题
import pygame
import os
WINDOW_W, WINDOW_H = 640, 800 # 窗户大小
FPS = 50 # 帧数,每秒多少次
g = 9.8*100 # 现实中单位:平方米/二次方秒,游戏中像素/二次方秒
pygame.init() # 初始化
os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (200, 100)
screen = pygame.display.set_mode((WINDOW_W, WINDOW_H), pygame.DOUBLEBUF, 32) # 创建一个窗口
pygame.display.set_caption('米粒儿')
clock = pygame.time.Clock()
x, y = WINDOW_W/2, 10 # 小球的坐标
vx, vy = 0, 0 # 小球在x,y上的速度
while True: # 游戏主循环
for event in pygame.event.get(): # 遍历事件
if event.type == pygame.QUIT:
exit()
# 下一时刻的速度、位置计算
vy += + g * 1/FPS # v = v0 + at 只有y坐标的速度发生改变
x += vx * 1/FPS
y += vy * 1/FPS
if y >= WINDOW_H - 10: # 小球刚好触碰到地面的瞬间
vy = -vy # 到达地面时速度反方向
screen.fill((0, 0, 0)) # 该句非常重要,每一帧都需要屏幕填充,黑色屏幕更新用于遮盖上一次小球的画面
# 画球
pygame.draw.circle(screen, (255, 125, 0), (int(x), int(y)), 10) # 绘制圆心和半径,半径是10
# 刷新界面,每一帧变化
pygame.display.update()
# 设置FPS
time_passed = clock.tick(FPS)
pgzrun
import pgzrun, random
WIDTH = 800
HEIGHT = 600
x = random.uniform(100, WIDTH) # 小球最开始出现的x,y
y = random.uniform(100, HEIGHT) # 注意,x和y随机数的起始值不建议设置为0,会出现小球震荡的效果,至少大于等于小球半径
speed_y = 3
speed_x = 3
r = 30
def draw(): # 绘制模块,每帧重复执行
screen.fill('white') # 屏幕填充
screen.draw.filled_circle((x, y), r, 'red') # 画小球,参数:坐标,半径,颜色
def update(): # 更新模块,每帧重复操作
global x, y, speed_x, speed_y
y += speed_y
x += speed_x
if y > HEIGHT - r or y < r: # 当小球碰壁时,分别讨论x和y坐标
speed_y = -speed_y # 速度反方向即可,如果只设置其中一个坐标,那么小球只会沿着直线反弹
if x > WIDTH - r or x < r:
speed_x = -speed_x
pgzrun.go()
2.测色弱
pgzrun模块
import pgzrun, random
WIDTH = 1200
HEIGHT = 800
# 修改半径可以修改圆的个数
R = random.randint(20, 60)
def draw():
# 至于是哪个圆颜色不同,通过随机的方式产生
x_i = random.randint(1, WIDTH // 2 // R)
y_i = random.randint(1, HEIGHT // 2 // R)
print(x_i, y_i)
for j in range(R, HEIGHT, 2*R):
for i in range(R, WIDTH, 2*R):
if j == (2*y_i - 1)*R and i == (2*x_i - 1)*R:
screen.draw.filled_circle((i, j), R, (0, 255, 255))
else:
screen.draw.filled_circle((i, j), R, (0, 255, 220))
# 按下鼠标,调用函数
def on_mouse_down():
draw()
pgzrun.go()
pygame模块
import pygame
from pygame.locals import *
import random
WIDTH = 800
HEIGHT = 800
pygame.init() # 初始化
screen = pygame.display.set_mode((WIDTH, HEIGHT)) # 主界面
R_list = [20,40,50,80<