14行代码实现贪吃蛇! 再次刷新记录! 【Cgame】

作者: 你已经是大佬啦快和萌新们聊天吧分类: 野生技能协会 发布时间: 2020-10-17 19:54:33 浏览:457482 次

14行代码实现贪吃蛇! 再次刷新记录! 【Cgame】

你已经是大佬啦快和萌新们聊天吧:
没想到这么快破w播放了...[Cat_congrats] 视频做的有点匆忙, 前前后后还是花了一星期的时间制作(平时还要上课), 结果还是没赶上在国庆内做完...[Cat_coffeebath] 评论区很多观众都在说可读性...应该不会有人把这个应用到实际中吧?如果说可读性是为了理解内容, 那么我做视频的意义就在于讲解这段代码(一半的时间都在讲解), 理解这14行的代码肯定能让你受益匪浅...[Cat_study] 其实代码还是有一定规范的吧...vs2019格式化后没有任何改变, vscode格式化后也就多3行, 2行开括号, 1行for后面空语句换行, if(kbhit())后面的语句移下来不然格式化后变的很奇怪(写后面方便理解, 其实可以把if()后面的语句塞到括号里面). 代码已经受到很多限制了, 不受限制的话一行都可以(预处理可忽略, 编译器会自动添加), 谁都可以做到...但, 会有人认同这种一行代码吗? 或许行数并不能证明什么, 但足够小到震撼到让你点进这个视频, 还不能够证明吗?(标题封面应该没有夸张成分吧), 行数和核心代码基本成正比, 如果还是觉得行数没用的话, 比较字符量总行吧, 那更是降维打击...说要看程序生成后的大小就算了吧, 那基本跟编译器挂钩了 其他的例如可维护性, 健壮性...emm这没什么好说的吧, 你会去维护一个HelloWorld吗? 对我而言贪吃蛇简单到不需要考虑这些因素了. 不过可移植性还是值得一提的, 这些函数的实现不依赖具体平台, 像获取一个字符getch() 是否有输入kbhit()虽然其他平台可能没有现成的, 但很明显都能够实现(不理解标准库为什么没这样的函数)...后面用到winAPI就仅限windows平台了 写的比较乱, 没怎么组织语言, 就这样凑合着吧...

【回复】主流的编译器&IDE几乎都能编译, 视频中出现的警告信息都是强转方面的, 不会造成隐患; 如果出现编译不通过的情况, 看看是不是以下情况: *出现了4996号错误(_sleep()不可用) 1. 加上下面的代码, 屏蔽4996号错误(本来这就是个警告...) #pragma warning(disable:4996) 2. stdlib.h换成windows.h, _sleep()换成Sleep() *出现了强制转换的错误 不会还有人把.cpp当.c用吧...要注意文件后缀是.c *编译器&IDE非常古老 后面用winAPI时会出现问题, 有用到部分c99的特性, 编译选项添加-std=c99就好了, 不过还是建议换IDE *其他情况 如果编译还是不通过可以加交流群反馈, github的README和之前的动态有提到q群
【回复】不知道 UP 注意到在字符打印的 demo 里有很强的闪屏现象没有,虽然关了光标,但应该还是会闪烁。我当时也用 C 写过贪吃蛇,遇到过这种现象,原因是控制台的输出是行缓冲,而不是一个画面一个画面的切换,那种闪烁其实就是高速行输出的效果,最后自己在网上用双缓冲解决了这个问题,但是我看 UP 调了 win32API 后就没有明显闪烁了感觉奇怪。
买不起巧影会员的UP主:
是只要我不打回车就是我的游戏一行代码吗[doge]

【回复】好家伙,老师大骂ugly的代码就是你写的吧[doge]
【回复】可以的,不过在c里但预处理得单独占行[doge]
【回复】只要代码以分号为隔的语言都能做到。(c,java等都行,python不行)
阿基林钠克斯:
巧了,用一个数组的思路和up一样,只不过我的写了200多行[酸了]

【回复】艹,写了400行还有erro,java 我这辈子的毒。
【回复】回复 @宇宙第一超级大帅哥 :我觉得你不对劲[doge]
prototype_child:
老板说每天代码量要至少500行,我看了下默默的把三元表达式全部改成了if else

