谈谈“编程游戏”

编程游戏(不是游戏编程,也不是编游戏……),也叫代码游戏,表明着市面上一类特别的游戏。它在游戏中加入了编程的特性(或许反过来讲也对)。本文意在梳理市面上的一些编程游戏,并对其玩法进行介绍和评价。python

转载请注明:
做者:andong777
原帖地址:Code Cabinios

选择标准

  • 项目必须是在时间上是较新的,或者有必定的知名度。不包括年代久远且不活跃的、知名度太低的。
  • 是电子游戏而不是实体游戏(如桌游)。
  • 能在线游戏,或者能够得到可运行的程序。

通过这样一个简单的筛选,我获得了一个长长的项目列表。这里面有知名度较高的CodeCombat和腾讯的Code Tank,也有比较新的创业公司的游戏如Glitchspace和Hakitzu。
如下是本文中涉及到的游戏列表:程序员

首先我按照游戏的不一样特征进行了分类。编程

玩法

游戏的玩法大体是经过编程控制游戏中的人物或道具,本文选择的大部分的游戏都属于此类。不过也有一类具备特殊的玩法,一般也被认为是编程游戏,本文称之为谜题游戏。
前者中,游戏的主角一般是魔法师、机器人、坦克等。后者的表明有Python Challenge、Code Hunt和Manufactoria。segmentfault

编程语言

游戏中的编程语言通常是已有的语言,或者是游戏自创的某种语言,或者没有直接使用编程语言。app

  • CodeCombat支持语言最多。从最初只支持JavaScript到如今的JavaScript、Python、CoffeeScript、Clojure、Lua、IO。
  • Code Tank和Hakitzu使用JavaScript。
  • CodeSpells、Code Hunt和Robocode使用Java。此外,Code Hunt还支持微软自家的C#。
  • Algoid使用本身的类Logo语言。
  • 其余的游戏中没有直接使用编程语言。

游戏目标

游戏的目标一般有:编程语言

  • 经过游戏使玩家学习某种语言。如Hakitzu和Code Hunt。
  • 帮助孩子或初学者了解编程。如CodeCombat、Algoid和CodeSpells。
  • 为熟悉编程的人提供编程对战的平台。如Code Tank和Robocode。
  • 不知道要干什么(益智)。如Manufactoria。

有了以上的了解,下面对几个典型的游戏进行简单介绍。学习

CodeCombat

CodeCombat是一个经过玩游戏来学习编程的网站,也是GitHub上最大的开源CoffeeScript项目,有上千程序员和玩家为其编写程序、测试游戏。到目前为止,已经翻译成17种国外语言。官方称,他们网站的任务就是教会人们如何编程,游戏覆盖编程菜鸟到大神各个阶段,总共超过9千关。人们不须要任何编程知识便可了解程序的运行逻辑,并编出实用的代码。(如下两张图片来自驱动之家)测试

请输入图片描述

在游戏中,经过代码实现角色的移动、对话、攻击、拾取和使用道具。在一开始的关卡中,玩家只要输入顺序执行的指令便可完成任务。随着游戏的进行,玩家要完成的任务也更加复杂,玩家须要学习使用判断、循环等语句,在这个过程当中玩家不知不觉中就了解了编程。网站

请输入图片描述

想要深刻了解能够看这篇评测
和王国守卫战相似的画风再加上游戏有趣的剧情设定和众包获得的丰富关卡,说他是当下编程游戏的佼佼者应该没有什么异议吧。

Code Tank

Code Tank是由腾讯AlloyTeam开发的一款编程游戏。听说灵感来自上面提到的Robocode。引用一段自家的介绍:

CodeTank是一个很是有趣的竞赛性编程游戏平台,经过几行简单的Javascript代码和CodeTank API,每一个人均可以方便的构建属于本身富有智能和个性的坦克(Tank)机器人,并经过互联网进行在线互动和竞赛!CodeTank是 Code Game(代码游戏,也叫编程游戏)的一种,可让你在娱乐的同时学习和提升Javascript编程水平以及进行人工智能的研究。它使用HTML五、CSS3等Web新技术构建的在线平台,自然的基于互联网,Tank机器人的代码不须要人工上传下载,能够直接在线运行与其余选手进行战斗。

请输入图片描述

这个游戏和上一个不一样,并非给初学者学习用的。我没有太多JavaScript编程经验,进入到游戏中不知道该干什么。进入游戏后首先要建立本身的坦克,以后就是编写本身的代码,实现AI控制坦克运动。最终目的是战胜其余玩家的坦克,和那些机器人比赛差很少。

请输入图片描述

CodeSpells

这是我本人比较喜欢的一款编程游戏,尽管它自己并不火,并且须要下载Java客户端。下面这段话是它惟一的一段中文介绍:

这款游戏是由计算机学家 William Griswold 带领的大四学生团队开发的,游戏的主要受众为高中生。研发团队但愿由此来开发学生们的创新力和想象力,让他们主动地去学习知识。该做是一款第一人称游戏。玩家将扮演一名和矮人们生活在荒岛上的魔法师。由于矮人们失去了使用魔法的能力,因此做为魔法师的玩家将帮助矮人们完成魔法。这些咒语是以 Java 语言的形式呈如今玩家面前。玩家须要经过编写这些语句来完成魔法。在帮助矮人们的同时,玩家还能经过一些解密游戏来得到相应的成就,固然,一样是经过 Java 语言的编写。

请输入图片描述

经过这段视频能够看到,该游戏所表现的内容较好地体现了面向对象的编程思想,玩家经过代码能够支配游戏中的物品,进而改造游戏中的世界。

请输入图片描述

其余

剩下的那几个我就简单来个一句话介绍吧。

  • Algoid:使用给定的语言和API控制小乌龟运动来画画。能够画很复杂的画哦。不过画了几个没什么动力就不玩了……
  • Code Hunt:学习C#和Java不错,确实是从头一点点学习。但感受只是披着游戏的外衣的编程题目。Python Challenge和Manufactoria这俩也同样。
  • Python Challenge:每一关卡一个解谜题目。其实和Python没什么关系,什么语言均可以;感受和编程关系也不大……
  • Manufactoria:自动机编程。Matrix67在他博客上推荐的。
  • Glitchspace和Hakitzu:没有相应的设备,因此没玩。
  • Robocode:和Code Tank同样。要下载Java代码到本地,或许还要Eclipse……

小结

本人认为真正好的教育类编程游戏应体现编程思想,而不该局限于某种编程语言或技巧。我所设想的编程游戏应当体现一个开放式的世界,玩家能够对其中的对象编程,玩家能够编程创造或改造物品。这里的编程不必定要经过代码,若是能经过可视化的方式,玩家或许能更容易理解。或许之后有空我会尝试一下。

相关文章
相关标签/搜索