缅怀球王贝利,今天咱们代言一波国球,也就是乒乓,在最开始会看到上面有两个名字,吴一凡vs孙曌凌,你可以用w s操控吴一凡,也可以用上下键操控孙曌凌,如有观众想换个名字,可以再86行改一下接下来。
源代码展示: (纯属猿创)
import turtle as t # 导入turtle库
import time
player_speed = 10 # 球拍移动速度
xm_score = 0 # 小明的分数
dm_score = 0 # 大明的分数
# 1. 创建背景
game = t.Screen() #创建窗口
game.title("打乒乓") # 窗口标题
game.bgcolor("black") # 窗口背景
game.setup(800, 600) # 窗口宽高
game.tracer(0)
# 2. 创建小明球拍
xm = t.Turtle() # 创建画笔
xm.ht() # 先隐藏
xm.up() # 开始绘画
xm.speed(0) # 让球拍瞬间去左侧
xm.color('blue') # 球拍颜色
xm.shape('square')
xm.shapesize(5, 1) # 球拍大小
xm.goto(-350, 0) # 球拍位置
xm.st() # 再显示
# 3. 创建大明球拍
dm = t.Turtle()
dm.ht() # 先隐藏
dm.up()
dm.speed(0)
dm.color('red')
dm.shape('square')
dm.shapesize(5, 1)
dm.goto(350, 0)
dm.st() # 再显示
# 小明向上移动
def xm_up():
y = xm.ycor()
if (y < 250) :
y = y + player_speed
xm.sety(y)
# 小明向下移动
def xm_down():
y = xm.ycor()
if( y> -240):
y = y - player_speed
xm.sety(y)
# 大明向上移动
def dm_up():
y = dm.ycor()
if (y < 250):
y = y + player_speed
dm.sety(y)
# 大明向下移动
def dm_down():
y = dm.ycor()
if (y > -240):
y = y - player_speed
dm.sety(y)
# 4. 监听键盘 进行移动球拍
game.listen()
game.onkeypress(xm_up, 'w')
game.onkeypress(xm_down, 's')
game.onkeypress(dm_up, 'Up')
game.onkeypress(dm_down, 'Down')
# 5. 创建乒乓球
pp = t.Turtle()
pp.up()
pp.speed(0)
pp.color('white') # 颜色
pp.shape('circle') # 圆形
pp.st() # 再显示
pp.dx = 0.4 # 调整球x轴速度
pp.dy = 0.4 # 调整球y轴速度
# 屏幕显示成绩
def write_score():
pen.clear()
score_text = "吴一凡:{} 孙曌凌:{}".format(xm_score, dm_score)
pen.write(score_text, align="center", font=("Arial", 20, 'bold'))
# 9. 绘画成绩文字
pen = t.Turtle()
pen.ht()
pen.up()
pen.color('white')
pen.goto(-30, 250)
write_score()
# 判定是否要退出
running = True
# 设置running为false 停止循环
def stop_loop():
global running
running = False
# . 获得窗口的Tk对象,并注册关闭事件
root = game.getcanvas().winfo_toplevel()
root.protocol('WM_DELETE_WINDOW', stop_loop)
# 主循环
while running:
# 刷新屏幕
game.update()
# 6.让乒乓球动起来
pp.setx(pp.xcor() + pp.dx)
pp.sety(pp.ycor() + pp.dy)
# 当乒乓球碰到边界会反弹回来
if (pp.ycor() > 290) or (pp.ycor() < -290):
pp.dy *= -1
# 7. 接球
y_up = dm.ycor() + 50
y_down = dm.ycor() - 50
if (pp.ycor() < y_up and pp.ycor() > y_down and pp.xcor() > 340):
pp.dx *= -1
pp.setx(339) # 让乒乓球脱离球拍
if (pp.ycor() < xm.ycor() + 50 and pp.ycor() > xm.ycor() - 50 and pp.xcor() < -340):
pp.dx *= -1
pp.setx(-339) # 让乒乓球脱离球拍
# 8. 球出界 并 加分
if (pp.xcor() > 380):
time.sleep(0.2) # 睡眠0.1s
pp.goto(0, 0)
xm_score += 1
print("吴一凡得分!")
write_score() # 更新屏幕成绩
if (pp.xcor() < -380):
time.sleep(0.2) # 睡眠0.1s
pp.goto(0, 0)
dm_score += 1
print("孙曌凌得分!")
write_score() # 更新屏幕成绩
最近由于阳的事,没有更新,实在抱歉