皮皮网
皮皮网

【c 软件源码】【源码教程入门】【loh源码分析】ai贪吃蛇源码_ai 贪吃蛇

时间:2024-12-27 17:44:40 来源:glide4 源码

1.aḭ?贪吃i贪???Դ??
2.如何用Python写一个贪吃蛇AI
3.GPT-Engineer一夜爆火!一个提示生成整个代码库,蛇源GitHub狂飙19k星
4.AI代码神器cursor
5.求一个3合1街机游戏(一个是吃蛇贪食蛇,贪食蛇过关的跳进洞里的,一个是贪吃i贪枪的,,一个食丢骨头的蛇源)
6.疯狂贪吃蛇无尽模式怎么玩 疯狂贪吃蛇无尽模式玩法解析

ai贪吃蛇源码_ai 贪吃蛇

aḭ????Դ??

       儿童智能手表市场在六一儿童节和大促期间迎来了一波新品,各大厂商纷纷推出了各自的吃蛇c 软件源码旗舰产品,如小米米兔儿童手表S1、贪吃i贪小天才Z儿童智能手表、蛇源华为儿童手表5 Pro以及儿童手表X AI版等。吃蛇这些手表不仅在配置、贪吃i贪价格和功能上各有特色,蛇源而且都试图将手机的吃蛇功能和应用融入其中,但这也引发了一部分家长对于孩子过早接触手机的贪吃i贪担忧。然而,蛇源一款名为Fitbit Ace的吃蛇儿童智能手表,以其独特的游戏设计,成功抓住了孩子们的注意力。这款手表内置了名为Noodle的进度条设计,与运动和锻炼紧密相连,通过设定活动目标和完成目标获得奖励,孩子们在游戏的同时也能进行锻炼,达到了寓教于乐的源码教程入门效果。Fitbit Ace是谷歌首款儿童智能手表,尽管它没有像Apple Watch一样的应用商店,所有功能和应用都是内置的,但官方表示后续可以通过更新获取更多的游戏和应用。游戏机制与孩子们的每日运动量紧密相关,使得这款手表在吸引孩子们的同时,也注重了孩子们的健康。除了游戏设计,Fitbit Ace在外观设计和硬件配置上也表现出色,提供了丰富的表带选择和多巴胺色彩的界面设计,满足了孩子们的审美需求。硬件配置上,它采用了与Pixel Watch 2相同的高通SW处理器,性能表现优秀,续航方面也优于市面上的一些智能手表。安全和监管方面,Fitbit Ace为孩子们与父母保持联系提供了便利,内置的LTE功能可以实现通话、消息和位置共享,同时保护了孩子们的隐私,只有父母才能访问位置数据,loh源码分析位置信息在小时内删除,不会用于Google广告。综上所述,Fitbit Ace在设计上充分考虑了家长的需求,既让孩子们动起来,又能安全地找到他们,是一款值得推荐的儿童智能手表。

