范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

仅仅只有60行代码的Turtle贪食蛇手把手教你游戏编程

  1 说明
  =====
  1.1 利用python的turtle库,进行贪食蛇游戏的编程设计,通过游戏设计来提高学习兴趣,熟悉python语言的思维和熟悉turtle库功能。
  1.2 turtle库是python3自带的一个简单却强大的库,不但用于画图,还可以用于游戏。
  1.3 网上有很多turtle的贪食蛇游戏设计的代码,有简单的,也有复杂的代码,本文代码简单,最关键的是注释和讲解详细,小白秒懂,一秒入门。
  1.4 环境:python3.8
  2 效果图
  3 技术要点
  ========
  3.1 蛇吃食物,蛇调头(上下左右)和碰墙设置。
  3.2 食物随机位置的设置。
  3.3 分数或者蛇吃食物的个数计数和显示。
  3.4 turtle的键盘键的调用和监听。
  4 讲解和注释
  ==========
  4.1 第1步:导入模块from turtle import * from random import randrange
  说明:
  1)from形式导入模块,turtle后面的代码更简洁。
  2)randrange() 函数:
  用来随机生成食物的坐标位置。
  返回指定递增基数集合中的一个随机数,基数默认值为1。
  randrange()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。#说明代码 #方法一 import random random.randrange (start,stop ,step) #方法二 from random import randrange randrange (start, stop ,step)
  4.2 第2步:窗口初始化设置#静态的窗口标题名,可以放在这里 #title("Snake Eat Food")  #初始化窗口大小,便于后面相关大小的设置 width_win=1000 hight_win=1000  #窗口的大小,不是游戏界面大小 #setup(width_win,hight_win,0,0) #屏幕大小,没有上面就是默认居中 screensize(width_win,hight_win) bgcolor("black")
  4.3 第3步:初始化蛇的参数#初始化蛇的大小,5个小方格长度,可调整蛇的初始长度 #snake = [[0,0],[10,0],[20,0],[30,0],[40,0]]  snake = [[0,0]]  #初始化食物的位置,坐标范围可调整 #一个格子是边长为10的,否则蛇吃不掉食物。 food_x = randrange(-30,30)*10   food_y = randrange(-30,30)*10  #蛇的初始化坐标位置,建议aim_x为10,即一个格子为10 aim_x = 10 aim_y = 0
  4.4 第4步:定义正方形函数#画一个小方格函数,坐标,大小和颜色 def squre(x,y,size,color_name):     up()     goto(x,y)     down()     #小方格填充颜色     color(color_name)     begin_fill()          """     #边长=10     #画小格子==小正方形     #方法一     forward(size)     left(90)     forward(size)     left(90)     forward(size)     left(90)     forward(size)     left(90)     """          #方法二     #注意下划线_,一次性i取值法     for _ in range(4):         forward(size)         left(90)      end_fill()
  4.5 第5步:改变和撞墙函数的定义#定义改变函数: #用键盘上下左右来控制蛇 def change(x,y):     #申明全局变量     global aim_x,aim_y     aim_x = x     aim_y = y  #判断蛇是否在画布内 #即是否撞墙判断 def inside():     #判断是否在画布里面     if -width_win/2 <= snake[-1][0]<=width_win/2 and -hight_win/2 <= snake[-1][1]<=hight_win/2:         return True     else:         return False
  4.6 第6步:游戏循环函数定义#第6步:游戏循环函数定义 def snake_game():     #申明是全局变量     global food_x,food_y,aim_x,aim_y,snake      #如果撞墙,暂停     if not inside():         return          #蛇的增长:就是蛇=snake列表的添加     snake.append([snake[-1][0]+aim_x,snake[-1][1]+aim_y])      #吃食物     if snake[-1][0] != food_x or snake[-1][1]!=food_y:         # 加一个元素,删除一个元素,蛇就往前运行了         snake.pop(0)       #每吃一个,再随机生成食物,随机坐标范围可调整     else:         food_x = randrange(-30,30)*10           food_y = randrange(-30,30)*10       clear() # 清楚之前画的痕迹      #食物     squre(food_x,food_y,10,"red")      #动态的窗口标题名,建议放在这里     title("Snake Eat Food & Numbers:{}".format(len(snake)-1))      #屏幕计分器文字输出     pu()     goto(-width_win/2+10,hight_win/2-10)     #窗口标题名动态计分显示设置     write("Numbers:{}".format(len(snake)-1), font=("微软雅黑", 14, "normal"))     pd()      #画蛇,不断改变的蛇的画     for n in range(len(snake)):         #画蛇         squre(snake[n][0],snake[n][1],10,"green")      #每100毫秒运行一次,也是蛇的速度     #推荐100~900,越大速度越慢     ontimer(snake_game,100)       #游戏更新     update()
  4.7 第7步:键盘监听和蛇的方向控制listen() #键盘的监听  #键盘控制蛇的方向设置  """ #键盘字母控制上下左右,需要中英文切换 onkey(lambda: change(0,10), "w") onkey(lambda: change(0,-10), "s") onkey(lambda: change(-10,0), "a") onkey(lambda: change(10,0), "d")  """  #键盘↑↓←→控制上下左右,我喜欢这种 onkey(lambda: change(0,10), "Up") onkey(lambda: change(0,-10), "Down") onkey(lambda: change(-10,0), "Left") onkey(lambda: change(10,0), "Right")
  4.8 第8步:主程序的调用和结束等设置hideturtle()  #隐藏画笔的箭头 #不延时,一次性绘画成功,多用于游戏或动画 tracer(False)  #调用游戏函数,启动游戏 snake_game()  #结束设置 #这个就是提示,只有关掉窗口的×才能结束游戏 #也叫绘画结束但显示窗口不变 done()  #更佳!! #点击窗口×或者点击屏幕关闭 #exitonclick()
  ===主要讲解在注释里面===
  5 完整代码:(无注释版仅仅60行代码就可以了,超级牛!!)#第1步:导入模块 from turtle import * from random import randrange  #第2步:窗口初始化设置 #初始化窗口大小,便于后面相关大小的设置 width_win=1000 hight_win=1000  #屏幕大小,没有上面就是默认居中 screensize(width_win,hight_win) bgcolor("black")  #第3步:初始化蛇的参数 #初始化蛇的大小,1个小方格长度,可调整蛇的初始长度 snake = [[0,0]]  #初始化食物的位置,坐标范围可调整 #一个格子是边长为10的,否则蛇吃不掉食物。 food_x = randrange(-30,30)*10   food_y = randrange(-30,30)*10  #蛇的初始化坐标位置,建议aim_x为10,即一个格子为10 aim_x = 10 aim_y = 0  #第4步:定义正方形函数 #画一个小方格函数,坐标,大小和颜色 def squre(x,y,size,color_name):     up()     goto(x,y)     down()     #小方格填充颜色     color(color_name)     begin_fill()     #注意下划线_,一次性i取值法     for _ in range(4):         forward(size)         left(90)     end_fill()  #第5步:改变和撞墙函数的定义 #定义改变函数: #用键盘上下左右来控制蛇 def change(x,y):     #申明全局变量     global aim_x,aim_y     aim_x = x     aim_y = y  #判断蛇是否在画布内 #即是否撞墙判断 def inside():     #判断是否在画布里面     if -width_win/2 <= snake[-1][0]<=width_win/2 and -hight_win/2 <= snake[-1][1]<=hight_win/2:         return True     else:         return False  #第6步:游戏循环函数定义 def snake_game():     #申明是全局变量     global food_x,food_y,aim_x,aim_y,snake      #如果撞墙,暂停     if not inside():         return          #蛇的增长:就是蛇=snake列表的添加     snake.append([snake[-1][0]+aim_x,snake[-1][1]+aim_y])      #吃食物     if snake[-1][0] != food_x or snake[-1][1]!=food_y:         # 加一个元素,删除一个元素,蛇就往前运行了         snake.pop(0)       #每吃一个,再随机生成食物,随机坐标范围可调整     else:         food_x = randrange(-30,30)*10           food_y = randrange(-30,30)*10      clear() # 清楚之前画的痕迹      #食物     squre(food_x,food_y,10,"red")      #动态的窗口标题名,建议放在这里     title("Snake Eat Food & Numbers:{}".format(len(snake)-1))      #屏幕计分器文字输出     pu()     goto(-width_win/2+10,hight_win/2-10)     write("Numbers:{}".format(len(snake)-1), font=("微软雅黑", 14, "normal"))     pd()      #画蛇,不断改变的蛇的画     for n in range(len(snake)):         #画蛇         squre(snake[n][0],snake[n][1],10,"green")     #每100毫秒运行一次,也是蛇的速度     #推荐100~900,越大速度越慢     ontimer(snake_game,100)      #游戏更新     update()  #第7步:键盘监听和蛇的方向控制 listen() #键盘的监听 #键盘控制蛇的方向设置 #键盘↑↓←→控制上下左右,我喜欢这种 onkey(lambda: change(0,10), "Up") onkey(lambda: change(0,-10), "Down") onkey(lambda: change(-10,0), "Left") onkey(lambda: change(10,0), "Right")  #第8步:主程序的调用和结束等设置 hideturtle()  #隐藏画笔的箭头 #不延时,一次性绘画成功,多用于游戏或动画 tracer(False)  #调用游戏函数,启动游戏 snake_game() #结束设置 done()  #更佳!!
  目的不在于游戏,而是在游戏中学习python!
  ===============
  赋诗一首:
  (英文版)
  study computer lesson,
  love the hottest python,
  when u have question,
  game can take passion.
  (中文版)
  学习计算机的课程
  爱上python最热门
  当你不幸拥有疑问
  游戏给你激情灵魂
  ===============
  喜欢的点个赞,转发,收藏和评论。
  告诉孩子,游戏不能玩,容易上瘾,有种自己以后设计游戏!
  未来的社会是计算机和人工智能的社会。

