cls09-绘制电路
import turtle
turtle.pensize(4)
turtle.pencolor("yellow")
turtle.fillcolor("green")
turtle.begin_fill()
turtle.forward(100)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.end_fill()
turtle.penup()
turtle.goto(0,25)
turtle.pendown()
turtle.backward(150)
turtle.right(-90)
turtle.forward(200)
turtle.right(90)
turtle.forward(150)
a="true"
if a=="true":
turtle.dot(100,"yellow")
if a=="false":
turtle.dot(100,"black")
turtle.penup()
turtle.goto(50,225)
turtle.pendown()
turtle.forward(120)
turtle.right(90)
turtle.forward(200)
turtle.right(90)
turtle.forward(70)
turtle.done()
单词检查机
q = True
n_w_lst = {"老师":"teacher","学生":"student","男孩":"boy","女孩":"girl","前进":"forward"}
while q:
c_w_lst=n_w_lst.copy()
n_w_lst.clear()
for key,value in c_w_lst.items():
result = input("{}所对的单词是".format(key))
if result == value:
print("回答正了")
else:
print("回答错误,正确答案是{}".format(value))
n_w_lst[key] = value
if n_w_lst:
result = input("还有没答对的,是否继续")
if result == "yes":
pass
else:
q = False
else:
q = False
print("恭喜全部正确")
绘制机器猫
import turtle
def face():
turtle.fillcolor("blue")
turtle.begin_fill()
turtle.circle(100,360)
turtle.end_fill()
turtle.fillcolor("white")
turtle.begin_fill()
turtle.circle(80, 360)
turtle.end_fill()
def eye():
turtle.left(90)
turtle.penup()
turtle.goto(-10,160)
turtle.pendown()
turtle.fillcolor("white")
turtle.begin_fill()
turtle.circle(15,360)
turtle.end_fill()
face()
eye()
turtle.done()
DIY计算器
def isnum(a):
if a not in "+-*/":
return True
return False
def spiltCal(content):
numlst = []
oplst = []
index_last = 0
index_now = 0
for i in range(len(content)):
index_now = i
if isnum(content[i]):
if i == len(content)-1:
numlst.append(float(content[index_last:]))
else:
if content[i] == ".":
pass
else:
numlst.append(float(content[index_last:index_now]))
oplst.append(content[index_now])
index_last = index_now+1
return numlst,oplst
turtle画板
import turtle
p = turtle.Pen()
a = ("red", "blue", "yellow", "black")
b = ((400, 200), (400, 170), (400, 140), (400, 110))
def draw():
for i in range(4):
turtle.penup()
turtle.goto(b[i])
turtle.down()
turtle.pencolor(a[i])
turtle.dot(30)
def up():
p.sety(p.ycor() + 10)
def down():
p.sety(p.ycor() - 10)
def left():
p.setx(p.xcor() - 10)
def right():
p.setx(p.xcor() + 10)
draw()
turtle.onkeypress(up, "Up")
turtle.onkeypress(down, "Down")
turtle.onkeypress(left, "Left")
turtle.onkeypress(right, "Right")
turtle.listen()
turtle.done()
知识问答
import turtle
import time
question_list = []
answer_list = []
option_list = []
position_list = []
question_pen = turtle.Pen()
result_pen = turtle.Pen()
question_index = 0
def init():
global question_list, answer_list, option_list, position_list, position_pen, result_pen, question_index
turtle.bgpic("image/背景.png")
turtle.setup(1000, 1000)
question_list = ["先有鸡还是先有蛋?", ["老师的单词是什么"]]
answer_list = ["先有鸡","teacher"]
option_list = [["A.先有鸡", "B.先有蛋"], ["A.teacher", "B.tacher", "C.techer"]]
position_list = [[-250, 0], [0, 0], [250, 0]]
question_index = 0
question_pen = turtle.Pen()
question_pen.hideturtle()
result_pen = turtle.Pen()
result_pen.penup()
result_pen.goto(-150, -150)
def drawtext(p, color, text, size=40):
p.pencolor(color)
p.write(text, font=("arial", size))
def getquestion(p, index): # 形参
p.clear()
p.penup()
p.goto(-300, 150)
if index >= len(question_list):
p.goto(-50, 0)
drawtext(p, "green", "已通关")
return
drawtext(p, "black", question_list[index])
for i in range(len(option_list[index])):
p.penup()
p.goto(position_list[i][0] - 55, position_list[i][1] + 25)
drawtext(p, "black", option_list[index][i])
def checkPox(x,y):
global question_index
for i in range(len(option_list[question_index])):
if position_list[i][0] - 80 <x< position_list[i][0]+30 and position_list[i][1] <y< position_list[i][1] +80:
if option_list[question_index][i].split(".")[1] == answer_list[question_index]:
question_index +=1
result(result_pen,"right")
getquestion(question_pen,question_index)
else:
result(result_pen,"wrong")
def result(p,r):
p.goto(-300,-150)
if r=="right":
drawtext(p,"green","回答正确",50)
else:
drawtext(p,"red","回答错误",50)
time.sleep(1)
p.clear()
turtle.onscreenclick(checkPox)
init()
getquestion(question_pen, question_index) # 实参
turtle.done()
波点碰撞
import turtle
import random
turtle.tracer(False)
a = turtle.Pen()
b = [[249, 0], [172, 74], [-123, -65], [-35, -213]]
d = [0, 321]
state = True
def create():
for i in range(10):
x = random.randint(-400,400)
y = random.randint(-400,400)
b.append([x,y])
def draw():
a.clear()
for i in range(len(b)):
c = b[i]
a.up()
a.goto(c)
a.pendown()
a.dot(20, "blue")
a.up()
a.goto(d)
a.down()
a.dot(20, "red")
def move():
for i in range(len(b)):
b[i][0] -= 2
if b[i][0]<=-400:
b[i][0]=400
b[i][1]=random.randint(-400,400)
d[1] -= 4
if d[1]<=-400:
d[1]=400
def jump():
d[1]+=50
def collide():
"""
判断是否碰撞
:return:
"""
global state
for i in range(len(b)):
line_1 = b[i][0] - d[0]
line_2 = b[i][1] - d[1]
if line_1**2 + line_2**2 <=400:
state = False
def unpause():
global state
state = True
create()
d[1]=400
def process():
if state:
draw()
move()
collide()
turtle.ontimer(process, 100)
turtle.onkeypress(jump,"space")
turtle.onkeypress(unpause,"q")
turtle.listen()
create()
process()
turtle.done()
贪吃蛇
import turtle
import random
z=turtle.Pen()
turtle.tracer(0)
direct = "right"
food=[0,0]
a=[[0,0],[0,-20],[0,-40]]
def draw():
z.clear()
for i in range(len(a)):
z.up()
z.goto(a[i])
z.down()
z.dot(20,"red")
z.up()
z.goto(food)
z.down()
z.dot(20,"green")
def move():
temp = a[0].copy()
if direct == "up":
temp[1]+=20
elif direct == "left":
temp[0] -= 20
elif direct == "right":
temp[0]+=20
else:
temp[1] -=20
# 边缘判断
if temp[0]>=400:
temp[0]=-400
elif temp[0]<-400:
temp[0]=400
elif temp[1]>=400:
temp[1]=-400
elif temp[1]<-400:
temp[1]=400
a.insert(0,temp)
a.pop()
def collide():
global food
if (a[0][0]-food[0])**2+(a[0][1]-food[1])**2<=400:
food = [random.randint(-200,200),random.randint(-300,300)]
a.append(a[-1])
# 蛇头碰到蛇身检测
for i in range(1,len(a)):
if (a[0][0]-a[i][0])**2+(a[0][1]-a[i][1])**2<390:
print("错误")
def up():
global direct
if direct == "down":
pass
else:
direct = "up"
def down():
global direct
if direct == "up":
pass
else:
direct = "down"
def left():
global direct
if direct == "right":
pass
else:
direct = "left"
def right():
global direct
if direct == "left":
pass
else:
direct = "right"
turtle.onkeypress(up,"Up")
turtle.onkeypress(down,"Down")
turtle.onkeypress(left,"Left")
turtle.onkeypress(right,"Right")
turtle.listen()
def process():
collide()
draw()
move()
turtle.ontimer(process,500)
process()
turtle.done()
反弹小球
import turtle
screen_width = 500
screen_height = 500
turtle.setup(screen_width,screen_height)
p = turtle.Pen()
board_blue_y = 50
board_red_y = 50
speed = 10
# 小球的坐标
m = [230,123]
m_size = [-1,-1]
turtle.tracer(False)
def draw_board(board_width,board_height,color,pos):
if color == "blue":
p.clear()
p.penup()
p.goto(pos)
p.pendown()
p.seth(0)
p.fillcolor(color)
p.begin_fill()
p.forward(board_width)
p.right(90)
p.forward(board_height)
p.right(90)
p.forward(board_width)
p.right(90)
p.forward(board_height)
p.end_fill()
#定义函数,绘制小球
def draw_ball():
p.up()
p.goto(m)
p.down()
p.dot(50,"green")
def move_ball():
"""
移动小球
:return:
"""
global m,m_size
m[0]+=m_size[0]
m[1]+=m_size[1]
if m[1]<=-(screen_height/2-25):
m_size[1] = -m_size[1]
if m[1]>=(screen_height/2-25):
m_size[1] = -m_size[1]
# 和板子的碰撞
if m[0] >=-200 and m[0]<=-175 and m[1]<=board_blue_y and m[1]>=board_blue_y-100:
m_size[0] = 1
print("blue")
if m[0] >=175 and m[0]<=200 and m[1]<=board_red_y and m[1]>=board_red_y-100:
m_size[0] = -1
print("red")
def blue_fun():
global board_blue_y
board_blue_y += speed
def blue_down():
global board_blue_y
board_blue_y-=speed
def red_fun():
global board_red_y
board_red_y+=speed
def red_down():
global board_red_y
board_red_y-=speed
turtle.onkeypress(blue_fun,"w")
turtle.onkeypress(blue_down,"s")
turtle.onkeypress(red_fun,"Up")
turtle.onkeypress(red_down,"Down")
turtle.listen()
def process():
draw_board(50,100,"blue",(-250,board_blue_y))
draw_board(50,100,"red",(250-50,board_red_y))
# 调用绘制小球的函数
draw_ball()
move_ball()
turtle.ontimer(process,10)
process()
turtle.done()