快开学了 我不干了 死前挣扎一下 把这篇博客发出来了
先放代码:
自动追踪:
import turtle,random,time;turtle.tracer(0);snakeList=[];word=turtle.Turtle();word.pu();word.goto(-270,270);word.ht();turtle.setup(600,600)
def eggtf():global eggx,eggy,egg;egg=turtle.Turtle();egg.pu();eggx,eggy=random.randint(-14,14),random.randint(-14,14);egg.goto(eggx*20,eggy*20);egg.shape('square')
for i in range(5):t=turtle.Turtle();t.shape('square');t.pu();t.goto(i*20,0);snakeList.append(t)
def go(x1,y1):
turtle.update();t=snakeList.pop();t.ht();t1=turtle.Turtle();t1.shape('square');snakeList.insert(0,t1);t1.pu();t1.goto(x1,y1);x2,y2=snakeList[0].pos()
if x2==eggx*20 and y2==eggy*20:t=turtle.Turtle();t.shape('square');t.pu();t.goto(x2,y2);snakeList.append(t);egg.ht();eggtf();word.clear();word.write('score:'+str(len(snakeList)),font=('斜体',20,'normal'))
if abs(x2)>300 or abs(y2)>300:
for i in snakeList:i.reset()
eggtf()
while 1:
x,y=egg.pos();x1,y1=snakeList[0].pos()
if x1-x>0:time.sleep(0.08);go(x1-20,y1)
elif x1-x<0:time.sleep(0.08);go(x1+20,y1)
elif y1-y>0:time.sleep(0.08);go(x1,y1-20)
elif y1-y<0:time.sleep(0.08);go(x1,y1+20)
import turtle,random,time;turtle.tracer(0);snakeList=[];word=turtle.Turtle();word.pu();word.goto(-270,270);word.ht();turtle.setup(600,600)
def eggtf():global eggx,eggy,egg;egg=turtle.Turtle();egg.pu();eggx,eggy=random.randint(-14,14),random.randint(-14,14);egg.goto(eggx*20,eggy*20);egg.shape('square')
for i in range(5):t=turtle.Turtle();t.shape('square');t.pu();t.goto(i*20,0);snakeList.append(t)
def go(x1,y1):
turtle.update();t=snakeList.pop();t.ht();t1=turtle.Turtle();t1.shape('square');snakeList.insert(0,t1);t1.pu();t1.goto(x1,y1);x2,y2=snakeList[0].pos()
if x2==eggx*20 and y2==eggy*20:t=turtle.Turtle();t.shape('square');t.pu();t.goto(x2,y2);snakeList.append(t);egg.ht();eggtf();word.clear();word.write('score:'+str(len(snakeList)),font=('斜体',20,'normal'))
if abs(x2)>300 or abs(y2)>300:
for i in snakeList:i.reset()
eggtf()
while 1:
x,y=egg.pos();x1,y1=snakeList[0].pos()
if x1-x>0:time.sleep(0.08);go(x1-20,y1)
elif x1-x<0:time.sleep(0.08);go(x1+20,y1)
elif y1-y>0:time.sleep(0.08);go(x1,y1-20)
elif y1-y<0:time.sleep(0.08);go(x1,y1+20)
非自动追踪(上下左右键对应上下左右):
import turtle,random,time;turtle.tracer(0);snakeList=[];word=turtle.Turtle();word.pu();word.goto(-270,270);word.ht();turtle.setup(600,600)
def eggtf():global eggx,eggy,egg;egg=turtle.Turtle();egg.pu();eggx,eggy=random.randint(-14,14),random.randint(-14,14);egg.goto(eggx*20,eggy*20);egg.shape('square')
for i in range(5):t=turtle.Turtle();t.shape('square');t.pu();t.goto(i*20,0);snakeList.append(t)
def go(x1,y1):
turtle.update();t=snakeList.pop();t.ht();t1=turtle.Turtle();t1.shape('square');snakeList.insert(0,t1);t1.pu();t1.goto(x1,y1);x2,y2=snakeList[0].pos()
if x2==eggx*20 and y2==eggy*20:t=turtle.Turtle();t.shape('square');t.pu();t.goto(x2,y2);snakeList.append(t);egg.ht();eggtf();word.clear();word.write('score:'+str(len(snakeList)),font=('斜体',20,'normal'))
if abs(x2)>300 or abs(y2)>300:
for i in snakeList:i.reset()
def goLeft():
while 1:time.sleep(0.1);x,y=snakeList[0].pos();go(x-20,y)
def goUp():
while 1:time.sleep(0.1);x,y=snakeList[0].pos();go(x,y+20)
def goRight():
while 1:time.sleep(0.1);x,y=snakeList[0].pos();go(x+20,y)
def goDown():
while 1:time.sleep(0.1);x,y=snakeList[0].pos();go(x,y-20)
turtle.listen();turtle.onkeypress(goLeft,'Left');turtle.onkeypress(goRight,'Right');turtle.onkeypress(goDown,'Down');turtle.onkeypress(goUp,'Up')
import turtle,random,time;turtle.tracer(0);snakeList=[];word=turtle.Turtle();word.pu();word.goto(-270,270);word.ht();turtle.setup(600,600)
def eggtf():global eggx,eggy,egg;egg=turtle.Turtle();egg.pu();eggx,eggy=random.randint(-14,14),random.randint(-14,14);egg.goto(eggx*20,eggy*20);egg.shape('square')
for i in range(5):t=turtle.Turtle();t.shape('square');t.pu();t.goto(i*20,0);snakeList.append(t)
def go(x1,y1):
turtle.update();t=snakeList.pop();t.ht();t1=turtle.Turtle();t1.shape('square');snakeList.insert(0,t1);t1.pu();t1.goto(x1,y1);x2,y2=snakeList[0].pos()
if x2==eggx*20 and y2==eggy*20:t=turtle.Turtle();t.shape('square');t.pu();t.goto(x2,y2);snakeList.append(t);egg.ht();eggtf();word.clear();word.write('score:'+str(len(snakeList)),font=('斜体',20,'normal'))
if abs(x2)>300 or abs(y2)>300:
for i in snakeList:i.reset()
def goLeft():
while 1:time.sleep(0.1);x,y=snakeList[0].pos();go(x-20,y)
def goUp():
while 1:time.sleep(0.1);x,y=snakeList[0].pos();go(x,y+20)
def goRight():
while 1:time.sleep(0.1);x,y=snakeList[0].pos();go(x+20,y)
def goDown():
while 1:time.sleep(0.1);x,y=snakeList[0].pos();go(x,y-20)
turtle.listen();turtle.onkeypress(goLeft,'Left');turtle.onkeypress(goRight,'Right');turtle.onkeypress(goDown,'Down');turtle.onkeypress(goUp,'Up')
下面是正文:
不知道17行的贪吃蛇 可以去看我发的第二篇博客 也是贪吃蛇
不知道15行的贪吃蛇1~9行的 也一样
下面是自动追踪的原理:
while 1:#无限循环
x,y=egg.pos()#获取食物的位置
x1,y1=snakeList[0].pos()#获取蛇头的位置
if x1-x>0:#判断蛇头是否在食物的上面
time.sleep(0.08)
go(x1-20,y1)
elif x1-x<0:#判断蛇头是否在食物的下面
time.sleep(0.08)
go(x1+20,y1)
elif y1-y>0:#判断蛇头是否在食物的左面
time.sleep(0.08)
go(x1,y1-20)
elif y1-y<0:#判断蛇头是否在食物的右面
time.sleep(0.08)
go(x1,y1+20)
本文有点短 见谅
本文字数:4893
本文质量分:79
10赞花絮 15赞Python 30赞c++