15行代码的自动追踪版贪吃蛇 17行的非自动追踪

快开学了 我不干了 死前挣扎一下 把这篇博客发出来了

先放代码:

自动追踪:

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++

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值