找回密码
 立即注册
楼主: super1

[笔记] 你看过/写过哪些有意思的代码?

[复制链接]
发表于 2021-9-18 09:03 | 显示全部楼层
这个东西啊,是4年前写的东西了。
好像是大三吧?忘记哪门课了,反正是一个大作业吧好像。
当时用VS2013开发的,今天试了一下VS2015还是可以编起来,
不过有点小BUG,我修掉了。
如果你感兴趣可以clone下来自己编译,也可以直接下载exe来玩噢

BIGBALLON/Ghost
(Win10下面测试是OK,很久没碰Win7了不知道能不能用)

界面长这样啦


project 的界面



project 的界面



总的来说,这个project算是一个搜索算法的演示。
包括 BFS, DFS, A*, IDA*  和 SA。

其中 BFS, DFS, A*是第一部分,用来演示寻路问题
IDA*是第二部分,用来演示拼图问题
SA是第三部分,用来判断最安全点。

Part 1

可以任意选择一个起点 和 一个终点。
当然你可以点击任意方块,他会变换形态,分别有道路,草坪,沼泽,水流 和 墙壁。
在道路上走,每一步花费1s
在草坪上走,每一步花费2s
在沼泽上走,每一步花费3s
在水流上走,每一步花费4s
墙壁则无法通过。

So, 你可以根据自己的喜好来改变这个 地图


然后支持A*,BFS和DFS三种搜索算法,点击执行就是马上显示路径单步就是搜索一步静态扩展就是扩展出所有搜索的点动态扩展则是带动画的扩展




A*算法+执行



A* 算法 + 静态扩展

part2



选择IDA*之后会换界面
随机产生一个拼图(左边) 和 #字图(右边)
然后点击执行会动态得显示解题步骤



part3

最后是一个模拟退火得部分。
所有得红点都代表火源,而蓝点代表离火源距离最远的安全点。



同样你可以通过鼠标点击来改变地图,程序会重新计算安全点



最后给个演示视频吧。。因为很多动态效果,视频展现比较OK。

Ghost: A AI search algorithm
https://www.zhihu.com/video/1007634852425916416

OMG

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
 楼主| 发表于 2021-9-18 09:12 | 显示全部楼层


https://www.zhihu.com/video/986414905712541696


https://www.zhihu.com/video/986415099657199616
python写的连连看外挂,图二时间间隔设置成了0,效果有点吓人。用的是简单的opencv图像识别结合连连看的算法,如果关注度足够,我会回来补上具体的实现思路和源码地址。(开源了已经)希望不会接到腾讯爸爸的律师函?
<hr/>先手动来条华丽的分割线
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这刚刚有了知乎账号不到两周还,第一次在知乎回答,不到两天的时间,快破800的点赞,440的收藏,130的关注,66的感谢,还有100多条五花八门的评论着实是吓到我了。刚刷到这个问题的时候就觉得小猪佩奇都能赞到3k+,那我是不是也可以?就尝试性的发了这个外挂出来,看来冲击力实在不小,都有人私信问我是不是骗子了,吓得我赶紧回来补上约定好的实现思路和源码连接。承蒙大家厚爱,现在我来好好回答一下这个问题。
源码

源码连接:先点这里,然后点star(因需要遵循知乎规定,源码连接已失效。)
这个小外挂用python2写出来有将近半年了,挂到github上的版本我想用python3重构,当时只写了个开头后来不了了之了。这篇回答发出来,关注度如此之高,这才想起来我的github上挂的是半喇项目,尴尬我的今天趁下班时间赶紧写完了python3的版本,并且把思路代码都理了理。
需要使劲敲黑板强调一下的是:我在Github上提供的源码带了一个自己实现的连连看游戏,按照源码中的参数运行起来,可以挂我自己的这款连连看, 如果挂腾讯爸爸的游戏,需要修改一些参数,参数我在此不做提供。此处开源仅用于交流学习使用,请不要大肆传播,影响正常的游戏秩序和公司的商业利益。
实现思路

