python用海龟绘图写贪吃蛇游戏
python用海龟绘图写贪吃蛇游戏
一个简单的贪吃蛇程序,供大家参考,具体内容如下
如图显示
导入海龟绘图库
from turtle import * from random import randrange
常量设置
food_x = randrange(-20, 20) * 20 food_y = randrange(-20, 20) * 20 snack = [[0, 0], [20, 0], [40, 0], [40, 20]] dir_x = 20 dir_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_y if not is_zhangqiang(): return snack.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) * 20 food_y = randrange(-20, 20) * 20 clear() # 画食物 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") continue draw_square(snack[s][0], snack[s][1], 20, "black") ontimer(loop_view, 100) # 执行一次 TurtleScreen 刷新。在禁用追踪时使用 update()
控制方向
def control(x,y): global dir_x, dir_y dir_x = x dir_y = y
碰撞检测
def is_zhangqiang(): if -400 <= snack[-1][0] <= 380 and -400 <= snack[-1][1] <= 380: return True else: return False
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持趣讯吧。
推荐阅读
-
Python中怎么动态声明变量赋值
这篇文章将为大家详细讲解有关Python中怎么动态声明变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中变量的存储原理是什么
-
Python中怎么引用传递变量赋值
这篇文章将为大家详细讲解有关Python中怎么引用传递变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中怎么获取程序执行文件路径
python中怎么获取程序执行文件路径,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的...
-
Python中如何获取文件系统的使用率
Python中如何获取文件系统的使用率,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴...
-
Python中怎么获取文件的创建和修改时间
这篇文章将为大家详细讲解有关Python中怎么获取文件的创建和修改时间,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读...
-
python中怎么获取依赖包
今天就跟大家聊聊有关python中怎么获取依赖包,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据...
-
python怎么实现批量文件加密功能
-
python中怎么实现threading线程同步
小编给大家分享一下python中怎么实现threading线程同步,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!...
-
python下thread模块创建线程的方法
本篇内容介绍了“python下thread模块创建线程的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来...