开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 6189|回复: 21
收起左侧

[2019开源大赛(第四届)] 易语言贪吃蛇与python贪吃蛇对比浅析

[复制链接]
发表于 2019-11-29 20:09:25 | 显示全部楼层 |阅读模式   福建省厦门市
      本文通过对贪吃蛇这一游戏对易语言和爬虫两种不同的编程语言进行对比,本文没有对两者进行强弱对比,仅仅是在实现功能上的区别简述。两者开发效率,开发效果。同时给易语言学习者扩宽学习方向提供思想。
      先是基本的贪吃蛇编程逻辑,以下我以流程方式说明,1.搭建平台,设置贪吃蛇所在窗口。2.设置窗口的方格,相当于把窗口方格化,画出相对应的格子代表不同的东西。3.定义(蛇头,蛇身,食物,障碍物)初始化颜色与位置。4.定义一个一直时钟,也就是动画的实质“桢”。5.画蛇头,画蛇身,画食物,吃到食物等,6.定义按键事件,当按下按键后蛇的移动。7.定义游戏结束条件。
      现在谈谈每个步骤易语言的实现方法和爬虫的实现方法
1.搭建平台,设置贪吃蛇窗口。易语言:自带的窗口编程界面,所用工具画板控件。
                                             python:pygame库,运用代码:window = pygame.display.set_mode(size)实现创建窗口。
2.设置窗口方格。                    易语言:设置画板大小为800*600,然后将格子的宽和长设置成20,那么也就分成了40行与30列,要定义每个物体所在格子,则为:画板1.画矩形 (蛇头x, 蛇头y, 蛇头x + 20, 蛇头y + 20)。这是蛇的初始位置,如果需要右移,就在蛇头x的基础上+20。如果将其定义在时钟里则为自动移动。
                                             python:先定义行与列,比如hang = 40,lie=30。然后再定义一个画格子(rect)的函数,每个格子的宽与高为: width = 800/HANG, height = 600/LIE。然后再定义位置左边与右边,定义一个Point的类,这个类可以传达本身最初定义的位置,比如,head = Point(hang=10,lie=10)。那么head.hang=10。这样一来就可以在head.hang上对head的位置进行变更。那么在最初的rect函数中表达位置的函数为left = Point.lie*40, top  = Point.hang*30。rect的参数为颜色与需要画的物体。
3.定义(蛇头,蛇身,食物,障碍物)初始化颜色与位置。
                                               易语言:插入新的子程序为初始化,在子程序中写各类物体初始化值。
                                               python:定义一个初始化数据函数,def chushihua():里面是初始化的内容,首先pygame.init()初始化pygame,然后比如,head_color=(255,255,255)#蛇头颜色为白色。然后再每次开始游戏时最先调用。
4.定义一个时钟,也就是动画的实质“桢”。5.画蛇头,画蛇身,画食物,吃到食物等)。
                                               易语言:插入一个时钟,当按下按钮以后时钟周期为500,游戏结束时时钟周期为0。然后再时钟周期事件里加入画蛇头()画食物()判断是否吃到食物的子程序等等,
                                               python:利用while循环, # while  ture无限循环,while false停止循环,quit = ture while quit ,当要停止循环时,只需要让quit=flase则停止。quit=false在判断游戏结束的if is_dead == ture:中。然后再利用pygame的clock提供一个刷新的频率,clock=pygame.time.clock。clock.tick(12)这样一来,每12ms刷新一次。这样就类似于易语言的时钟功能了。然后再while里写相应的函数。
5.画蛇头,画蛇身,画食物,吃到食物等:易语言:蛇头是一个一直移动的方格,蛇身是随着蛇头一起移动的方格,食物是一个随机位置的方格。根据这个思想。蛇头让他的x,y位置随着方向的改变而不断的加或者减就可以实现,蛇身是一个数组,定义2个数组,蛇身x数组和蛇身y数组。每移动一次就往里面插入上一次蛇头的位置并且减去最后一个数组的值,也就是蛇尾的位置。利用插入成员
插入成员 (蛇身x, 1, 原蛇头x),插入成员 (蛇身y, 1, 原蛇头y)和 删除成员 (蛇身x, 取数组成员数 (蛇身x), ),删除成员 (蛇身y, 取数组成员数 (蛇身y), )来完成蛇的移动。如果吃到食物就不删保留蛇尾,那么吃到食物不减蛇尾,加入了蛇头,没减去蛇尾。相当于加入了一格。吃到食物则为蛇头与食物的位置判断。如果相同则随机再生成一个食物。
                                                            python:爬虫画蛇身的逻辑类似,实现代码为,sz=[]列表,如果 sz.insert(0,head.copy())然后再sz.pop()。画蛇头,身子,食物,则利用rect函数来实现。rect(food_color,food)。
6.定义按键事件,当按下按键后蛇的移动:易语言:利首先插入一个名为"方向”的变量。新建4个子程序,分别是上下左右,然后每个子程序里的代码为,例如,子程序上为:方向=“上”。然后再时钟的周期事件中,添加如果条件,如果方向=右的时候,则蛇头x=蛇头x+20,蛇头y不变。左为蛇头x=蛇头x-20。对应的上下则为蛇头y类同。
                                                            python:同样的在while循环中添加一个判断条件,利用event= pygame.event.get()获取按键信息,event.type == pygame.KEYDOWN:获取键盘上某个按键按下去的信息。然后根据按键代码,if event.key == 273  : direct = "up"其中273为上光标键代码。如果按下去的键盘代码为273,那么方向为上。
7.定义游戏结束条件:易语言:游戏结束条件为:1.撞到自己身体,2.撞到边界(暂未编写)3.撞到障碍物。如果 蛇身.x<=0,调试输出("游戏结束")
                               python: if head.x <=0 : print("游戏结束“)。


     




贪吃蛇.zip

1.6 MB, 下载次数: 95, 下载积分: 精币 -2 枚

贪吃蛇.png

python贪吃蛇界面

python贪吃蛇界面

python代码

python代码

易语言代码

易语言代码

评分

参与人数 1好评 +1 精币 +1 收起 理由
yangyitzzg + 1 + 1 支持开源~!感谢分享

查看全部评分

签到天数: 1 天

发表于 2022-4-23 14:38:10 | 显示全部楼层   浙江省台州市
学习一下
回复 支持 反对

使用道具 举报

结帖率:64% (25/39)

签到天数: 20 天

发表于 2020-10-15 16:46:45 | 显示全部楼层   辽宁省大连市
666,楼主的这个帖子其实含金量是很高的,不仅传授技术,还告诉你这个技术是怎么想出来的,怎么实现的。
回复 支持 反对

使用道具 举报

结帖率:87% (20/23)
发表于 2020-10-13 12:20:03 | 显示全部楼层   河南省信阳市
这个可以, 感觉我这样的i新手,可以来写一个
回复 支持 反对

使用道具 举报

发表于 2020-7-22 18:37:02 | 显示全部楼层   河北省邯郸市
感谢楼主分享
回复 支持 反对

使用道具 举报

结帖率:83% (5/6)
发表于 2020-3-8 22:10:18 | 显示全部楼层   黑龙江省双鸭山市
  先看再学习  感谢
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 2 天

发表于 2020-1-17 16:35:11 | 显示全部楼层   广东省深圳市
学习学习
回复 支持 反对

使用道具 举报

发表于 2019-12-30 10:32:55 | 显示全部楼层   贵州省贵阳市
学习!!!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2019-12-25 10:09:17 | 显示全部楼层   江苏省扬州市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2019-12-18 12:48:03 | 显示全部楼层   四川省成都市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表