下面的内容,伸手党可以不用看了,毕竟大家更感兴趣的,肯定是上面那个链接(嗯,可惜现在已经没了)
项目一共350行左右的源码,注释150行,是的,实现起来比你想象的简单的多。接下来我用我的方式讲解一下这个外挂是怎么实现的,尽可能简洁,让绝大部分人都能听懂。
    首先,我们先想想人类是怎么玩连连看这个游戏的?
游戏开始,纵览全局,一眼扫到能够相连的两个相同的图片,就用鼠标去点,先点第一个,再点第二个,随着“撕拉”一道闪电两个方块随即爆炸,爽的不要不要,以此类推直到游戏结束,通过以上的操作可以细化出这样几个点来:
    图片要相同。这个我们人类可以一眼分辨出来 两个点可以连通。很多人玩到现在也不是很清楚怎样能连,怎样不能,反正看了就知道,具体是啥硬性规则也并不是特别清楚。 点击,鼠标一个一个的点,如果刚点过的两个图片相同并且可以连通,就是“撕拉”一道闪电让你爽一下。

    回到问题,人类是这样玩的?那机类能不能也这么玩?
答案是肯定的,计算机运算速度那么快,如果能想办法让他用和人类一样的思路去操作,那我们岂不是能轻易享受到“撕拉撕拉”的快感?而唯一需要我们做的,就是躺好,让她自己动。哦它!错别字!
想到这问题就清晰一些了,我们想让电脑按照我们的方式去执行和我们一样的操作,借助CPU发热的淫威,达到我们人类难以企及的速度,就是酱紫。那么计算机怎么像我们一样思考和操作呢?回到上面分析出的三点:
    它要能认出屏幕上相同的图片。它要知道某俩图片能不能相连。它要能像人一样去对着屏幕啪啪啪....地点击。
就像把大象装进冰箱一样,让电脑代替人脑,需要的也就是这么简单的三步。
    第一步:它要能认出屏幕上相同的图片。
程序它如何能认识屏幕中的游戏中的一个一个的小方块呢?你肯定想到了:图像识别+机器学习?
学习个屁!
没错乍一看屏幕中间一个个的小方块是很有规律的,也有明显并且规律性的色值的梯度变化,通过一些图像识别的算法一定可以让程序认出屏幕上的小方块来。
没错,但这样做真的不会很麻烦嘛?这里我一定要跟在座的提一下:无论是产品设计还是编码实现,一定要遵循一个核心原则:大道至简!什么叫大道至简?意思就是复杂的我也不会。
那简单的怎么做?首先,找到游戏窗体的位置(windows API),然后从屏幕上截张图(PIL),游戏窗体顶点的横纵坐标各加上一个数字,就找到了游戏区域(图中绿框),然后,通过图像切片的方式,从点C开始,分别以方块宽度为高度为步长,把图像切割成n个小块,然后再比较这些图片是否相等,一样的就用同样的数字标识,空白就用0,就这样简单粗暴地完成了第一步。


至于我怎么知道方块的宽度高度,还有从顶点到游戏区域的距离?这个我是截图拿PS看的,不然还拿尺子量么。。。
    第二步:判断两张图是否能够相连
图像转化成数据了,数据改怎么进行处理?
这里就得扯一下连连看的算法了,它的算法和它的规则关联度很大,它的规则是和拐点相关的:两个方块的通路上,最多可以有两个拐点,如果用两个拐点还连不上,那他们就不能连通。落实在算法上其实很好写也:两个点能否直连是很好判断的,只需要判断两点之间的通路上是不是都为0就可以。那么两点通过一个拐点连通的情况,就是其中一点到拐点,再从拐点到另一点两个直连的判断。那么两个拐点的情况,就是一个点到拐点的直连+一个拐点到另一点的单拐点的情况进行判断。这样写下来,几乎全是嵌套调用,最后全部都集中在直线的校验上。
    第三步:如果能够相连,模拟鼠标点击屏幕
