Python 实战开发俄罗斯方块游戏-程序员宅基地

技术标签: 最新  游戏开发  Python  

“人生苦短,我用 Python”,这是网络上的一句戏言,却真实反映了 Python 语言的江湖地位。2017年 IEEE Spectrum 杂志发布的编程语言排行榜中,Python 排行榜首。Python 也被视为 AI 时代的头牌语言,是数据科学和机器学习领域使用最多的语言。Python 语言学习曲线平滑,上手容易。然而,新手必须通过项目实战才能显著提高 Python 开发能力。本达人课意在通过俄罗斯方块游戏开发实战,来提高初学者的 Python 编程能力。

本课程共包含两大部分。

第一部分(第1篇)主要讲解如何搭建开发环境。课程采用的集成开发环境是Pycharm Community 2017.3。这一部分先讲如何在 Pycharm 内创建项目,接着讲如何安装 Pygame 工具包。

第二部分(第2-23篇)开启俄罗斯方块游戏开发实战。每一篇对应一个实验步骤,每一个实验步骤实现一个核心功能,从文章标题可窥一二。

开发实战部分的每篇文章基本遵循这样的撰写思路:文章开头首先展示实验步骤的目标,即程序运行效果,接着分析其背后的具体实现思路和步骤,并给出详尽的代码解读及重难点分析,最后大家可以在 GitHub 上查看对应的源代码。

作者介绍

叶常春,原国防科技大学计算机学院副教授。拥有十余年的程序设计教学经验,主讲大学计算机基础、计算机程序设计、数据结构和算法设计与分析等课程,熟悉 Python、Android、C/C++、Java、JavaScript + HTML + CSS、PHP 和 SQL 等语言。热爱教学,热爱编程。践行“做中学”理念,在入门级程序设计课程中指导学生开发出俄罗斯方块、五子棋和推箱子等游戏程序。相信只要给予时间和土壤,任何一名学生都能成长为编程高手。

课程内容
导读:功能概览

引言

你有玩过俄罗斯方块游戏吗?这是一款规则简单、上手容易,却让人爱不释手的游戏。作为一名程序员,你有没有想过自己写一个俄罗斯方块游戏程序,分享给家人、朋友、还有同学玩一玩呢?我在教大学一年级学生开发这款游戏的时候,就有学生自豪地跟我讲他在高中同学群里分发了游戏程序,高中同学好生羡慕呢。

除了帮你赢得身边人的掌声,编写俄罗斯方块游戏程序能实实在在地提升你的编程技能。在自己十多年的教学过程中,刚学完编程基础课程的同学经常问我:“老师,我现在编写的程序只有几十行,但现在的软件动辄上万行,我下一步该怎么走?”我的建议是,下一步做到能够熟练编写几百行的程序。进一步,我还会提议去编写小游戏程序。因为我知道,大家都爱玩游戏,编写游戏程序更能够激发同学们的干劲,所需的知识面比编程基础课所覆盖的知识面要更广。编写游戏程序要涉及图形界面编程、事件驱动机制、定时器、音效和图像等等。编程基础课通常没有覆盖到的这些内容。

编写俄罗斯方块游戏程序,是一种项目实战。我建议你通过一系列项目实战来提升编程技能,同时强烈建议你每一个项目实战的成果和经验教训发布到你的网络空间中。可以发布到博客中,可以发布到 GitHub 或其他类似网站上。这样,你把自己的学习成长轨迹记录下来,一方面会大大加快自己成长的速度,另一方面的好处是,帮助你找到一份好工作。你想呀,你怎么让面试官相信你拥有了足够的技能呢?光靠嘴巴说,是没有信服力的。如果你把自己做过的一个个项目讲出来并公布项目 URL 链接,面试官拿到可靠的证据,不录取你还录取谁呢。

“人生苦短,我用 Python”,这是网络上的一句戏言,却真实反映了 Python 语言的江湖地位。2018年4月,关注编程语言流行程度的 PYPL 指数指出,Python 的受欢迎程度获得5.2%的巨幅增长,是开发人员中受欢迎程度上升最快的语言。Python 也被视为 AI 时代的头牌语言,是数据科学和机器学习领域使用最多的语言。Python 语言学习曲线平滑,上手容易。然而,新手必须通过项目实战才能显著提高 Python 开发能力。

