""" 拦球小游戏.py
海龟本身的图形有“arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”. 这几种。
分别是:箭头,海龟,圆形,方形,三角形,经典形状。
本节课,我们把小海龟的形状改变为圆形,让它像一个弹弹球一样在屏幕里弹来弹去。
"""
from winsound import PlaySound,SND_ASYNC #从winsound模块,导入播放声音的命令和一个用于异步播放的常量。
from turtle import *
from random import randint
from time import sleep
碰撞声 = 'sound.wav'
w,h= 480,360
screen = Screen()
screen.delay(0) #屏幕延时为1豪秒
screen.bgcolor("black")
screen.setup(w,h)
screen.title("拦球小游戏_turtle海龟画图版_作者:李兴球")
#--------------------------------------------------------------
#封面设计
封面图 = "拦球小游戏封面设计.gif"
背景图 = "拦球小游戏背景.gif"
screen.bgpic(封面图)
screen.update()
sleep(2)
screen.bgpic(背景图)
#--------------------------------------------------------------
拦板 = Turtle(shape = 'square')
拦板.shapesize(0.5,5) #长方形的长度为100x10像素
拦板.penup()
拦板.speed(0)
拦板.color("white","white")
拦板.sety(50-h/2)
def 向右移():
拦板.setx(拦板.xcor() + 10)
def 向左移():
拦板.setx(拦板.xcor() - 10)
screen.onkeypress(向右移,"Right")
screen.onkeypress(向左移,"Left")
screen.listen()
#--------------------------------------------------------------
弹球=Turtle(shape='circle') #新建海龟,形状为圆形
弹球.speed(0) #速度为最快.
弹球.penup()
弹球.color("yellow","yellow")
x速度 = randint(2,3) #设置初始水平速度
y速度 = randint(2,3) #设置初始垂直速度
弹球丢失 = False
while not 弹球丢失:
x = 弹球.xcor() + x速度 #设置弹球在水平方向移动 x速度
y= 弹球.ycor() + y速度 #设置弹球在垂直方向移动 y速度
弹球.goto(x,y)
if x>w/2 or x <-w/2:
x速度 = - x速度
PlaySound(碰撞声, SND_ASYNC) #异步播放音效,这就不必等到声音播放结束后才能运行下面的代码。
if y>h/2 :
y速度 = - y速度
PlaySound(碰撞声, SND_ASYNC)
if y<-h/2:弹球丢失 = True
拦板左x = 拦板.xcor() - 50
拦板右x = 拦板.xcor() + 50
拦板上y = 拦板.ycor() + 5
拦板下y = 拦板.ycor() - 5
if x< 拦板右x and x >拦板左x:
if y < 拦板上y and y > 拦板下y :
y速度 = - y速度
PlaySound(碰撞声, SND_ASYNC)
sleep(0.01)
screen.bgpic("拦球小游戏弹球丢了.gif")
screen.mainloop()