第二部判断出的两个点可以相连,那需要程序点击一下两个点就可以,通过刚才的判断两个点的坐标是可以知道的,那只需要再向两个坐标发送鼠标点击的时间就可以。这里通过python win32的API就可以实现模拟,贴心的答主已经在源码开头附上pywin32下载链接了。
    最后,重复以上步骤
电脑会以惊人的速度向你反馈“撕拉撕拉”的快感。这里请允许我再装个逼,上面的视频2我搞错了,是时间间隔0.01秒的情况,真实的0间隔效果是酱紫的:


https://www.zhihu.com/video/987135495880663040
一些闲蛋

接下来就是一些闲扯的内容了,是我的一些看法和讨论,可能没什么技术含量和价值,不喜勿喷。
    说好的图像识别呢?
相信很多人看了思路和源码一定很失望,根本没有什么高端的算法和逻辑,说好的图像识别,也就是用了一下opencv的函数比较了一下图像是否相等。当然,外挂确实实现了还很吊炸天。理想状态下当然是通过图像识别找出相同的图片然后分析计算然后执行自动消除的操作。但是不那么做的理由我在上面也说过了,我确实不会....-_-||
    程序中可改进的地方还有很多
1、这个外挂程序的局限性比较大,从我上面的分析就可以知道很多都是基于固定坐标来算的,那其实只要腾讯爸爸把这个游戏做的支持缩放,这个外挂也就跪了。但是腾讯没有,自打我有记忆以来,这游戏怕是有15年没更新了,600*800的像素在我同事的外星人上显示地像个幼儿版本。可能是看不上这一天两万人的用户量吧,还是开发新版本的欢乐斗地主更挣钱。
2、如果速度设置的较慢,让别人先赢了,将是一件比较尴尬的事情,别人赢了你再点击屏幕已经无效了,但是程序继续运行仍然会让鼠标在对应的位置点来点去。你还没法移动它去停止程序,你鼠标还没挪走呢,就又给你挪到其他位置了。此处应该设置个中断机智,能够随时停止程序的。
3、我在程序中使用的是opencv+numpy进行的图片读取,切片,还有图片是否相等的校验。后来同事给我提供了一种思路:1、PIL本身就可以进行图片切片,2、operater.eq()可以校验两个对象是否一致,用来校验切片出来的图像是完全可以的。 这样的话根本就不需要opencv和numpy,什么图像识别,根本不需要的,如果那么做,代码量还可以比现在更精简。当然运行效率上,跟opencv+numpy根本不是一个量级。
    关于外挂
关于外挂有很多中办法实现,我说几种主流的,大家评论里也已经多得五花八门了,
1、其中很大一部分,也是绝大多是外挂的主流做法,就是直接在本机改内存。你的游戏运行在我这里,代码就得加载到我的内存里运行,那么内存里的数据再抽象,总有高手能给它鼓捣出来。就比如说这个连连看,我也可以通过读取内存的手段直接拿到它方块布局的数据,直接把这个数据全改成0,那立马就赢了。但这样做很麻烦,这里我一定要跟在座的提一下:无论是产品设计还是编码实现,一定要遵循一个核心原则:大道至简!什么叫大道至简?意思就是复杂的我也不会。。。
有一些游戏数据必须要在本地进行处理的,很容易遇到这种外挂,比如地下城与勇士无限刷图啦,更比如吃鸡,就说吃鸡,这样的第一人称射击游戏,打一枪子弹中没中,不可能放到服务器去判断,一是判断不过来,二是受网络的影响实时性根本达不到要求。所以你一枪子弹打出去中没中,一定是放在本地进行计算的,既然是在本地内存里,一旦防范不到位那就有人能给你改,我们所谓的“飞天遁地锁血金身”什么的。像LOL就不多存在这样类型的外挂,一方面肯定是反外挂投入的力度大,另一方面就是因为你的操作全部都是由服务器来进行计算并反馈的,不存在太多本地数据篡改的风险。
2、另一种外挂,不在本机改内存,而是通过网络去骗数据,常见于数据协议被黑客窃取或破解,那他就可以按照协议格式发伪造的数据,来骗服务器。这种外挂我见过的比如GTA5 online版本,当时答主的舍友花50块买的外挂,头上一个劲儿的往出冒钱,外挂弄出的钱,退出后重新登录会消失,但是如果这些钱用来买了资产,那资产就实打实的是你的了。看上去也是很爽,感觉那外挂应该是了窃取某个加钱的接口,然后发模拟数据一个劲儿的刷。
3、再有,就是我的这种外挂,用程序来模拟用户的某些操作,类似于按键精灵的意思,得益于计算机优秀的运算速度,往往能达到人类难以企及的水平。除了我这个连连看,还有之前微信跳一跳的外挂也是如此。而这种外挂也很难防范,有些时候程序无法判断操作是来源于用户还是代码。
    关于攻防