本达人课面向拥有 Python 编程基础的入门级程序员,通过俄罗斯游戏开发实战来提高新手的 Python 编程能力。对于编程基础为零的读者,我推荐先学习《Python编程:从入门到实践》一书,以及我本人发布的视频课程

功能概览

本课程共包含两大部分。

第一部分(第1篇)讲解如何搭建开发环境。课程采用的集成开发环境是 Pycharm Community 2017.3。这一部分先讲如何在 Pycharm 内创建项目,接着讲如何安装 Pygame 工具包。

第二部分(第2-22篇)开启俄罗斯方块游戏开发实战。每一篇对应一个实验步骤。每一个实验步骤实现一个核心功能。文章标题概括描述了每一篇实现的核心功能。每篇文章会首先指出实验步骤的目标,即所要实现的程序效果。接着,描述实验步骤的实现思路和任务,并逐个任务地讲解具体的做法,即如何在前面开发基础上修改/补充代码,并解析背后的思考过程。最后,分享该实验步骤对应的源代码,我会将其放在 Github 上,供大家浏览、下载。

全部21个实验步骤的编排遵循“小步走”的策略。我一再提醒自己,每一步骤要小,要有可见的结果。这样,一方面控制了单个实验步骤的难度,另一方面开发者可以清晰地判断开发工作是否达成了目标。比如,第一个步骤是绘制游戏窗口,我只用了7行代码来实现这一小小功能,仅此而已,其他图形绘制工作在本节中并不会涉及。诸如此类,后续每个实验步骤都经过了仔细斟酌,保证每节课只专注一个核心功能,力求步骤小,将其讲清讲透,难度可控。如果你浏览本课程的目录,或多或少能够看出“小步走”的策略。

整个课程走完后,程序的运行效果是什么样子的呢?

有两个方法可以看运行效果。第一,大家可以观看我制作的视频。第二,可以访问我上传到 Github 的源码,然后把源码压缩包(.zip)下载到本地,解压后运行它。

注意,你需要首先安装有 Python 3 以及 Pygame 工具包。如果你不知道怎么从 Github 下载源码压缩包,或者不知道如何安装 Python 3,又或者不知道如何安装 Pygame 工具包,上网搜索做法,保管你找到详尽的说明文档。你也可以访问本人发布的视频课程,课程第一章讲解了如何安装 Python 3。

知识内容方面,通过本课程你将学到:

  1. 面向对象编程;
  2. 把一个程序分解成多个模块的分析方法;
  3. 使用第三方工具包的 API;
  4. 事件驱动机制,包括键盘按键事件响应和定时事件响应等;
  5. 生成随机数的功能实现;
  6. 表示游戏状态的数据结构;
  7. 图形用户界面(GUI)编程,包括图形、图像和音效。

如果本课程是你需要的,让我们开始吧。祝好运!

第01课:Pycharm 中创建项目

步骤目标