如何用Python写一个贪吃蛇AI

       å‰è¨€

       è¿™ä¸¤å¤©åœ¨ç½‘上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过。但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势的地方了。 问题的关键在于,图片中的贪吃蛇真的很贪吃XD,它把矩形中出现的食物吃了个遍, 然后华丽丽地把整个矩形填满,真心是看得赏心悦目。作为一个CSer, 第一个想到的是,这东西是写程序实现的(因为,一般人干不出这事。 果断是要让程序来干的)第二个想到的是,写程序该如何实现,该用什么算法? 既然开始想了,就开始做。因为Talk is cheap,要show me the code才行。 (从耗子叔那学来的)

       å¼€å§‹ä¹‹å‰ï¼Œè®©æˆ‘们再欣赏一下那只让人涨姿势的贪吃蛇吧:( 如果下面的动态图片浏览效果不佳的话,可以右键保存下来查看)

       è¯­è¨€é€‰æ‹©

       Life is short, use python! 所以,根本就没多想,直接上python。

       æœ€åˆç‰ˆæœ¬

       å…ˆè®©ä½ çš„程序跑起来

       é¦–先,我们第一件要做的就是先不要去分析这个问题。 你好歹先写个能运行起来的贪吃蛇游戏,然后再去想AI部分。这个应该很简单, cc++也就百来行代码(如果我没记错的话。不弄复杂界面,直接在控制台下跑), python就更简单了,去掉注释和空行,5、行代码就搞定了。而且,最最关键的, 这个东西网上肯定写滥了,你没有必要重复造轮子, 去弄一份来按照你的意愿改造一下就行了。

       ç®€å•ç‰ˆæœ¬

       æˆ‘觉得直接写perfect版本不是什么好路子。因为perfect版本往往要考虑很多东西, 直接上来就写这个一般是bug百出的。所以, 一开始我的目标仅仅是让程序去控制贪吃蛇运动,让它去吃食物,仅此而已。 现在让我们来陈述一下最初的问题:

       1

       2

       åœ¨ä¸€ä¸ªçŸ©å½¢ä¸­ï¼Œæ¯ä¸€æ—¶åˆ»æœ‰ä¸€ä¸ªé£Ÿç‰©ï¼Œè´ªåƒè›‡è¦åœ¨ä¸æ’žåˆ°è‡ªå·±çš„条件下,

       æ‰¾åˆ°ä¸€æ¡è·¯(未必要最优),然后沿着这条路运行,去享用它的美食

       æˆ‘们先不去想蛇会越来越长这个事实,问题基本就是,给你一个起点(蛇头)和一个终点( 食物),要避开障碍物(蛇身),从起点找到一条可行路到达终点。 我们可以用的方法有:

       BFS

       DFS

       A