我是这个外挂的作者,所以也想说说关于如何防范这个外挂,以下来说说我替鹅厂想的一些法子来阻止我这个外挂。
1、最行之有效:窗体缩放。如果这个游戏的窗体可以缩放,那我这个外挂基本上算是废了,除非你每次玩的时候都能缩成固定的大小,并且每次保证都一样。如果真的修改地支持窗体的缩放了,那我的外挂就不得不通过真正的图像识别来搞了。当然,那样会很麻烦....我不会。
2、检测时间间隔,如果每次间隔都一样,则视为外挂。这属于比较蠢的办法之一,你是不知道python中生成个随机数有多简单,随便弄个0.5~2秒随机,那家伙比真人还真!
3、通过驱动级别的检测,看是否有鼠标输入。这个原理很简单,实现起来很难。让程序的代码深入驱动底层去检测,如果没有捕获到鼠标点击,但是程序却收到了鼠标事件,说明这次点击时程序模拟的,直接过滤掉。但是这样做的代价很大,驱动底层的windwos编程带来的可能是巨大的兼容性难题,XP、win7、win10很有可能不一样。与其这样,干嘛还在每天2W用户量的连连看上面较劲,投入人力物力去开发欢乐斗地主不是更好么。
当然,鹅厂是完全有这样的能力和技术手段的。答主曾经遇到过一个windows键盘监听器,用C++钩子实现的全局键盘监听,可以监听一切用户输入。但腾讯QQ的登录框的密码,则是完全兼听不到的,这说明腾讯在此处做了比钩子更加底层的安全处理,也就是驱动级别的处理。题外话:银行官网登录时让下载的安全控件也可以提供这种级别的保护的,四大行只有一个会被钩子监听到按键输入,是哪一个我就不说了,曾经提交过反馈,不知现在处理了没有。
    这个外挂其他语言能不能做
可以!答案是一定可以,这其中用到的技术没有一个是非python干不了了,只能说用其他语言,可能代码量多少的问题,比如我python用了200行有效代码,可能go需要300行? C++400行? java2000行......
哦,当然不是任何语言都可以,html和css就不行。
    关于评论和私信
我刚刚才加入知乎,第一次回答有如此的关注度肯定是开心的,但是大家不要再在私信和评论里一口一个大佬大神了,又是问我要代码,又是问我推荐学习路线,问我推荐书籍的。作为程序员拿着不到5K的月薪,这么搞得我心里着实很慌。
还有问我要连连看源码的,这个视频中的连连看是腾讯QQ的连连看,不是我写的,所以你要连连看源码的话....我还真的有:王者荣耀风格的连连看。这个也就是我外挂项目中捆绑销售的连连看游戏,Qt C++做的,如果能加上“撕拉”的闪电,就更好了。拿去看看就行了,别拿去充当什么课设毕设,这游戏硬让我学弟妹们拿去给三四个人做毕设了,后果....
虽然我原本压根没打算入知乎的坑,但是一波儿回答让我吸了这么多赞还是蛮开心的,如果说问我出名后想做什么事情的话,我想可能是先给自己搞个头像?
PS:呀!刚才又看了一下,评论里没有叫大佬大神的哈,  飘了飘了~~
    关于代码中不给针对QQ连连看的数据
