直接看效果吧!
![见缝插针](https://i-blog.csdnimg.cn/blog_migrate/6eb6faf5073218c0f494945607f7f0a6.gif)
上代码
import pgzrun
import random
TITLE = "Python见缝插针"
background = Actor('background')
needles = []
startNeedle = Actor('needle',anchor=(170 + 50,1.5))
startNeedle.x = 220
startNeedle.y = 300
difficulty_Needles = []
rotateSpeed= 1
score = 8
radius = 80
record_score = 8
level = 1
record_speed = 1
flag = 0
r,g,b = random.randint(0,255),random.randint(0,255),random.randint(0,255)
def draw():
global flag
if not flag:
for i in range(int(rotateSpeed)+3):
difficulty_Needle2 = Actor('needle', anchor=(170 + 50, 1.5))
difficulty_Needle2.angle = (360 / (int(rotateSpeed) + 2)) * i
difficulty_Needle2.x = 400
difficulty_Needle2.y = 300
needles.append(difficulty_Needle2)
if rotateSpeed != 0:
flag = 1
screen.fill('white')
screen.draw.filled_circle((400,300),radius,(r,g,b))
screen.draw.text("第{}关".format(level),(320,10),fontsize=60,fontname="simhei",color='black')
if score < 10:
screen.draw.text(str(score), (385, 275), fontsize=80, color='white')
else:
screen.draw.text(str(score), (370, 275), fontsize=80, color='white')
screen.draw.text("Speed : {}".format(rotateSpeed), (20, 270), fontsize=35, color='red')
startNeedle.draw()
for difficulty_Needle in difficulty_Needles:
difficulty_Needle.draw()
for needle in needles:
needle.draw()
else:
screen.clear()
background.draw()
screen.draw.text('Game Over!', (200, 200), fontsize=100, color='red')
screen.draw.text('再试一次', (230, 400), fontsize=25, fontname="simhei", color='green')
screen.draw.text('退出游戏', (450, 400), fontsize=25, fontname="simhei", color='green')
def update():
for needle in needles:
needle.angle += rotateSpeed
for difficulty_Needle in difficulty_Needles:
difficulty_Needle.angle += rotateSpeed
def on_key_down():
global rotateSpeed,score,level,record_score,record_speed,flag
newNeedle = Actor('needle', anchor=(170 + 50, 1.5))
newNeedle.x = 400
newNeedle.y = 300
for needle in needles:
if newNeedle.colliderect(needle):
rotateSpeed = 0
music.play_once("失败")
needles.append(newNeedle)
if rotateSpeed > 0:
score -= 1
if score == 0:
needles.clear()
record_score += 2
score = record_score
level += 1
rotateSpeed += 0.5
record_speed = rotateSpeed
flag = 0
music.play_once('发射')
def on_mouse_down(pos, button):
global rotateSpeed,record_speed,score,flag
if button == mouse.LEFT and pos[0] > 445 and pos[0] < 555 and pos[1] > 395 and pos[1] < 435:
exit()
if button == mouse.LEFT and pos[0] > 225 and pos[0] < 335 and pos[1] > 395 and pos[1] < 435:
rotateSpeed = record_speed
needles.clear()
score = record_score
flag = 0
pgzrun.go()