学编程,有人苦苦坚持却半途而废,有人玩着游戏却学有所成?

我以前手底下有个小伙子,他也是这样的,但他还是一路走过来了,技术而且还不错,最让人大开眼界的点就是,他跟别人学编程的方式不太一样,他边玩游戏边学编程。据他所说,这种学习方式的好处就在于有趣+实战+挑战性,他这些年也一直保持着这种玩游戏学编程的方式,既能温故知新,又能锻炼写代码的实操能力,且兴趣满满。

现在的他已经是公司的技术部门负责人了**,**于是我前几天特意跟他请教了一下这种学习方式,然后整理成文章,共10个边玩游戏边编程的网站分享给大家,当你有了基础之后,你也可以结合这种方法去提升自己。


**一、**CodinGame | 游戏化编程教学平台


CodinGame虽然和游戏有关但是并不是游戏开发,只是简单的游戏模式,每一个练习背后的逻辑,都与一个实际的游戏相连,让你能够获得实时视觉反馈,你完成练习之后也能获得实际的奖励。该平台的目标用户是具备一定编程基础的人,当然同时也为资深程序员提供了相应级别的进阶练习。

CodinGame游戏之CODE VS ZOMBIES

对于每一个练习,你都可以从超过20种编程语言中选择自己喜欢的语言,例如Python、Ruby、Java、Scala等。公司的目标用户是已经知道一些编程基础的人,但也为资深程序员提供了相匹配的挑战。

尤其是,程序员之间近期开始流行多人游戏模式。在多人游戏模式下,你可以学习人工智能的基础知识,与其他人进行对决,看看到底是谁的代码效率更高。

CodinGame游戏之CODERS STRIKE BACK

CoinGame支持23种不同的编程语言,其中的每一个游戏练习都可以选择自己熟悉的语言。在CodinGame平台,每一个练习都是基于浏览器的,会提供一个网络集成开发环境,让你不刷新网页就可以实时编译代码,并实时看到游戏的变化。目前,CodinGame已经吸引到了23万用户注册。

传送门:www.codingame.com


二、CodeCombat | 由易到难的游戏,由浅入深的学习


CodeCombat 是一个免费的代码学习游戏网站 (一个公益开源的项目),目前已经支持 Python、Javascript、CoffeeScript、Clojure、Lua、Io 等编程语言的学习,并且网站界面也已被翻译了包括简繁体中文在内的几十种语言。

游戏的每一关设计的都很巧妙,初期是一些基础知识的学习,让你对函数结构有个初步的认识,后面的关卡越来越难,判断、循环语句也会逐渐加入,需要自己更多的创造性,通过语法、接口编写出复杂的函数才能过关,玩家在不知不觉也就具备了编程的思维。根据 XIao 的试玩后表示:“连英文苦手代码小白的我也能愉快地玩耍一晚上”,因此,估计大家即便无基础也都可以轻松上手的。

当然,由于 CodeCombat 是开源的,如果你本身已是开发高手,那么除了挑战一些高难度的多人游戏关卡之外,也可以完全参与到项目本身的开发中去,譬如代码编写、关卡设计、Bug测试、文字翻译等等,给 CodeCombat 这个公益项目做贡献。

传送门:https://koudashijie.com/china-bridge?redirect=/


三、Check iO | Python学习者推荐


CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,尤其是Python学习者尤为推荐。

有网友说:“语法看了一大堆,教程也学了一大堆,就想着做项目,但是发现根本动不了手,反复总结自己发现虽然看懂了语法,记住了方法,但是自己脑子里还是没有编程思维,也对敲代码不熟悉…但在Check io 上学了一段时间之后受益匪浅,不仅自己动手解决了问题,而且还能学习到别人的编程思维,尤其是同样的问题,自己写了很长的代码,而大神却只用了几行就解决了。”

传送门:https://checkio.org/


四、Codewars | 编程打怪升级平台


CodeWars 是一个通过编程挑战平台,提供了:C、C++、C#、Java、JavaScript、PHP、Clojure、CoffeeScript、Elixir、Haskell、Python、Ruby、TypeScript等编程语言的挑战。

相比于其他平台,Codewars 给出的问题更加贴合实际工作与生活,很多题都会给出题目背景,更有代入感。一些 kyu(Codewars中用来标记题目难度的指标) 较小的题目,还是有一些挑战的,很多题目可能要写一两天提交十多次才能过,不过写三四百行然后 AC 的感觉真的很棒。很多题目来自游戏,经常打游戏碰到这些题目会会心一笑。

传送门 :https://www.codewars.com/


五、SCREEPS|面向程序员的MMO沙盒游戏


Screeps 是一款面向编程爱好者的 MMO(大型多人在线)RTS(即时战略)游戏,其中的核心机制是对你的单位AI 进行编程。该游戏拥有一个成熟的策略游戏的所有属性,在其中你通过编写 Java 代码来控制你的殖民地,与其他玩家一起在一个持久的世界中全天运行。