外挂这种东西一定会多多少少损害到其他公司的商业利益,虽然鹅厂还轮不到我来考虑人家的商业利益,但是我仍然不希望外挂的配置代码从我手中散播出去。代码的开源一是为了交流和学习,二是为了Github上多多的star(不要脸到我自己都怕)。我也不扯什么伦理道德,我能做的,就只是管好自己。作为原作者也希望大家都能够做到:不要在公开场合散布有关破解QQ游戏连连看的配置信息,不要将此代码用于任何商业用途。
还有就是答主是个玻璃心,以上言论 有何不妥欢迎随时交流探讨,但是谢绝辱骂。
洋洋洒洒墨迹完,已经深夜了,祝大家好梦,就这样。

2019/1/27
偶然在知乎上看到了连连看的物理外挂版本,这个才是真大牛:https://www.zhihu.com/question/265112599/answer/393472226

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-9-18 09:19 | 显示全部楼层
一年不见,大家好ya~欢迎大家去关注我的“信息可视化”专栏,时隔一年,专栏又更新啦!(逃)以后有什么新的想法就在那儿发布了,欢迎关注点赞~


https://www.zhihu.com/video/976229308054802432
上学期用JavaScript写的一个遗传算法可视化,模拟蝴蝶颜色逐渐趋向稳定的状态,蝴蝶会经历长大,繁衍,死亡,优胜劣汰的过程,中间的圆形是食物,蝴蝶会有觅食行为,吃食物会延长寿命,同时有飞舞,聚群行为,主要是通过一个力导向算法实现。点击屏幕可以看到相同群体的蝴蝶的相互联系
<hr/>谢谢各位霸霸们点赞!评论区好多楼主要源码,当时因为赶时间,代码写的特别烂,有时间再整理一下~,先把代码的github地址放上来吧:https://github.com/DesirY/Visualization
<hr/>看到各位评价这么高(逃),忍不住把之前做的可视化作业放上来,老师要求是画五个动态的表,我用html+css+JavaScript实现了几个很简单的biao
1.最传统的实现


2.模拟太阳,太阳中黄色的水位会随着一天的时间不断上涨。


3.模拟宇宙,三个比较亮的星球代表时分秒针,我比较中意这个



4.录音机的眼睛和嘴巴会动哦。。。



5.这个是作为压轴吧,用d3库实现的略复杂,可以鼠标交互



<hr/>答主最近在做一个可视化系统,把海量文本的主题提取出来之后再用散点图可视化,困难程度远比我想象的大,做到没脾气,准备把这个项目坚持做下去, 成功之后会放到回答里,
希望大家支持啊~~
<hr/>各位小哥哥小姐姐们不要只收藏不点赞啊,目前收藏量已经超过点赞了(捂脸)
之前提到的可视化项目已经做好了~


虽然很丑,但是花了好长的时间。这里每一个点代表一篇新闻,然后我把这些新闻提取主题,降维可视化,并且可以手动交互,最后结果就是酱紫啦。
我们来看看这两千多个新闻讲了什么故事吧,比如右下角红色点的主题词是('missile','launching', 'rocket', 'satellite', 'launch')这样我们大概就可以猜到是关于卫星发射的新闻。而中间蓝色的主题词是('food', 'aid',  'children', 'million', 'people', 'chronic', 'flooding'),那么这些新闻报道的主题应该就是某些地方发生洪水导致很多人遇难,人们给他们食物援助。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
 楼主| 发表于 2021-9-18 09:21 | 显示全部楼层


https://www.zhihu.com/video/1005594993901367296
一个小程序,右边是原始视频,左边是视频中静止的部分,中间是视频中运动的部分。
用的很数学的方法,能做出这么神奇的结果。。
感觉 很是激动!
代码量很小,150行最多了。。

PS:整个程序是指有一段视频(上方最右),要从视频中分出前景(上方中间)和背景(上方左边)。

###########具体算法#############
看了评论中的大神说的算法,感觉都很神奇。但是我并没用相关的算法,我也不知道到底哪个算法好。问题只是问“哪些有意思的代码”,所以说一下自己用的算法吧。
假设你有一段视频Z,这个视频有m帧,其中每一帧有n个像素,那么这个Z可以表示成一个 的矩阵。然后前景其实就是一个矩阵 ,背景也是一个矩阵 。当然A和B是未知的,Z是已知的。
然后整个问题其实只要解以下方程:

其中  是指这个矩阵的特征值的和, 是指示函数(indicator function),就是说如果花括号内的条件成立,是0,不成立是无穷大。
然后对这个方程略加修改,用一些优化算法就能算出来了。

补充一下方程含义吧。
A是存储了背景信息,每一行是一帧,因为背景不变,所以理论上说,第一行和第二行几乎相同,换句话说,矩阵A的秩越小越好,而  是rank(A)的一个近似。因为  越小,rank也更有可能越小。
B是存储了前景信息,我们觉着前景应该不多,大部分的应该是背景,所以理论上来说矩阵B越稀疏越好(因为一帧中的前景少,大部分是黑色的,所以对应矩阵大部分地方是0)。 外加会有噪音影响,所以 是一个近似。
最后一个指示函数,就是说,前景+背景组合起来一定要是原视频。


###########具体代码##############
给个伪代码吧,首先上面的方程要先转换成以下的增广拉格朗日惩罚(Augmented Lagrangian):

其中 是两个给定的参数。 然后用ADMM解就可以了。
不想看的话,直接看下面的伪代码:
输入: Z
    初始化A = Z, B =0, M = Z, Y =0, = 0.1, = 1循环N次

                                    #对 做个SVD










    得到的A, B就是视频中的情况了。。

加个参考文献:
https://statweb.stanford.edu/~candes/papers/RobustPCA.pdf

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-9-18 09:28 | 显示全部楼层
视频分享代码怕是失了智。。。

但能通过视频分享的代码,那肯定是酷炫的可视化啦!
我一直关注一个公众号「坏打印机」,博主现在是做互联网营销的,代码和设计都很厉害,下面是他一篇文章里的例子(链接:分享做过的Processing小作品的代码),都非常酷炫。

注:Processing是一种开源编程语言,专门为电子艺术和视觉交互设计而创建,其目的是通过可视化的方式辅助编程教学,并在此基础之上表达数字创意。Processing也指Processing语言的集成开发环境(IDE)。二维毛发代码





飞线作画



绕线作画



Motion Ball


(这个戳中我的笑点)

另一个就是大名鼎鼎的国内开源项目 ECharts啦
ECharts大家一定要看官网,官网就很炫!
官网的例子就很酷炫,比如说雷达图



多维度数据分析:


https://www.zhihu.com/video/975827559666065408

水球图:



还有很多官方的三维案例(显卡杀手!):
ECharts Gallery


大家看完可以关注一波我的知乎专栏:
图表进化论超级码力

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-9-18 09:32 | 显示全部楼层
是时候拉出我的一些珍藏了。

本人现在大三。在大一的时候从C++开始自学。学完循环和分支后就开始试着自己写一个逻辑猜数的小游戏。这游戏很早的时候在文曲星还有某个古董电视机上玩过,规则很简单。我就直接贴出图来描述游戏规则和游玩过程吧。




逻辑猜数

这个游戏就是用重复的if-else语句写也能100行左右搞定。。现在看之前写的代码,估计还能压到60行以内。

然后大一下学期的时候看的是一本《游戏编程入门(第4版)》的书,里面讲的是DirectX 9,主要是2D部分的知识。感觉是这本书把我带入了DirectX的巨坑。这本书到最后有一个Anti-Virus的小游戏,图片找不到了。。后期再补上吧。

然后从那份源码开始,经过我的一系列魔改,花了总共不下一个月的时间(实际上总共经历了一年),硬生生把它做成了StormCaliber的复刻版:



超级战机

