python用海龟绘图写贪吃蛇游戏

一个简单的贪吃蛇程序,供大家参考,具体内容如下
如图显示
【python用海龟绘图写贪吃蛇游戏】python用海龟绘图写贪吃蛇游戏
文章图片

导入海龟绘图库

from turtle import *from random import randrange

常量设置
food_x = randrange(-20, 20) * 20food_y = randrange(-20, 20) * 20snack = [[0, 0], [20, 0], [40, 0], [40, 20]]dir_x = 20dir_y = 0

主函数
if __name__ == '__main__':# 设置主窗口的大小和位置# width,height,startx,starty(初始位置距离屏幕左边和右边多少,默认中间)setup(800, 800)# 禁用海龟动画tracer(False)loop_view()listen()onkey(lambda: control(0, 20), "w")onkey(lambda: control(0, -20), "s")onkey(lambda: control(-20, 0), "a")onkey(lambda: control(20, 0), "d")# 开始事件循环# 调用 Tkinter 的 mainloop 函数# 必须作为一个海龟绘图程序的结束语句done()

画正方形
def draw_square(x, y, size, color_name):'''画正方形:param x 表示在画布的x位置:param y 表示画布的y位置:param size 表示正方形的长度:param color_name 表示正方形的颜色:return'''# 画笔抬起,移动的时候不画线up()# 是海龟不可见ht()# 将海龟移动到这个位置goto(x, y)# 画笔落下 -- 移动时将画线down()color("red", color_name)begin_fill()forward(size)left(90)forward(size)left(90)forward(size)left(90)forward(size)left(90)end_fill()pass

在画布上画食物和蛇
def loop_view():'''循环界面'''global food_x, food_yif not is_zhangqiang():returnsnack.append([snack[-1][0] + dir_x, snack[-1][1] + dir_y])if snack[-1][0] != food_x or snack[-1][1] != food_y:snack.pop(0)else:food_x = randrange(-20, 20) * 20food_y = randrange(-20, 20) * 20clear()# 画食物draw_square(food_x, food_y, 20, "red")# 画蛇for s in range(len(snack)):if s == len(snack) - 1:draw_square(snack[s][0], snack[s][1], 20, "yellow")continuedraw_square(snack[s][0], snack[s][1], 20, "black")ontimer(loop_view, 100)# 执行一次 TurtleScreen 刷新。在禁用追踪时使用update()

控制方向
def control(x,y):global dir_x, dir_ydir_x = xdir_y = y

碰撞检测
def is_zhangqiang():if -400 <= snack[-1][0] <= 380 and -400 <= snack[-1][1] <= 380:return Trueelse:return False

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    推荐阅读