如何用Python写一个贪吃蛇?

贪吃蛇AI—基于BFS算法+Pygame 之前在微博上看到一张图。 这张图一看就知道是程序控制的,因为普通人没这么无聊,而且图片中蛇的运动很高瞻远瞩,可以判断肯定不是单纯的搜索算法。正好最近复习数据结构,那就尝试也实现一个人工智能来玩贪吃蛇吧。 语言选择 人生苦短,我用Python。 在此之前 首先,我们得先做一个能玩的贪吃蛇游戏, 并沉迷其中。 游戏思路和代码很简单,在一个矩形里不断出现随机位置的食物,让蛇在矩形内不断吃食物就行了。用代码实现就是用数组表示地图和坐标,再用一个二维数组储存一格格蛇身的位置。循环监听键盘事件,按下按键后就转向,遍历所 阅读详情

阅读文本大概需要 5 分钟

作者:Hawstein
http://hawstein.com/2013/04/15/snake-ai/

前言

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

开始之前,让我们再欣赏一下那只让人涨姿势的贪吃蛇吧:( 如果下面的动态图片浏览效果不佳的话,可以右键保存下来查看)

语言选择

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

最初版本

先让你的程序跑起来

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

简单版本

我觉得直接写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键为止。

由于食物是随机出现的,所以有可能出现上面这种无解的布局。当然了, 你也可以得到完满的结局,贪吃蛇把整个矩形都填充满。

上面的最后一个问题,暴力法是否能得到最优序列。从上面的分析看来, 可以得到,但不能保证一定得到。

最后,看看高瞻远瞩的蛇是怎么跑的吧:

矩形大小10*20,除去外面的边框,也就是8*18。Linux下录完屏再转成GIF格式的图片, 优化前40多M,真心是没法和Windows的比。用下面的命令优化时, 有一种系统在用生命做优化的感觉:

1

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

最后还是拿到Windows下用AE,三下五除二用图片序列合成的动态图片 (记得要在format options里选looping,不然图片是不会循环播放的)

Last but not least

如果对源代码感兴趣,请戳链接:https://github.com/Hawstein/snake-ai

另外,本文的贪吃蛇程序使用了curses模块, 类Unix系统都默认安装的,使用Windows的童鞋需要安装一下这个模块。

以上的代码仍然可以继续改进(现在加注释不到300行,优化一下可以更少), 也可用pygame或是pyglet库把界面做得更加漂亮,Enjoy!