其实StormCaliber这个游戏是在我05年拥有第一台家用电脑的时候,在一个盗版小游戏合集里面玩到的,现在百度的话搜激情战机应该可以找到。其中里面有个比较有意思的设定就是自己的飞机擦过敌方子弹是,会产生反制追踪弹,攻击屏幕第一个出现的敌人。
然后我就有了把那款游戏复刻出来的想法。当初还不懂得用PS,素材都是在游戏里面截屏然后一个个抠出来的,光是这个就用了我2-3天的时间。一开始DirectX 9的时候我只做了其中的三个关卡,一直到后面学了DirectX 11后我才把这个游戏翻新了一遍,完成了全部七个关卡,还加了一个比较简单的录像回放功能。实际上就是记录下当局游戏的随机数种子,还有玩家每一帧下的键盘操作,就可以近乎完美地模拟出当时游玩的情况(录像文件200K以内),但实际上整盘录像经常到第三关就莫名其妙崩了,到现在一直无解。。
(2018/10/14更新)添加视频,注意调小音量。因为用win+g录屏,所以看不到弹出来的文件窗口。

超级战机--最终BOSS战回放
https://www.zhihu.com/video/1034788386338549760
到现在这游戏只有我一个人能够一币通关。。基本上劝退了绝大多数人。这里我放一个当时我自己玩的视频链接吧:
【超级战机】(DX11自制)自己做的飞机大战含着泪也要打通(2019/1/11更新)
还有就是之前用Direct3D 9的魔方,不过现在我的电脑莫名其妙打不开所有DX9的所有游戏了,找了队友电脑录下视频。现在我已经把魔方用Direct3D 11实现了一遍。游戏本身支持键盘和鼠标操作,键盘支持30+种组合:

Direct3D 9魔方 键盘游玩演示
https://www.zhihu.com/video/1034937134263853056
当然,我还喜欢写一些比较特别的黑框框小程序,就是那种需要用到Windows控制台函数的。数据结构的课程设计我选了最难的电梯模拟(感觉实际上难也只是难在模拟),题目描述的话大概就是一个大楼里面有多部电梯,每层楼都可能会刷出等候电梯的用户,用户可以呼叫电梯,上下楼等等。若等候时间太久,用户就会等得不耐烦而离去(大概就是所谓的选择走楼梯)。用控制台函数关闭光标显示,然后疯狂使用跳转光标的函数来修改有变动的部分。最后这个电梯模拟系统有下面这些功能:
    设置电梯的数目(1-6部,是联动的)设置楼层的数目(有地下1层,最高允许40层)设置模拟总时间、模拟速度设置用户的容忍时间区间设置电梯上升、下降、开门、关门、开门等候用时设置电梯载荷设置每一层楼的总人数输出日志查看模拟的完整过程统计不耐烦而离开的用户人数
该项目是用纯C语言编写的,并且该项目用到的数据结构,主要也是自己手写的双向链表。因为考虑到居民会有中途离开的可能,单纯用栈已经不能满足使用。可以模拟大型商业中心、高层居民楼等等。



电梯模拟的日志输出

然后下面是一个模拟过程的小视频:

电梯实时模拟系统
https://www.zhihu.com/video/1030965031843868672
E1到E6对应6部电梯的编号,F10什么的对应楼层,↑↓对应当前楼层是否有居民按下按钮,等候/超时/剩余则描述的是当前楼层对应的人数,[02]表示这部电梯在该楼层,内部载有两个人,XX对应用户在电梯内按下了该层按钮,电梯会在这一层停下。
后面计网课设要写FTP服务器,我也用了控制台程序,然后我就把常用的输入/输出、控制台函数包装成一个Console单例类供自己使用,也知道可以直接获取整块屏幕缓冲区的内容进行修改再塞回去。
(2019/1/11更新)
顺便打个小广告。如果对DirectX 11感兴趣的话,可以关注一下我近期正在写的DirectX 11教程,特点是整个项目不使用DirectX SDK和Effects 11框架。最后抛出一些相关的链接:
Github--DirectX11 With Windows SDK教程
Github--魔方项目(分DX9和DX11两个版本)
Github--超级战机
魔方的实现教程如下:
DirectX11--实现一个3D魔方