【回复】回复 @风云月宿 :遇到这种老板,维护个毛,看准机会跑了才是正途。
【回复】每个语句都给做个方法[呲牙]
【回复】回复 @女孩为何超短裙 :所有可以import的东西全都重新抄一遍(
HelloW_D:
可读性方面,由于up精简的比较多,很多语句都压缩了。这就像是做应用题把列方程改成了列表达式。这里需要各位细心品味。排版方面,up用vsc,应该不会出问题(可以看出他是开自动格式化的)。 说可读性的,细细品一下他的精简方式吧。 有说过这样一句话:Google的工程师,每天工作8-9小时只写百行代码。代码不是越多越好的。少简精,代码灵魂所在。

【回复】细细品完了,倒是没见过任何一个开源源码这么写的,一个条件判断式里面有多少个表达式,这就难道不和三目嵌套一样让人抓狂么。。恕我左品右品,都品不出这个精简方式,开箱即用那么可以压缩成一行,想让人读懂,这又实在是让人难以恭维,精简是用算法和巧妙地逻辑控制来减少,不是拿着代码规范做文章,google工程师一天80行写这种代码,你看他们他们review不被打死,这里插一句我看到有人说变量这么写也没问题。。说简写的,什么简写,password简写pwd这叫简写,format写作fmt叫简写,合着password简写p,position简写叫啥?_p?试问我光是理解变量意义就要花多久?为了压缩80字符/行这么做真的好么? 最后我想说的是,我觉得UP写的很好,思路很好。但是这个14行,我是被14行吸引进来了,看完后,我很失望,这也叫14行?懂了。下次我也这么写最后啊。建议用go来试试?这代码直接报错[微笑],仅指代码规范啊
【回复】简答来说你要让我信服这个额4行,除非你说这是按照某比赛的官方要求,然后再要求下死磕写出来的,否则这种代码风格恕我死不能忍
【回复】回复 @麦藁のルフィ :我在打比赛的时候经常用单字母变量影响理解,队友都想打死我[笑哭]这个比我还过分了
HE虚空:
用行确实不能考量代码量 这位大佬肯定也知道 所以为什么还要这么写呢[doge][doge][doge]

【回复】因为可以吸引啥都不懂的人来吹捧他
【回复】然而用户会看文件大小[doge][doge]
【回复】回复 @亚特兰蒂斯铁匠 :不不不,啥都不懂的人只会说多此一举画蛇添足,懂得人才会高呼内行。讲真我用他的思路写出来估计也至少要个五十行。这家伙脑子确实好用。
狂欢の圣诞:
这个刻意压代码行数先不评论,这个视频的动画给人的感觉太好了,很舒服

【回复】用代码写出来的,有个python的库可以做到,好像是mainn,记不清了
【回复】回复 @参考答案开心否 :manim
沙坑里看到:
让我想到了外行用行数用来计算KPI,行数这东西对编程来说意义不大

【回复】不用较真吧,这也不是应用编程呀[笑哭]属于课题挑战或者纪录挑战了,可以放飞自我完全不用考虑可读性和可维护性(我也想这么玩,但我没这个脑子[酸了])
【回复】行数意义不大,主要看算法,但是小白哪里知道~所以是吸引人用的
【回复】要理解,老板可不懂这个
还是永远的贝贝:
这个变量命名,,,别人看了都想打你[囧]

【回复】回复 @理想来临 :认真的?单人精缩还可以试试,组队比赛比赛要是这么精缩队友杀人的心都有了
【回复】回复 @起舞鸽意曲 :但是问题是做一个项目的时候你不可能一个人包完吧,那肯定要有人来接啊,那个时候又没有默契,就会看之前的看不惯,后面的读你的代码又费劲,最后遭殃的还是你[doge][doge]
【回复】打比赛的时候,基本上都是这种。
麦藁のルフィ:
问题很明显..为可以压缩行数而压缩行数,代码规范是为了可读性的,但是这单行80字或者if for后跟语句的限制,加上实际效果,早就和代码规范的意义背道而驰...只能说是为了节目效果..找个ide,代码格式优化,少说行数翻倍,行数少不是你这么投机取巧的少的...思路虽好,但过于钻牛角尖,特别这个iffor后面跟语句的设定...你干脆加个分号后面可以跟语句的设定算了,还能再减少几行,然后再加两条{后跟语句}可以不换行...这样个位数行数就能写完...就跟js的那种压缩文件

【回复】UP可能只是想试试极限压码量,毕竟现在这个时候这种奇奇怪怪的记录总会有人想去刷[doge][doge]
【回复】你可以理解为模糊c吧。正经人看到这类代码谁会去读啊。
孺子刘yaokai-liu:
我只需要一行:from tanchise import main; main()[OK]

【回复】库是不可能不用库的,这辈子都不可能不用库的,自己又不会写,又要吸引眼球,就只能用一行代码才能勉强维持得了逼格这样子,虽然tanchise这个命名方式令人吐槽,但是我就不去优化,我只要吸引眼球[doge]
【回复】回复 @折柳曲 :嘿嘿嘿(∩❛ڡ❛∩)
临溪听枫:
算法不错。但是用极其糟糕的编玛习惯,违反各种编码规范,这就是所谓14行?

名字让人取了:
代码好坏用行衡量是没多大意义的。 一般来说 按数据结构的 时间复杂度(效率),空间复杂度(大小)衡量。 其次还有 可移植性考虑(通常会牺牲效率), 可理解性,可阅读性等。。。不过up应该知道,只是作为一种玩乐。

【回复】不过up说不使用非标准库,但还是使用了conio.h这种非标准库
【回复】因为有时候代码习惯不好, 会连自己写的代码都看不懂,更别说别人了。我最讨厌去看别人的代码
动机不cun:
我当初也是这个思路,然而跑都跑不起来[捂眼]

QQEat:
一行if几百个字符,这种代码拿到公司连一个小时都活不了

【回复】他这个写着玩就不用讲究那么多
【回复】回复 @NIAENGD :VScode格式化后才多了3行[无语]
【回复】博眼球罢了,command+option+L直接50行起步
Thumb0宇:
我还有个js 80行支持自动跑贪吃蛇的[OK]

【回复】回复 @rocketaker :我还见过只有一行的jquery[辣眼睛]大小101k
【回复】Kind editor源码200多k只有7行,参数全是ABCDE[辣眼睛]
【回复】我js贪吃蛇也鸭到了14行[笑哭] 指script标签里的

学习 程序员 游戏开发 编程 教程 野生技术协会 贪吃蛇 Cgame manim

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

更多相关阅读