无pygame写一个python贪吃蛇 无pygame写一个python贪吃蛇 这个贪吃蛇是以pynput来监视键盘,os来刷新屏幕,以此实现的贪吃蛇 蛇的结构 贪吃蛇建立在block组成的二维列表里,block包含两个属性``,自己的身份和指向 身份包括:草地,蛇身,蛇头,蛇尾巴,苹果五种。 指向则是从尾巴一格一格地指向蛇头。 这样蛇的移动其实就是丢掉尾巴,头长长一格。 代码展示 import os import time import random from pynput.keyboard import Listener def bp (s 阅读详情

相关推荐

用python写一个简单的贪吃蛇游戏(附代码)

今天要给大家分享的是一个 pygame 写的“贪吃蛇”小游戏

python2021_的博客 6万+

01-贪吃蛇自动寻路

贪吃蛇自动寻路python实现

legend_shiyan的博客 1896

用 Python 写个贪吃蛇,保姆级教程

本文基于 Windows 环境开发,适合 Python 新手 Python 练手级项目——贪吃蛇一、初识 curses1.1 简单使用1.2 整点花样1.2.1 新建一个子窗口1.2.2 上点颜色1.2.3 给点细节二、贪吃蛇2.1 设计2.2 蛇语者2.3 命令行?画板!2.4 控制!2.5 直接使用三、结尾 本期介绍 Python 练手级项目——贪吃蛇! 原本想推荐一个贪吃蛇的开源项目:python-console-snake,但由于该项目最近一次更新是 8 年前,而且在运行的时候出现了诸多问题。.

program_G的博客 2003

贪吃蛇自动寻路

【代码】贪吃蛇自动寻路。

weixin_73238667的博客 504

python实现自动贪吃蛇,含完整代码

通过运行程序,您可以看到自动化贪吃蛇AI前进向食物并吃掉它的过程,同时避免碰到障碍物和自己的身体。总的来说,Python自动化实现贪吃蛇游戏需要掌握Pygame库,了解A*算法和二维数组的处理方法。本文提供了完整的代码和详细的描述,希望能够帮助您更深入地理解Python编程和人工智能算法,实现更加高效、有趣的程序。贪吃蛇游戏是一款经典、简单却挑战性极高的小游戏,让我们忍不住想用代码去写一个自动化的贪吃蛇游戏。在这个过程中,需要注意处理贪吃蛇的身体长度和食物的位置,以及防止贪吃蛇撞到自己或撞到屏幕边缘。

. 2598

如何用Python写一个贪吃蛇AI

前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过。但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势的地方了。 问题的关键在于,图片中的贪吃蛇真的很贪吃XD,它把矩形中出现的食物吃了个遍, 然后华丽丽地把整个矩形填满,真心是看得赏心悦目。作为一个CSer, 第一个想到的是,这东西是写程序实现的(因为,一般人干不出这事。 果断是要让程序来干的)第二个想到的

wenyusuran的专栏 2042

python实现AI版贪吃蛇

Python实现AI版贪吃蛇一、主要思路二、实现代码三、效果展示四、不足之处 一、主要思路 (1)蛇每走一步,就使用BFS计算游戏界面中每个位置(蛇身除外)到达食物的最短路径长; (2)将蛇的安全定义为蛇是否可以跟着蛇尾运动,即蛇头和蛇尾间是否存在路径; (3)蛇每次行动前先利用虚拟的蛇进行探路,若虚拟的蛇吃完食物后是安全的,真蛇才行动; (4)若蛇和食物之间不存在路径或者吃完食物后并不安全,就跟着蛇尾走; (5)若蛇和食物之间、蛇和蛇尾之间均不存在路径,就随便挑一步可行的来走; (6)保证目标是食物时蛇走

weixin_43704730的博客 1321

MiniMax H3本地部署与ComfyUI集成实战:从环境配置到提示词优化

文本到视频生成是AI内容创作领域的关键技术,它基于扩散模型等深度学习原理,将自然语言描述转化为连贯的动态视觉序列。这项技术的核心价值在于大幅降低了视频制作的门槛,为短视频创作、概念可视化、教育内容生成等场景提供了高效工具。在实际工程实践中,成功部署和运行此类模型,如近期备受关注的MiniMax H3,需要精准处理环境配置、显存优化和提示词工程等环节。其中,解决“CUDA error: no kernel image is available”等版本兼容性问题,以及针对“8G显存”等有限资源进行参数调优,是确

weixin_33674976的博客 479

一步步教你怎么用python写贪吃蛇游戏

目录 0 引言 1 环境 2 需求分析 3 代码实现 4 后记 0 引言 前几天,星球有人提到贪吃蛇,一下子就勾起了我的兴趣,毕竟在那个Nokia称霸的年代,这款游戏可是经典中的经典啊!而用Python(蛇)玩Snake(贪吃蛇),那再合适不过了

Python专栏 3万+

格(Lattice)基础(一)

有关格的基础概念,和相关的格难题

Amire0x的小乐园 5701

Kali Linux实战:Aircrack-ng破解Wi-Fi密码的完整流程与常见问题解决

本文详细介绍了在Kali Linux中使用Aircrack-ng套件进行Wi-Fi密码破解的完整流程,包括环境准备、无线网卡配置、网络扫描、握手包捕获与字典破解等关键步骤。同时针对无线网卡不支持监听模式、无法捕获握手包等常见问题提供了实用解决方案,帮助安全研究人员有效评估无线网络安全性。

weixin_29323049的博客 298

python贪吃蛇毕业设计_使用Python写一个贪吃蛇

参考代码http://blog.youkuaiyun.com/leepwang/article/details/7640880我在程序中加入了分数显示,三种特殊食物,将贪吃蛇的游戏逻辑写到了SnakeGame的类中,而不是在Snake类中。特殊食物:1.绿色:普通,吃了增加体型2.红色:吃了减少体型3.金色:吃了回到最初体型4.变色食物:吃了会根据食物颜色改变蛇的颜色#coding=UTF-8from Tki...

weixin_39569894的博客 203

NBIS单细胞教程:差异基因(五)

此文章是通过学习瑞典国家生物信息学基础设施(NBIS) 所开放的单细胞分析教程加上网上所查找的资料,自身的理解所形成的,可能会有不足之处。该部分是对不同集群之间的差异基因进行分析。参考来源:https://github.com/NBISweden/workshop-scRNAseq/blob/master/labs/seurat/seurat_05_dge.Rmd感兴趣的话可以阅读原文。

songyi10的博客 1万+

python写贪吃蛇游戏

在大学闲来没事自学了一点Python,学了一些基础知识部分,写了一些小案例,网上也是一大堆视频和书籍资料,后来给自己交个作业就写了一个小游戏玩玩,那就干脆写个贪吃蛇吧。 可以看到代码其实也是通俗易懂,很简单就实现了,以下: 一张平面图、一条蛇、一个随机出现的食物,再加上计分面板。 最主要的是那一条蛇,咱们可以用一个数组来实现, 贪吃蛇是由一个list组成,list中的每一个元组代表着贪吃蛇在棋盘上的坐标位置,我们只需在这些位置画上图案就能制作出一条贪吃蛇来,而让贪吃蛇动起来就要用一个move函数来实

气死的笨喵 1470

AHB2eflash 控制器设计笔记

① SRAM② DRAM③ SSD④ SATA⑤ U 盘⑥ 移动硬盘⑦ 机械磁盘eflash。

weixin_46220498的博客 3078

【异常】Cursor报错We‘re having trouble connecting to the model provider. This might be temporary

在使用Cursor编辑器进行AI交互操作时,界面弹出如下报错提示,导致无法正常调用模型服务,影响使用流程:We’re having trouble connecting to the model provider. This might be temporary - please try again in a moment. 该报错核心含义为Cursor编辑器无法正常连接至背后的AI模型服务提供商(如OpenAI、Anthropic等),属于连接类异常,并非编辑器本身运行故障。经排查,该报错不具备破坏性,仅

奶爸的编程之路,也就一周冷个三天 1694

python写贪吃蛇的案例

使用豆包写贪吃蛇的案例

宝哥的学习之路 328

实现基于 Python 和 xterm.js 的 Web 交互终端demo

前端 (HTML):使用 xterm.js 作为前端终端模拟器库。创建了一个 WebSocket 连接到 ws://localhost:8765,这与后端服务器的地址和端口匹配。监听 WebSocket 消息,并将数据写入终端。同时监听用户输入并发送到服务器。后端 (Python):使用 websockets 库来创建 WebSocket 服务器,监听端口 8765。使用 paramiko 库来创建 SSH 客户端并连接到指定的远程服务器。

u010674101的专栏 876

python贪吃蛇_如何用Python写一个贪吃蛇?

前言这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过。但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势的地方了。问题的关键在于,图片中的贪吃蛇真的很贪吃XD,它把矩形中出现的食物吃了个遍, 然后华丽丽地把整个矩形填满,真心是看得赏心悦目。作为一个CSer, 第一个想到的是,这东西是写程序实现的(因为,一般人干不出这事。果断是要让程序来干的)第二个想到的是,写程...

weixin_39589693的博客 226

openHarmony之AI Engine:万字讲解如何在应用、开发板上接入AI大模型调用

本文章介绍如何在 OpenHarmony 开发板上集成和部署各类 AI 大模型,实现终端直接聊天功能,并为语音助手、智能机器人等应用提供 AI 接口支持。

m0_67505153的博客 620

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

用python写个贪吃蛇

python用pygame写一个简易贪吃蛇

qq_46500711的博客 2646

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

如何用Python写贪吃蛇小游戏

手把手教你用Python写一个简单的贪吃蛇小游戏 人生苦短,我用Python! hello 大家好!我是Mark,一个姓马名克的中国人。 最近呢突然特别想玩一个贪吃蛇的小游戏,可是家里管得严,电脑上面,手机上面都不让下载,可是,对于会Python的我,这根本不是问题。 今天,我们就来看看,如何通过Python来写一个贪吃蛇小游戏! 首先,我这里调用pygame模块 安装: pip install pygame 安装完成之后输入 python import pygame 如果没有报错,说明安装成功。

zhugezuoyuan的博客 1575

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python写一个游戏多少代码-使用Python写一个贪吃蛇游戏实例代码

我在程序中加入了分数显示,三种特殊食物,将贪吃蛇的游戏逻辑写到了SnakeGame的类中,而不是在Snake类中。特殊食物:1.绿色:普通,吃了增加体型2.红色:吃了减少体型3.金色:吃了回到最初体型4.变色食物:吃了会根据食物颜色改变蛇的颜色#coding=UTF-8from Tkinter import *from random import randintimport tkMessageBo...

weixin_37988176的博客 129

如何用 Python 写一个 AI 贪吃蛇

这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过。但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势的地方了。问题的关键在于,图片中的贪吃蛇真的很贪吃XD,它把矩形中出现的食物吃了个遍, 然后华丽丽地把整个矩形填满,真心是看得赏心悦目。作为一个CSer, 第一个想到的是,这东西是写程序实现的(因为,一般人干不出这事。果断是要让程序来干的)第二个想到的是,写程序该如何实现,该用什么算法?既然开始想了,就开始做。

Trb701012的博客 1087
上一篇: 数据分析常用的四大战略分析工具
下一篇: postman设置token的环境变量
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值