想玩的话也可以点击下面链接下载,大小才1.25M:
超级战机

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-9-18 09:41 | 显示全部楼层
护眼程序
作为一个科研狗
一天大概有10小时是对着屏幕的,所以难免眼酸眼涩眼疲劳
其中很大一部分原因来自于眨眼不及时
为了提示自己及时眨眼
写了如下程序  【眨眼检测】

眨眼提示程序示例
https://www.zhihu.com/video/1059481042498494464
实现方式是检测 eye aspect ratio
首先人脸识别定位人脸位置,然后获取如下关键点


这六个关键点能描述眼睛张开的程度,具体量化就是eye aspect ratio (EAR)


EAR大说明眼睛睁开,EAR小说明眼睛闭上了。

这里对于每一帧提取EAR,当有超过m帧EAR小于阈值a的时候,就判定是一次眨眼

使用python的time模块计时,当眼睛睁开连续找过t时间长度的时候就在耳机里beep~~~或者在屏幕上显示blink!!!!!!

这个也可以统计眨眼次数和时间点,记录并分析眨眼到底是不是及时

所需硬件:
720p webcam一个


或者任何笔记本自带摄像头

妈妈再也不用担心我眼干眼涩~~~~
<hr/>这真是我见过最有趣的评论区,说往脸上喷水的那位,你是认真的吗 233333
是的没错这个对于眼小的人不友好,找人试过了,真的不友好,这是一个feature

不少人在评论区要代码,目前代码还在非常初级阶段没有注释,变量命名混乱,后期会考虑开源

视频流用opencv获取   人脸识别用Dlib实现
EAR分量检测人眼参考以下文章
Real-Time Eye Blink Detection using Facial Landmarks

我的github:
Pjer-zhang - Overview
说不定哪天就开源了

最后:科研路漫漫,狗命要紧,保护好眼睛颈椎和心理健康~~~

最后最后:欢迎关注专栏:
搞齐科研工具组提高科研效率

=========
其他创作的分类整理:
精选 射电 编程 科研工具 太阳物理

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-9-18 09:45 | 显示全部楼层
之前有段时间沉迷俄罗斯方块,然而公司的电脑上没有这个游戏,于是趁着休息的时候自己写了一个。然后沉迷游戏无法自拔(并没有)
玩了一段时间,我充分认识到自己是个手残到无可救药的人,于是又趁着休息时间自己写了一个玩俄罗斯方块的 AI。然后沉迷看 AI 玩游戏无法自拔(好像哪里不对)
放一段 AI 玩游戏的视频吧


https://www.zhihu.com/video/987799738485403648
代码在 GitHub 上,想围观或者自己玩的同学可以看看。(链接:LoveDaisy/tetris_gmae)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-9-18 09:50 | 显示全部楼层
有一阵儿对AR很感兴趣,测试了几个AR的插件,顺手做了个小项目
    通过身份证背面图案可以显示Unity娘跳舞的模型。通过北京公交卡正面可以呼出音乐及与音乐相关的UI界面。
      向前后推动公交卡,可以音量大小会随之变化。
    通过北京公交卡背面 可以关闭音乐。


https://www.zhihu.com/video/980938904437981184


下面是github地址:
Unity 娘AR展示你也可以直接下载APK来试一试
UnityChan.apk

看大家这么热情,在来一个吧:


显示一个bulingbuling 的身份证,可以假装自己身份不一般。
源码:
codeMonkeyWang/EasyAR-DemoAPK下载
IDcard.apk

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-9-18 09:55 | 显示全部楼层
今天刚看到的,太鼓达人中《Void Setup》这首歌的歌词,把它敲成源代码就可以实现一个非常神奇的效果!

太鼓达人《Void Setup》歌词奥秘
https://www.zhihu.com/video/1003660139433316352
来源站点:https://www.youtube.com/watch?v=RuA9ZwIW7Mg

视频里使用的语言是 Processing,感兴趣的童鞋可以去官网 Processing.org 下载来玩玩看~
这种语言(或者说,编译环境?)天生就很适合做一些视觉和听觉效果的演示,入门也挺简单哒!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-6-3 09:15 , Processed in 0.276910 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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