你的殖民地可以收获资源,建立单位,征服领土,与其他殖民地进行贸易。当你征服了更多的领土,你在游戏世界中的影响力就会增加,你的能力也会随之扩大。但是要注意,多个玩家瞄准同一个区域可能会导致冲突!

Screeps看起来还是很有意思的,但是依然美中不足。Screeps虽然是开源的,可以随便下载,但是游戏的服务端却是收费的,所以只能玩免费的部分,仅限于初始教程及训练场(沙盒模式),并且游戏内容无法保存,如果你想游玩游戏内容的话,那你只能去购买本体。

所以要不要入坑,你可以试玩一下免费部分之后再决定。

传送门:https://screeps.com/


六、Vim-Adventures


Vim作为一款神级编辑器,却有非常陡峭的学习曲线。网上大部分的教程很多仍然以背指令为基础,很容易让人望而却步。理解Vim的指令并不难,难点在于掌握Vim需要大量的重复练习。初学Vim的人很难有大量使用Vim操作的环境,或没有安全的可以进行编辑的文本,或无法忍受初学Vim时相对下降的编辑效率,从而很快就放弃了Vim。

Vim-Adventures是一款基于Vim操作的网页版游戏,通过一些游戏行为能潜移默化地熟练Vim的基本操作,最终形成肌肉记忆。同时Vim-Adventure给予了玩家一个安全的、可大量重复练习的环境,从而在短时间内获得使用Vim的快感,最终能够体会到Vim的强大。

Vim-Adventures的难度梯度还是比较平缓的,前几关都能够很简单的完成。但是随着游戏的进行,挑战难度会逐渐增大。


七、Playcodemonkey | 在线少儿编程


CodeMonkey是一个在线的交到孩子任何编程的游戏类产品,针对的是9岁以上的儿童教育。

在游戏中,有一只想要吃到香蕉的小猴子,孩子通过编写代码,帮助虚拟中的猴子小伙伴获得它心爱的香蕉。刚开始,游戏会为孩子提供简单的编程语言,例如“step 15”,引导孩子操作猴子前进或者后退15步吃到香蕉。而之后关卡难度会越来越大,例如一次性获得多个香蕉,转弯操作,与乌龟小朋友一起合作跨过湍流的小溪,打败老鼠争夺香蕉。不同难度的关卡,对应编程学习中不同的难点,例如逻辑循环等等。

如果你有瓜娃子且想让他学学编程的话,可以试试这个。

传送门:https://app.playcodemonkey.cn/


八、Elevator saga


Elevator Saga是一个益智游戏,用Java来控制建筑里的电梯。很多人一直的上上下下,你需要尽可能快的让他们到达他们的目的地。这个游戏测试你的算法书写能力,同时也测试JS的函数,数组和事件处理。

传送门:http://play.elevatorsaga.com/


最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

定义:上下文无关文法是一种描述形式语言的数学模型,由四元组 G=(V,Σ,R,S) 构成。其中,V 是非终结符集合,Σ 是终结符集合,R 是产生式规则集合,S 是起始符号。 示例:在文档中,有 G(E) 和 G(S) 等上下文无关文法,用于描述表达式的结构。例如,G(E) 的定义如下: E→T∣E+T∣E−T T→F∣T∗F∣T/F F→(E)∣i 这里,E、T、F 是非终结符,而 +、−、∗、/、(、) 和 i 是终结符。该文法用于描述算术表达式的构造方式。 推导是根据文法规则从起始符号逐步生成句子的过程,分为两种类型: 最左推导:始终扩展当前最左边的未展开非终结符。 最右推导:始终扩展当前最右边的未展开非终结符。 例如,在 G(N) 的上下文无关文法中,数字串的最左推导过程可以表示为: N⇒ND⇒NDD⇒⋯⇒DDD⇒0DDD⇒01DD⇒012D⇒0127 语法树是通过图形方式展示字符串如何根据文法规则进行推导的结构。它清晰地反映了推导过程中的层次关系。例如,对于表达式 i+i∗i,其语法树可以直观地展示操作符和操作数之间的层次结构。 如果一个句子存在多个不同的语法树,即可以通过多种推导过程生成,那么这个文法就被认为是二义性的。例如,句子 iiiei 有两个可能的语法树,这表明该文法存在二义性。 在自动机理论中,确定化是指将非确定有限自动机(NFA)转换为确定有限自动机(DFA),以确保每个状态在读取输入符号时只有一个确定的转移路径。最小化则是指去除 DFA 中的冗余状态,以获得更简洁的模型。文档中提供了 DFA 确定化和最小化的详细步骤示例。 正则表达式是一种用于匹配字符串模式的工具。文档中给出了许多正则表达式的例子,例如 (0∣1)∗01,用于匹配所有以“01”结尾的由 0 和 1 组成的字符串。正则表达式在文本处理和模式匹配中具有广泛应用。 综上所述,编译原理不仅涉
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值