本文将实现两个目标:

  1. 在 Pycharm Community(以下简称 Pycharm)中创建工程(也叫项目,Pro
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/valada/article/details/80892585

智能推荐

linux bash脚本_如何在Linux终端中显示日期和时间(并在Bash脚本中使用它)-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏15次。linux bash脚本Fatmawati Achmad Zaenuri/Shutterstock.comFatmawati Achmad Zaenuri / Shutterstock.com The date command is found in the Bash shell, which is the default shell in most Linux distributions and..._linux terminal显示时间

npm安装报错的解决办法-程序员宅基地

文章浏览阅读3.6k次。npm报错处理_npm安装报错

Unity中按钮(Button)控件Onclick事件函数参数错误 —— C#中的闭包(Closure)_unity 按钮onclick参数类型-程序员宅基地

文章浏览阅读2.5k次。问题本文主要针对的问题是在Unity中对Button类进行Onclick事件绑定的时候出现的函数参数错误进行分析解决,具体例子如下: Button[] button = GetComponentsInChildren<Button>(); int buttonCnt = 3; for (int i = 0; i < buttonCnt; i++) { button[i].SetActive(true); Debug.Log("i: " + i);_unity 按钮onclick参数类型

Halcon矩阵(Matrix)算子详解_get_full_matrix-程序员宅基地

文章浏览阅读6.5k次,点赞5次,收藏43次。Halcon矩阵(Matrix)详细说明创建(Creation)create_matrixcopy_matrixrepeat_matrix访问(Access)算法(Arithmetic)分解(Decomposition)特征值(Eigenvalues)特性(Features)文件操作(File)新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注_get_full_matrix

计算距离方法总结_两条线之间的欧式距离怎么算-程序员宅基地

文章浏览阅读2.5k次。欧氏距离(Euclidean Distance)欧式距离是最经典的一种距离算法,适用于求解两点之间直线的距离,适用于各个向量标准统一的情况,如各种药品的使用量、商品的售销量等。 欧氏距离也是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式。 二维空间上两点a(x1,y1)a(x_1,y_1)与b(x2,y2)b(x_2,y_2)之间的欧式距离: d12=(x1−x2)2+(y1−y_两条线之间的欧式距离怎么算

数学建模常用软件_什么软件可以分析数学建模的问题,以及给出合理的解释和分析-程序员宅基地

文章浏览阅读3.9w次,点赞78次,收藏436次。我参加过的数学建模比赛很多,除了本校的两次数学建模(二三等)外,全国数学建模(省二),亚太数学建模(s),ICM/MCM(M),五一建模联赛,电工杯(最近正在准备),之前错过mathorcup,有点遗憾。到2019年暑假前,总计自己一年左右参加7次建模比赛,说下自己建模常用的软件使用,本人在队里主要负责编程,但是写作和建模也同样会和队友交流。论文类LaTeX与WordWor..._什么软件可以分析数学建模的问题,以及给出合理的解释和分析

随便推点

图数据可视化——R语言ggplot2包和tidybayes包绘制小提琴图进阶_分半小提琴图-程序员宅基地

文章浏览阅读6.1k次,点赞7次,收藏41次。图数据可视化_R语言ggplot2包和tidybayes包绘制小提琴图进阶概述:绘制小提琴图时按数据分布的密度填充不同透明度的颜色(渐变填充)。使用工具:R语言中的ggplot2和tidybayes工具包本文使用的数据及计算方式与之前的博文一致:数据可视化——R语言ggplot2包绘制精美的小提琴图(并箱线图或误差条图组合)。本文采用tidybayes包中stat_eye()绘制小提琴图,通过设置aes(alpha = stat(f)可实现渐变填充。由于stat_eye()会默认采用中位数及分位数作_分半小提琴图

江苏省专转本计算机专业大类《计算机基础理论 1.2(二)小节习题答案》_计算机硬件系统是执行软件程序的物质基础,其中能执行程序指令的是( )-程序员宅基地

文章浏览阅读1.4k次。江苏省专转本计算机_计算机硬件系统是执行软件程序的物质基础,其中能执行程序指令的是( )

教你玩Robocode(3) —— 坦克基础知识_robocode炮和机身的运动分离-程序员宅基地

文章浏览阅读4.4k次。在Robocode中,坦克分为3个部件: 身体(Body)、炮塔(Gun)、雷达(Radar)。 因此,在Robot类(还记得吗,它是任何坦克的父类)中,有对这些部件操作的方法。要查看Robocode提供的API,可以在robocode目录下的javadoc下找到,也可以在Robocode程序的帮助菜单中找到: 对于Body来说,Robot类提供了4个方法:_robocode炮和机身的运动分离

The number of divisors(约数) about Humble Numbers hdu 1492-程序员宅基地

文章浏览阅读77次。Problem DescriptionA number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... shows the first...

程序员成长记录(前端转后端)-程序员宅基地

文章浏览阅读6.6k次,点赞6次,收藏5次。一位大学毕业生第一份工作不太满意,裸辞跳槽的故事_前端转后端

深度优先算法(DFS)的python实现及骑士周游问题解析_用python代码写深度优先遍历算法的时间复杂度-程序员宅基地

文章浏览阅读3.2k次,点赞3次,收藏21次。背景: 骑士周游问题在棋盘格里,马走日,遍历所有网格点,找到每个网格都走过,且只有一次的路径。算法实现:用于解决骑士周游问题的图搜索算法是深度优先搜索(DFS),该算法是逐层建立搜索树,沿着树的单支尽量深入的向下搜索。连接尽量多的顶点,必要时可以进行分支。深度优先搜索同样要用到顶点的“前驱”属性,来构建树或森林。另外需要设置“发现时间”和“结束时间”属性。发现时间是在第几步访问到了这个顶点(设置灰色);结束时间是在第几步完成了此顶点的探索(设置黑色)。通用的深度优先搜索算法代码:# BFS采_用python代码写深度优先遍历算法的时间复杂度