今年的杭州与往年不一样闪光时刻主题征文二期柯柯KOKO没有去过伦敦的我,一直听说伦敦是雾都。伦敦是很少见的到完整的太阳的,完整的太阳对伦敦来说是一件奢侈品,英国的伦敦正常的是与乌云作伴,雨水冲刷,阴晴不小说喜欢你就去追短篇小说大赛柯柯KOKO兄弟,那个今天跟你吃饭的那个女孩子好漂亮啊嗯,是很漂亮。兄弟,有没有很心动的感觉啊?你也单身很久啦!我看你们两个坐在一起挺配的,你要不追追她?我现在还只是一不要相信别人的不幸福会发生在你身上,你要始终相信你会幸福头条故事会柯柯KOKO妈说让你多吃点妈说让你多睡会儿妈说本来单休的我,因为特别的想念家里的空气,所以告假一天,和老公提前回家享受难得的双休时光了。哦,对,你肯定会问你们回的是娘家啊我在睹物思你我跟月季比个心柯柯KOKO我不喜欢花,但你喜欢,所以我买了,我不喜欢花,但你喜欢,所以我拍了,我不喜欢花,但你喜欢,所以我爱了今天路过一片盎然生机的花海,以前的我会立马飞驰而过,不素颜女孩你是真的纯净头条故事会柯柯KOKO今天跟一个客户朋友聊天,她跟我抱怨说她女儿不打扮,整天素面朝天,一点都不精细,不像个女孩子。而我却为她女儿竖起来了大拇指,这样的素颜女孩现在不多了。现在的女孩一个人的短视频给你推荐什么你就是什么样的人情感点评大赏柯柯KOKO大数据时代,我们每个人的喜好都会被记录,我们的习惯会被记录,我们的只要涉及网络,涉及手机的都会被记录,我们是被大数据记录的人。如今的社会,手机是大数据的重要你的感恩之心决定你的格局头条故事会柯柯KOKO人活一世,不是独行,还有我和他与你相伴,一路前行,我们要常怀感恩之心。前几天与一位朋友聊天,他跟我说我昨天和我那个一起共事的工作伙伴争吵了半天,他说我的不是,别假装坚强,来,我抱抱你头条故事会柯柯KOKO拥抱,是会让我的体温传给你,让你感受到温暖。现在的人,眼里越来越多的坚定目标就是搞钱!人情冷暖之间,更多的是利益往来,缺少了温度,人活的也太累。为了能够更好的别让焦虑的情绪左右你的生活头条故事会柯柯KOKO治疗焦虑情绪的方法就是别太把自己当回事儿,也别太把别人当回事儿,自然就没什么可焦虑了,就是这么简单,嗯!就是这么回事。每次你都说我,你没有站在我的角度考虑。这世上只有妈妈好,为母则刚头条故事会柯柯KOKO世上只有妈妈好有妈的孩子像个宝投进了妈妈的怀抱幸福享不了以前不理解,为什么有一首世上只有妈妈好,却没有世上只有爸爸好。我们常说父爱如山,让你感觉有倚仗,有靠山遇到这样的,就不要再坚持了婚恋手册柯柯KOKO爱是相互的,长久的单方面付出,心也是会冷的。朋友跟一个相亲的女孩子恋爱,女孩子是他喜欢的类型。原以为相亲的要么看上要么看不上,但总的来说应该是处于势均力敌的状态
吃姜有哪些好处?正确吃姜的方法是什么?一早吃姜,胜参汤讲到药食同源,有一样东西是不能不提的,那就是姜。姜真是上天赐给人类的宝贝。中国的老百姓谁家的厨房少得了姜呢?而中医的药方中以姜为君臣佐使之药的也比比皆是。孔子说不撤煎中药及服中药在方法上有哪些注意事项?轻则容易伤胃煎用中药时,将核查无误的中药,置砂锅或煎药壶中,加凉水淹过药物,浸泡20分钟左右,置火上煎熬。沸后2030分钟,用纱布滤出第l煎,再加凉水适量进行第2煎。两次合并再分为2或3次空腹名厨说菜丨香掉下巴的土豆红烧排骨排骨作为家常菜常见的食材,做法多种多样,除了做汤,红烧的烹饪方式赢得了更多人的喜爱。多吃排骨,除了补充蛋白质和脂肪,还有丰富的钙质可以维护骨骼健康,以及适宜于气血不足,阴虚纳差的人助听器声反馈产生的原因1。。人耳的形状及声学状况任何一个耳道都可以被认为是一个声学的共振腔体,因为共振就会使某些频率的声音被格外加强。2。助听器外壳或耳模的问题当助听器的增益过高,通气孔过大,或外壳耳膜造成儿童助听器啸叫的6大原因儿童助听器在使用过程中时有会发生啸叫问题,那么造成这种问题的原因有哪些呢?1耳模的佩戴方法不正确初戴助听器的儿童,由于家长不熟悉耳模的佩戴方法,初期佩戴时未将耳模佩戴到位,使耳模与有哪些原因容易破坏助听器?我们对定制机研究的结果发现耳垢(耵聍)堵塞受潮被无意堕落冲击是造成助听器损坏的三大主要原因。(1)耳垢的损坏耳垢堵塞是造成价格昂贵的受话器损坏的主要原因。中国人的耳垢一般属于干性,孩子忘性大原因在哪里呢在生活中,经常有为人父母者这样评价自己的孩子我家孩子什么都好,就是忘性大。我家孩子忘性太大了,经常丢三落四的,真不知道该拿他怎么办?因为孩子忘性大,家长烦恼不已。经常忘记带作业,带三招教您松肠道随着生活节奏的加快,工作压力的增多,便秘成为不少人难以启齿的困扰。那么,该如何科学防治便秘呢?最佳排便时间与姿势早上5点7点,气血流注于大肠经,大肠蠕动,此时最宜排便。因此,建议晨助听器对于听障人士的作用我们经常会遇到耳聋患者满怀希望地走进助听器选配中心,期望助听器只要一戴上就万事大吉,误以为助听器能矫正听力就像眼睛矫正视力一样简单。但是,事实并非如此简单。助听器只是把原来听不见的怎样理解助听器的依赖性若不是迫不得已,正常听力的人不会戴用助听器,也不会产生依赖性。一些听力损失并不严重的助听器使用者也只是在必要或重要的场合(比如会客或主持某些会议)才使用助听器,并非摘不下来。只有那海之声听力帮您剖析如何解决下降型听力处理难题01多通道处理,分频段补偿通道是通过高低通滤波器,人为将声音按照不同频率进行划分。在助听器中,将接收到的声音进行多个通道的划分,实现不同通道内声音信号不同的处理方式,可以轻松满足不