为什么Python和Pygame是入门程序员的最佳选择

上个月, 斯科特·内斯比特Scott Nesbitt)发表了有关Mozilla奖励50万美元以支持开源项目的文章 。 HTML / JavaScript游戏平台Phaser 获得了50,000美元的奖励 。 我已经为我的未成年女儿教过Phaser一年了,它是学习的最好,最简单HTML游戏开发平台之一。 但是, Pygame对于初学者可能是一个更好的选择。 这就是为什么。

1.一长段代码

Pygame基于Python,这是计算机入门入门课程中最流行的语言 。 Python非常适合用一长段代码编写想法。 孩子们从一个文件和一个代码块开始。 在使用函数或类之前,必须先使用类似于意粉的代码。 就像手指画一样,当他们将想法扔到页面上时。

大多数HTML游戏在某种程度上将结构,样式和编程逻辑分为HTML,CSS和JavaScript,并且需要CSS和HTML的知识。 从长远来看,分离效果更好,但对于初学者来说可能是一个障碍。 一旦孩子意识到他们可以使用HTML和CSS快速构建网页,他们可能会因为颜色,字体和图形的视觉刺激而分心。 即使是那些专注于JavaScript编码的人,也仍然需要学习JavaScript代码所在的基本文档结构。

2.全局变量更明显

Python和JavaScript都使用动态类型的变量,这意味着变量在赋值时变成字符串,整数或浮点数。 但是,使用JavaScript容易出错。 与类型变量类似,JavaScript和Python都具有全局和局部变量作用域。 在Python中,函数内部的全局变量由global关键字标识。

让我们看一下Alvin Ourrad和Richard Davey撰写的基本《 制作您的第一个Phaser游戏》教程 ,以了解使用Phaser向初学者教授编程的挑战。 在JavaScript中,全局变量(可以在程序中的任何位置访问的变量)很难跟踪,并且经常是难以解决的bug的来源。 Richard和Alvin是专家程序员,并且故意使用全局变量来保持简洁。



   
   
var game = new Phaser.Game ( 800 , 600 , Phaser.AUTO, '' , { preload: preload, create: create, update: update } ) ;

function preload ( ) {

    game.load.image ( 'sky' , 'assets/sky.png' ) ;

}

var player;
var platforms;

function create ( ) {
    game.physics.startSystem ( Phaser.Physics.ARCADE ) ;

在他们的Phaser编程书Interphase中 Richard Davey和Ilija Melentijevic解释说,全局变量通常在许多Phaser项目中使用,因为它们使快速完成工作变得容易。

“如果您曾经从事过任何大型游戏,那么这种方法可能已经使您有些畏缩了。那么,为什么我们要这么做呢? 原因仅仅是因为这是展示Phaser可以做什么的最简洁,最简单的方法。”

尽管可以构造一个Phaser应用程序以使用局部变量并将其很好地拆分为关注点分离,但这对于孩子们在初次学习编程时很难理解。

如果您打算教孩子使用JavaScript进行编码,或者他们已经知道如何使用Python等其他语言进行编码,那么最好的Phaser课程是Pablo Farias Navarro编写的《完整的手机游戏开发课程》 。 尽管标题侧重于手机游戏,但实际课程侧重于JavaScript和Phaser。 JavaScript和Phaser应用程序已通过PhoneGap移至手机。

3. Pygame需要更少的组装

感谢Python Wheels ,Pygame现在非常易于安装 。 您也可以使用yum软件包管理器将其安装在Fedora / Red Hat上:


sudo yum install python3-pygame 

有关更多信息,请参见官方Pygame安装文档

尽管Phaser本身甚至更易于安装,但它确实需要更多的知识才能使用。 如前所述,学生将需要使用一些CSS将他们JavaScript代码组装在HTML文档中。 除HTML,CSS和JavaScript这三种语言外,Phaser还需要使用Firefox或Chrome开发工具和编辑器。 最常见JavaScript编辑器是Sublime,Atom,VS Code(可能按此顺序)。

如果您出于同源政策而直接在浏览器中打开HTML文件,则Phaser应用程序将无法运行。 您必须运行Web服务器并通过连接到Web服务器来访问文件。 幸运的是,您无需在本地计算机上运行Apache。 您可以为大多数项目运行诸如httpster之类的轻量级产品。

Phaser和JavaScript的优势

面对JavaScript和Phaser的所有挑战,我为什么要教它们? 老实说,我推迟了很长时间。 我担心学生学习可变吊装和范围。 我根据Pygame和Python开发了自己的课程,然后根据Phaser开发了课程。 最终,我决定使用Pablo的预制课程作为起点。

我迁移到JavaScript的确有两个原因。 首先,JavaScript已成为一种用于严肃应用程序的严肃语言。 除Web应用程序外,它还用于移动和服务器应用程序。 JavaScript无处不在,并且广泛用于孩子们每天看到的应用程序中。 如果他们的朋友使用JavaScript编写代码,他们可能也会希望这样做。 当我看到JavaScript背后的动力时,我研究了可以编译到JavaScript中的替代方法,主要是Dart和TypeScript。 我不介意执行额外的转换步骤,但是我仍然关注JavaScript。

最后,我选择使用Phaser和JavaScript,因为我意识到可以通过JavaScript和一些工作来解决问题。 高质量的调试工具和一些非常聪明的人的工作使JavaScript成为一种可访问且对教孩子们编码有用的语言。

最后一句话:Python与JavaScript

当人们问我要用什么语言开始教孩子时,我立即建议使用Python和Pygame。 有很多很棒的课程选择,其中许多都是免费的。 我儿子一起使用了Al Sweigart的“使用Python和Pygame制作游戏” 。 我还使用了Allen B. Downey撰写的《 Python思维:如何像计算机科学家一样思考》 。 您可以使用Tom Rothamel的RAPT Pygame在Android手机上获取Pygame

尽管有我的建议,但我始终怀疑孩子很快就会转向JavaScript。 没关系-JavaScript是一种成熟的语言,具有出色的工具。 他们将使用JavaScript玩乐并学到很多东西。 但是,在多年帮助我女儿的哥哥使用Python创建出色的游戏之后,我将始终对Python和Pygame充满感情。

翻译自: https://opensource.com/article/17/11/pygame

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值