易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

易语言贪吃蛇与python贪吃蛇对比浅析   [复制链接]

    2020-01-08 11:15:26
    2019开源大赛(第四届)
    易语言资源网
    3726 次浏览
    来源链接

     本文通过对贪吃蛇这一游戏对易语言和爬虫两种不同的编程语言进行对比,本文没有对两者进行强弱对比,仅仅是在实现功能上的区别简述。两者开发效率,开发效果。同时给易语言学习者扩宽学习方向提供思想。

      先是基本的贪吃蛇编程逻辑,以下我以流程方式说明,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("游戏结束“)。





点我下载 (已有 169 次下载)

引用模块


源码文件名 模块文件名
贪吃蛇2.e
超级模块(8.0正式版).ec


引用支持库


源码文件名 支持库文件名 支持库标识
贪吃蛇2.e 系统核心支持库 5.3 d09f2340818511d396f6aaf844c7e325
特殊功能支持库 3.1 A512548E76954B6E92C21055517615B0


[错误报告]   上一篇:便利店单机收银系统 支持移动支付/积分会...     下一篇:第六期学员学习近一个月写的网络验证...