*

       åªè¦æœ‰é€‰æ‹©ï¼Œå°±å…ˆé€‰æ‹©æœ€ç®€å•çš„方案,我们现在的目标是要让程序先跑起来, 优化是后话。so,从BFS开始。我们最初将蛇头位置放入队列,然后只要队列非空, 就将队头位置出队,然后把它四领域内的4个点放入队列,不断地循环操作, 直到到达食物的位置。这个过程中,我们需要注意几点:1.访问过的点不再访问。 2.保存每个点的父结点(即每个位置是从哪个位置走到它的, 这样我们才能把可行路径找出来)。3.蛇身所在位置和四面墙不可访问。

       é€šè¿‡BFS找到食物后,只需要让蛇沿着可行路径运动即可。这个简单版本写完后, 贪吃蛇就可以很欢快地运行一段时间了。看图吧:(不流畅的感觉来自录屏软件@_ï¼ )

       ä¸ºäº†å°½é‡ä¿æŒç®€å•ï¼Œæˆ‘用的是curses模块,直接在终端进行绘图。 从上面的动态图片可以看出,每次都单纯地使用BFS,最终有一天, 贪吃蛇会因为这种不顾后果的短视行为而陷入困境。 而且,即使到了那个时候,它也只会BFS一种策略, 导致因为当前看不到目标(食物),认为自己这辈子就这样了,破罐子破摔, 最终停在它人生中的某一个点,不再前进。(我好爱讲哲理XD)

       BFS+Wander

       ä¸Šä¸€èŠ‚的简单版本跑起来后,我们认识到,只教贪吃蛇一种策略是不行的。 它这么笨一条蛇,你不多教它一点,它分分钟就会挂掉的。 所以,我写了个Wander函数,顾名思义,当贪吃蛇陷入困境后, 就别让它再BFS了,而是让它随便四处走走,散散心,思考一下人生什么的。 这个就好比你困惑迷茫的时候还去工作,效率不佳不说,还可能阻碍你走出困境; 相反,这时候你如果放下手中的工作,停下来,出去旅个游什么的。回来时, 说不定就豁然开朗,土地平旷,屋舍俨然了。

       Wander函数怎么写都行,但是肯定有优劣之分。我写了两个版本,一个是在可行的范围内, 朝随机方向走随机步。也就是说,蛇每次运动的方向是随机出来的, 总共运动的步数也是随机的。Wander完之后,再去BFS一下,看能否吃到食物, 如果可以那就皆大欢喜了。如果不行,说明思考人生的时间还不够,再Wander一下。 这样过程不断地循环进行。可是就像“随机过程随机过”一样,你“随机Wander就随机挂”。 会Wander的蛇确实能多走好多步。可是有一天,它就会把自己给随机到一条死路上了。 陷入困境还可以Wander,进入死胡同,那可没有回滚机制。所以, 第二个版本的Wander函数,我就让贪吃蛇贪到底。在BFS无解后, 告诉蛇一个步数step(随机产生step),让它在空白区域以S形运动step步。 这回运动方向就不随机了,而是有组织有纪律地运动。先看图,然后再说说它的问题:

       æ²¡é”™ï¼Œæœ€ç»ˆè¿˜æ˜¯æŒ‚掉了。S形运动也是无法让贪吃蛇避免死亡的命运。 贪吃蛇可以靠S形运动多存活一段时间,可是由于它的策略是:

       1

       2

       3

       4

       5

   

       while 没有按下ESC键:

       if 蛇与食物间有路径:

       èµ°èµ·ï¼Œåƒé£Ÿç‰©åŽ»

       else:

       Wander一段时间

   

       é—®é¢˜å°±å‡ºåœ¨è›‡å‘现它自己和食物间有路径,就二话不说跑去吃食物了。 它没有考虑到,你这一去把食物给吃了后形成的局势(蛇身布局), 完全就可能让你挂掉。(比如进入了一个自己蛇身围起来的封闭小空间)

       so,为了能让蛇活得久一些,它还要更高瞻远瞩才行。

       é«˜çž»è¿œçž©ç‰ˆæœ¬

       æˆ‘们现在已经有了一个比较低端的版本,而且对问题的认识也稍微深入了一些。 现在可以进行一些比较慎密和严谨的分析了。首先,让我们罗列一些问题: (像头脑风暴那样,想到什么就写下来即可)

       è›‡å’Œé£Ÿç‰©é—´æœ‰è·¯å¾„直接就去吃,不可取。那该怎么办?

       å¦‚果蛇去吃食物后,布局是安全的,是否就直接去吃?(这样最优吗?)

       æ€Žæ ·å®šä¹‰å¸ƒå±€æ˜¯å¦å®‰å…¨ï¼Ÿ

       è›‡å’Œé£Ÿç‰©ä¹‹é—´å¦‚果没有路径,怎么办?

       æœ€çŸ­è·¯å¾„是否最优?(这个明显不是了)

       é‚£ä¹ˆï¼Œå¦‚果布局安全的情况下,最短路径是否最优?

       é™¤äº†æœ€çŸ­è·¯å¾„,我们还可以怎么走?S形?最长?

       æ€Žä¹ˆåº”对蛇身越来越长这个问题?

       é£Ÿç‰©æ˜¯éšæœºå‡ºçŽ°çš„,有没可能出现无解的布局?

       æš´åŠ›æ³•(brute force)能否得到最优序列?(让贪吃蛇尽可能地多吃食物)

       åªè¦åŽ»æƒ³ï¼Œé—®é¢˜è¿˜æŒºå¤šçš„。这时让我们以面向过程的思想,带着上面的问题, 把思路理一理。一开始,蛇很短(初始化长度为1),它看到了一个食物, 使用BFS得到矩形中每个位置到达食物的最短路径长度。在没有蛇身阻挡下, 就是曼哈顿距离。然后,我要先判断一下,贪吃蛇这一去是否安全。 所以我需要一条虚拟的蛇,它每次负责去探路。如果安全,才让真正的蛇去跑。 当然,虚拟的蛇是不会绘制出来的,它只负责模拟探路。那么, 怎么定义一个布局是安全的呢? 如果你把文章开头那张动态图片中蛇的销魂走位好好的看一下, 会发现即使到最后蛇身已经很长了,它仍然没事一般地走出了一条路。而且, 是跟着蛇尾走的!嗯,这个其实不难解释,蛇在运动的过程中,消耗蛇身, 蛇尾后面总是不断地出现新的空间。蛇短的时候还无所谓,当蛇一长, 就会发现,要想活下来,基本就只能追着蛇尾跑了。在追着蛇尾跑的过程中, 再去考虑能否安全地吃到食物。(下图是某次BFS后,得到的一个布局, 0代表食物,数字代表该位置到达食物的距离,+号代表蛇头,*号代表蛇身, -号代表蛇尾,#号代表空格,外面的一圈#号代表围墙)

       1

       2

       3

       4

       5

       6

       7

   

       # # # # # # #

       # 0 1 2 3 4 #

       # 1 2 3 # 5 #

       # 2 3 4 - 6 #

       # 3 + * * 7 #

       # 4 5 6 7 8 #

       # # # # # # #

   

       ç»è¿‡ä¸Šé¢çš„分析,我们可以将布局是否安全定义为蛇是否可以跟着蛇尾运动, 也就是蛇吃完食物后,蛇头和蛇尾间是否存在路径,如果存在,我就认为是安全的。

       OK,继续。真蛇派出虚拟蛇去探路后,发现吃完食物后的布局是安全的。那么, 真蛇就直奔食物了。等等,这样的策略好吗?未必。因为蛇每运动一步, 布局就变化一次。布局一变就意味着可能存在更优解。比如因为蛇尾的消耗, 原本需要绕路才能吃到的食物,突然就出现在蛇眼前了。所以,真蛇走一步后, 更好的做法是,重新做BFS。然后和上面一样进行安全判断,然后再走。

       æŽ¥ä¸‹æ¥æˆ‘们来考虑一下,如果蛇和食物之间不存在路径怎么办? 上文其实已经提到了做法了,跟着蛇尾走。只要蛇和食物间不存在路径, 蛇就一直跟着蛇尾走。同样的,由于每走一步布局就会改变, 所以每走一步就重新做BFS得到最新布局。

       å¥½äº†ï¼Œé—®é¢˜åˆæ¥äº†ã€‚如果蛇和食物间不存在路径且蛇和蛇尾间也不存在路径, 怎么办?这个我是没办法了,选一步可行的路径来走就是了。还是一个道理, 每次只走一步,更新布局,然后再判断蛇和食物间是否有安全路径; 没有的话,蛇头和蛇尾间是否存在路径;还没有,再挑一步可行的来走。

       ä¸Šé¢åˆ—的好几个问题里都涉及到蛇的行走策略,一般而言, 我们会让蛇每次都走最短路径。这是针对蛇去吃食物的时候, 可是蛇在追自己的尾巴的时候就不能这么考虑了。我们希望的是蛇头在追蛇尾的过程中, 尽可能地慢。这样蛇头和蛇尾间才能腾出更多的空间,空间多才有得发展。 所以蛇的行走策略主要分为两种:

       1

       2

   

       1. 目标是食物时,走最短路径

       2. 目标是蛇尾时,走最长路径

   

       é‚£ç¬¬ä¸‰ç§æƒ…况呢?与食物和蛇尾都没路径存在的情况下, 这个时候本来就只是挑一步可行的步子来走,最短最长关系都不大了。 至于人为地让蛇走S形,我觉得这不是什么好策略,最初版本中已经分析过它的问题了。 (当然,除非你想使用最最无懈可击的那个版本,就是完全不管食物, 让蛇一直走S,然后在墙边留下一条过道即可。这样一来, 蛇总是可以完美地把所有食物吃完,然后占满整个空间,可是就很boring了。 没有任何的意思)

       ä¸Šé¢è¿˜æåˆ°ä¸€ä¸ªé—®é¢˜ï¼šå› ä¸ºé£Ÿç‰©æ˜¯éšæœºå‡ºçŽ°çš„,有没可能出现无解的局面? 答案是:有。我运行了程序,然后把每一次布局都输出到log,发现会有这样的情况:

       1

       2

       3

       4

       5

       6

       7

   

       # # # # # # #

       # * * * * * #

       # * * - 0 * #

       # * * # + * #

       # * * * * * #

       # * * * * * #

       # # # # # # #

   

       å…¶ä¸­ï¼Œ+号是蛇头,-号是蛇尾,*号是蛇身,0是食物,#号代表空格,外面一圈# 号代表墙。这个布局上,食物已经在蛇头面前了,可是它能吃吗?不能! 因为它吃完食物后,长度加1,蛇头就会把0的位置填上,布局就变成:

       1

       2

       3

       4

       5

       6

       7

   

       # # # # # # #

       # * * * * * #

       # * * - + * #

       # * * # * * #

       # * * * * * #

       # * * * * * #

       # # # # # # #

   

       æ­¤æ—¶ï¼Œç”±äºŽè›‡çš„长度加1,蛇尾没有动,而蛇头被自己围着,挂掉了。可是, 我们却还有一个空白的格子#没有填充。按照我们之前教给蛇的策略, 面对这种情况,蛇头就只会一直追着蛇尾跑,每当它和食物有路径时, 它让虚拟的蛇跑一遍发现,得到的新布局是不安全的,所以不会去吃食物, 而是选择继续追着蛇尾跑。然后它就这样一直跑,一直跑。死循环, 直到你按ESC键为止。

       ç”±äºŽé£Ÿç‰©æ˜¯éšæœºå‡ºçŽ°çš„,所以有可能出现上面这种无解的布局。当然了, 你也可以得到完满的结局,贪吃蛇把整个矩形都填充满。

       ä¸Šé¢çš„最后一个问题,暴力法是否能得到最优序列。从上面的分析看来, 可以得到,但不能保证一定得到。

       æœ€åŽï¼Œçœ‹çœ‹é«˜çž»è¿œçž©çš„蛇是怎么跑的吧:

       çŸ©å½¢å¤§å°*,除去外面的边框,也就是8*。Linux下录完屏再转成GIF格式的图片, 优化前多M,真心是没法和Windows的比。用下面的命令优化时, 有一种系统在用生命做优化的感觉:

       Shell

       1

   

       convert output.gif -fuzz % -layers Optimize optimised.gif

   

       æœ€åŽè¿˜æ˜¯æ‹¿åˆ°Windows下用AE,三下五除二用图片序列合成的动态图片 (记得要在format options里选looping,不然图片是不会循环播放的)

       Last but not least

       å¦‚果对源代码感兴趣,请戳以下的链接: Code goes here

       å¦å¤–,本文的贪吃蛇程序使用了curses模块, ç±»Unix系统都默认安装的,使用Windows的童鞋需要安装一下这个模块, 送上地址: éœ€è¦curses请戳我

       ä»¥ä¸Šçš„代码仍然可以继续改进(现在加注释不到行,优化一下可以更少), 也可用pygame或是pyglet库把界面做得更加漂亮,Enjoy!

GPT-Engineer一夜爆火!一个提示生成整个代码库,GitHub狂飙k星

       AI代码生成明星项目GPT-Engineer一夜爆火,短短几天狂揽k星。AutoGPT之后,诞生了又一个明星项目。这是一个根据指示生成代码的AI工具,你只需要「动动嘴」,就能直接构建整个代码库。项目地址:github.com/AntonOsika/g...。

       GPT-Engineer的特色包括:一个提示就能生成一个代码库,提出需要澄清的问题,生成技术规范,编写所有必要代码,dochub源码开发易于添加自己的推理步骤、修改和实验,项目开源,分分钟让你完成编码。这预示着未来软件创造将是一个人机共话的时代。

       项目主要作者Anton Osika在6月日首次推出GPT-Engineer,并介绍了这款AI工具最大的特点:简单易用,能够为用户提供价值;灵活且易于添加新的「AI步骤」;支持高级提示,可以记住用户反馈;能快速在AI和人类之间快速切换;所有计算都是「可恢复的」,并持久地保存到文件系统。这个项目独特地方在于,开发者在文本文件中提交需求,GPT-Engineer不是无条件接受这些要求,而是提出许多详细的问题来让程序员澄清缺失的细节。

       GPT-Engineer的工作流程分两个阶段:需求细化促进阶段和软件构建阶段。在需求细化阶段,用户提供的包含软件需求的文本文件被提交给GPT-Engineer,并被放置在OpenAI的GPT的初始消息中,同时还包括确定澄清问题的指示。GPT-Engineer系统接收来自OpenAI GPT-4的反馈,了解哪些需求需要澄清,地带指标源码并回应提示用户澄清的问题。整个过程循环,直到所有问题澄清到OpenAI GPT-4满意为止。在软件构建阶段,前一阶段提炼的需求被打包,并与OpenAI的GPT指令(即系统提示)和另外一套GPT-Engineer希望看到的输出指令(即用户提示)一起包装起来。GPT-Engineer收到来自OpenAI GPT-4的响应,然后创建源代码文件。

       使用GPT-Engineer,你可以创建一个多人可玩的贪吃蛇网页版游戏。你只需要输入一些关键提示,GPT-Engineer就会让你继续回答一些细节的问题,例如游戏规则和机制、玩家互联、游戏状态更新、用户界面、游戏控制、游戏结束状况和代码结构。具体步骤唰唰唰地来了,最后一款完美的贪吃蛇游戏代码就完成了。

       用户反馈显示,「澄清问题」是真正使GPT-Engineer脱颖而出的原因,因为修复生成代码中的问题往往比编写代码本身需要更多的时间。然而,这个项目火虽火,一位网友测试了GPT-Engineer,给出了体验:难设置,实际上不是创建文件,只是让你从命令行中运行一次(即不能调试),与ChatGPT4的能力相当。还有网友对基准指出了问题,GPT-Engineer做了几个简单的编程任务,并将它们作为基准,可以为你快速开发一个currency_converter,但不能正确编码一个pomodoro_timer。

       安装方法:对于稳定版本,使用pip install gpt-engineer;对于开发版,git clone git@github.com:AntonOsika/gpt-engineer.git,cd gpt-engineer,make install,source venv/bin/activate。设置使用GPT4访问权限的API密钥运行:export OPENAI_API_KEY=[your api key]。运行:创建一个空文件夹,如果在repo中,可以运行cp -r projects/example/ projects/my-new-project,在新文件夹中填写 main_prompt,运行gpt-engineer projects/my-new-project。检查 projects/my-new-project/workspace 中生成的文件。

       项目主要作者Anton Osika是Depict.ai的首席技术官,创建了机器学习推荐系统,通过尖端的机器学习、计算机视觉和自然语言处理来理解产品。就在4小时前,他还发了一条动态称,GPT-Engineer已经跃升到k星,一点也没有减速迹象。

参考资料:

github.com/AntonOsika/g...

AI代码神器cursor

       拥抱AI开发工具cursor,探索神奇编程领域。

       cursor,一个编辑器,旨在快速构建软件,依托于AI人工智能对话,针对编程领域进行优化。

       底层基于GPT4.0版本,后因高使用量导致算力问题,更新至GPT3.5版本。个人用户享有每月次免费体验,超出次数需付费会员,每月美元,约人民币元。

       安装cursor,首先访问官网,根据操作系统下载对应版本,完成邮箱注册,操作界面简洁直观。

       新建Java文件,利用快捷键Ctrl+K启动对话模式,cursor随即生成递归调用代码。

       保存代码或取消操作,全选并输入指令解释,cursor自动提供中文注释。

       设置选项,如请求中文注释,cursor生成代码时自动添加。

       使用Python开发贪吃蛇游戏,cursor辅助生成代码并提供中文注释。

       遇到错误时,利用cursor的聊天功能解决,问题迅速得到解决。

       解决依赖问题,cursor提供解决方案,执行相应命令后,游戏成功运行。

       通过调整clock.tick函数值,实现游戏速度调整,添加记分功能并设置游戏结束条件。

       总结cursor作为开发辅助工具,能有效提升开发效率,但无法替代传统开发工具。使用cursor与传统工具结合,可优化编程流程。

求一个3合1街机游戏(一个是贪食蛇,贪食蛇过关的跳进洞里的,一个是枪的,,一个食丢骨头的)

       这三个游戏是MD游戏机上的

       被盗版商移植到街机上,街机模拟器目前不支持这些

       所以要通过MD模拟器来运行MD版的

       下面是MD版的下载连接

       第一个 双蛇城(贪吃蛇)

       /hacker/

       一个非常炫酷的代码雨网站,打开就能看到满屏的代码从页面向下滑落,看上去就像电脑被入侵了一样,而且双击鼠标还能呈现出更多的代码雨。

       7、中华珍宝馆

       /qt/

       一个非常治愈的纯音乐网站,页面非常简约,只提供声音和背景音乐,带上耳机可以在这里听到关于、雨声、雷声、农场、篝火、河流、风声等不同环境下载的纯音乐。

更多内容请点击【焦点】专栏