hei hei哈 2022-12-13 07:09 采纳率: 100%
浏览 177
已结题

python贪吃蛇加障碍物

怎么给贪吃蛇加固定的障碍物?试过好多次,障碍物都是一闪而过和游戏分离开了,怎么让障碍物和游戏融合地较好?(解决后另有打赏)

img

import turtle as t
import copy as c
import random as r


            
#初始化,模拟蛇,就是一个方块列表
snake=[[0,0],[0,10],[0,20]]
aim=[0,10] #移动目标
food=[r.randrange(-25,25)*10,r.randrange(-25,25)*10]
time=300

   

#动态调整移动的方向                                                                                                                                                                  
def change(x,y):
    aim[0]=x
    aim[1]=y#画出方块
def square(x,y,size,color):
    t.penup()
    t.goto(x,y)
    t.pendown()
    t.color(color) #设置颜色
    t.begin_fill() #渲染
    for i in range(4):
        t.forward(size)
        t.left(90)
    t.end_fill()#渲染
 
#判断边界
def inside(head):
    if head[0]>250:
        head[0]-=250*2
    elif head[0]<-250:
        head[0]+=250*2
    if head[1]>250:
        head[1]-=250*2
    elif head[1]<-250:
        head[1]+=250*2
    return head
 
#移动--解析:头部添加方块,尾巴消除一个方块
# 最后画的最上面的方块--设定为头部
def move_snake():
    head=c.deepcopy(snake[-1]) #复制一份头部坐标
    #确定方向
    head=[head[0]+aim[0],head[1]+aim[1]] #确定新头的坐标
    if head in snake:
        print('game over')
        square(head[0],head[1],10,'yellow')
        
    #边界判断    
    inside(head)
    #移动蛇
    if head==food:
        food[0]=r.randrange(-24,24)*10
        food[1]=r.randrange(-24,24)*10
    else:
        snake.pop(0) #去尾巴
    snake.append(head) #添加头
 
    #删除之前的动画
    t.clear()
    
    #画食物
    square(food[0],food[1],10,'red')
    #障碍
    for i in snake:
        square(i[0],i[1],10,'black')
        
    t.update() #刷新
    t.ontimer(move_snake,time) #递归
                
t.tracer(False)#除去动画效果
t.hideturtle() #隐藏箭头
#监听键盘
t.listen()
t.onkey(lambda :change(0,10),'w')
t.onkey(lambda :change(0,-10),'s')
t.onkey(lambda :change(10,0),'d')
t.onkey(lambda :change(-10,0),'a')
#设定屏幕大小
t.setup(500,500)
#运行
move_snake()



t.done() #暂停屏幕

  • 写回答

5条回答 默认 最新

  • chuifengde 2022-12-13 12:15
    关注

    不是有红色方块障碍物吗?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 12月21日
  • 已采纳回答 12月13日
  • 修改了问题 12月13日
  • 修改了问题 12月13日
  • 展开全部

悬赏问题

  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来