Preface
前言
随着“互联网+”时代的来临,社会各行业对于计算机技术的依赖达到前所未有的程度,而计算机技术的应用关键在于程序的设计和编写,可以说编程能力不仅是未来社会的需要,也是未来个人所应具备的基本素质。然而学习程序设计并不容易,需要付出艰苦的努力,也要耗费大量的时间和精力,因此选择合适的学习工具尤为重要。虽然很多大型的编程工具都可以免费使用,但对于初学者来说这些工具显得过于复杂,由此带来学习的困惑和压力。理想的编程学习工具既要操作方便,又要功能齐全,还要简单有趣。Greenfoot正是这样一款“小而美”的编程工具。
Greenfoot是由英国肯特大学的学者开发的一款可视化编程软件,起初被用于Java程序的教学,而且通过可视化的图形编程环境以及对游戏编程的良好支持,得到了众多国家的广泛使用,国外许多高校的计算机教师都使用这款软件作为Java语言的教学工具。由于Greenfoot在教育界所取得的成功,一些大企业也将其作为自己的官方工具,例如Oracle公司将Greenfoot纳入自身培训体系中,并在官网提供学习支持。同时Oracle还和国内众多高校与职业院校合作,推出教师培训计划,鼓励教师在教学中将Greenfoot作为工具,共同推动Greenfoot在Java程序教学中的应用。
随着近年来游戏产业的急剧升温,游戏人才的缺口急剧增大,同时也吸引了更多的人学习游戏设计和编程。但是游戏程序设计的门槛相对来说比较高,没有太多合适的学习工具帮助新手入门。游戏设计的书籍大多都是使用专业级的开发工具(如Unity3D、Cocos2d等),针对初学者的编程工具凤毛麟角。而Greenfoot恰好可以填补这个空缺。Greenfoot为游戏编程提供了丰富而实用的API(Application Programming Interface,应用程序接口),使得编写小游戏异常方便,虽然它不能直接开发出商业级的游戏应用,但能充分满足游戏设计爱好者及初学者的学习需求。
可以说,Greenfoot既是学习Java语言的实用工具,又是学习游戏编程的便捷工具。本书写作的初衷正是希望推广和普及Greenfoot编程技术,一方面提升Java语言学习者的编程兴趣和编程水平,另一方面为游戏设计爱好者介绍一些基本的编程方法并提供实践的指导。
全书分为五篇14章,内容安排如下。
第一篇(第1章和第2章)介绍Greenfoot编程基础,包含Greenfoot简介和Greenfoot游戏设计原理。
第二篇(第3~5章)介绍益智类游戏设计,包含记忆翻牌游戏、拼图游戏和扫雷游戏开发。
第三篇(第6~8章)介绍休闲类游戏设计,包含弹钢琴游戏、贪食蛇游戏和打砖块游戏开发。
第四篇(第9~11章)介绍飞行类游戏设计,包含太空生存游戏、星球大战游戏和飞扬的小鸟游戏开发。
第五篇(第12~14章)介绍棋牌类游戏设计,包含黑白棋游戏、接龙纸牌游戏和中国象棋游戏开发。
本书的特点主要体现在以下几方面。
按照学习者的认知规律来组织内容。本书选用的案例大都是经典小游戏,大多数人都比较熟悉,这无形中会增加学习者的亲切感,减轻学习压力。同时,各个游戏案例采用循序渐进的方式来组织,前几章都是比较短小的游戏,功能相对较少,知识点也比较简单。随着学习递进游戏规模会逐渐加大,游戏功能也更加复杂,涉及的知识点也会增多。但是基于前面章节的学习,读者也能够较好地适应相对复杂的内容。
将游戏设计的方法论运用到学习材料的组织上。在现实的游戏设计中经常采用“基于原型,逐步迭代”的方式进行开发,即将整个游戏的全部功能分解为很多小部分,然后一部分一部分地实现。本书内容的组织也采用类似的理念,即将每个游戏案例分解为多个小任务,每一个任务都对应着游戏的某部分功能,并且在前一任务完成的基础上添加代码来完成下一个任务,从而展示游戏从无到有逐步扩展的全过程。
内容力求实用,强调实践操作。本书详细地描述了每个游戏案例的设计及实现细节,尽量避免论述复杂的理论,着重强调游戏设计的整体过程和游戏编程的具体操作方法,能够从实践层面提高读者的程序设计水平及游戏编程能力。此外,每个案例最后都设置了游戏扩展练习,在其中提供了一些对本案例进行扩展和改进的思路,鼓励读者在理解游戏编写的基本原理之后再加以实践练习,以便达到学以致用的效果。
通过文本与微视频的结合来形成综合性的学习材料。由于本书各章节相对独立,而且各章的案例被分解为多个任务分别进行介绍,因此特别适合与微视频讲解的形式相结合。书中为每个游戏案例的每个任务都配套了微视频,详细讲解相关代码的编写原理和方法,以便弥补单一文本在叙述方面的不足,从而将文本和视频音频结合起来形成综合性、立体性的学习材料。同时,为每个微视频生成二维码附注在章节对应位置上,让读者能够在移动环境下通过扫码进行学习,从而形成全新的O2O学习体验。
在使用本书的过程中,建议读者按照章节的顺序循序渐进地学习,这样更利于理解和积累知识。但由于各章的内容相对独立,读者也完全可以根据自身兴趣来安排学习的次序。强烈建议读者在学习过程中加以实践,对于每个游戏案例的各个小任务,可以先试着自己动手去实现,若遇到问题再参考书中的解决办法。而对于每章最后的游戏扩展练习,也希望读者能够认真地加以思考和解决。“纸上得来终觉浅,绝知此事要躬行”,只有亲自动手编写代码,才能真正地提高程序设计水平及游戏编程能力。关于本书源代码,读者可以扫描二维码下载。
本书适合所有对游戏设计或程序设计感兴趣的读者,包括高校和职业院校的学生及教师、游戏开发人员、游戏编程爱好者、Java语言学习者、程序设计爱好者等。本书不仅可供读者自主学习和阅读,还可以作为高校及培训机构的游戏设计教材或是Java程序设计的实践教材。
感谢家人在本书的写作过程中给予的支持和关心,还要特别感谢杨仕青和高惠君为本书提供了丰富的素材,同时感谢潘肖男翻译了Greenfoot API文档。
由于作者水平有限,书中难免存在一些疏漏,敬请广大读者批评指正。对于本书有任何疑问,可以发邮件至hawking329@sina.com进行咨询,也可以加入Greenfoot QQ群(29411309)进行探讨。
作者 于白马湖畔