贪吃蛇、迷宫、吃豆人、扫雷、Flappy Bird...这些游戏可以是非常经典,甚至伴随着很多人的童年回忆。那么,你是否想过自己开发一款专属游戏?是否思考过开发这样一款游戏需要多少工作量? />

游戏开发在互联网行业算是一个门槛较高的方向,因此,对于非专业的游戏开发者来说,开发一款游戏一直是一件让人望而却步的事情,遥不可及。

那么,今天要介绍的这款Python项目就可以轻松实现你成为游戏开发者的想法,实现前面提到的这些经典游戏只需要50-100代码即可完成。

free-python-games

两年前,我姐就曾表达了希望我能够抽空教外甥学习编程的想法。对于这份嘱托,我一直放在心上,但是却迟迟找不到合适的方向。该从哪个方向着手教一个孩子学习编程?

怎么提升一个小孩子对编程的兴趣?

即便是从事几年互联网行业的我来说都对编程都觉得枯燥乏味,何况一个一无所知的孩子呢?

但是,free-python-games这个项目让我眼前一亮,终于找到了一个合适的Python学习项目。当年,它对于成年人同样适用、有价值。

我之所以介绍这款项目,不单单是它实现了让人回到童年的经典游戏。更重要的原因是它能够作为一个Python学习、锻炼探索和理解能力的一款好工具。

free-python-games和我们接触的大多数Python库那样让人如同垒积木一样去实现一项功能不同,你需要去静下心来死锁一款游戏的主题,同时需要去实现游戏中的每一个策略。 />

我觉得这样比拿来即用的搬运工作要有趣很多,且更加具有挑战。

以我们熟知的贪吃蛇为例,当然我们目前对于这款游戏的主题和玩法已经非常清楚了,通过方向键控制蛇的移动,每当吃到一颗食物蛇就会变长,如果撞到墙则游戏结束... />

那么,对这款游戏进行拆解,就需要思考几个问题:如何使蛇加速和减速?

如何使蛇绕过边缘?

如何分配新产生食物的位置?

游戏中的蛇如何根据键盘操作做出相应的反应?

看到这里你就会发现,它并不像我们大多数情况下使用Python那样,np.linespace、plt.plot、tf.Session,它更像是LeetCode上面的算法题,需要你从零开始去实现一款游戏,用心去思考游戏实现过程中的每个细节。而在这个过程中对人的提升会非常迅速。

下面就以贪吃蛇这个游戏为例,介绍它的源码和实现过程,来回答上述4个问题。

首先,导入需要的模块,

from turtle import *

from random import randrange

from freegames import square, vector

其中turtle是一款绘图工具,主要为了实现游戏的前端和用户交互功能,freegames包含了一些开发游戏会用到的基本元素,random是Python中用于生成随机数的库,在生产新食物的过程中会遇到(回忆一下,当蛇吃了一颗食物后,会在窗口内随机产生一颗食物)。

然后,就初始化一些变量,分别用于存储食物、蛇的状态,

food = vector(0, 0)

snake = [vector(10, 0)]

aim = vector(0, -10)

下面就是初始化蛇的位置,已经定义蛇对于键盘方向键的响应,朝着指定的方向移动,

def change(x, y):

"Change snake direction."

aim.x = x

aim.y = y

setup(420, 420, 370, 0)

hideturtle()

tracer(False)

listen()

onkey(lambda: change(10, 0), 'Right')

onkey(lambda: change(-10, 0), 'Left')

onkey(lambda: change(0, 10), 'Up')

onkey(lambda: change(0, -10), 'Down')

接下来,我们需要判断蛇是否在边界框以内,如果在,则继续移动,否则终止,

def inside(head):

"Return True if head inside boundaries."

return -200 < head.x < 190 and -200 < head.y < 190

最后,就是整个游戏的串联逻辑,不断移动蛇、不断判断当前状态,然后选择是否继续移动,

def move():

"Move snake forward one segment."

head = snake[-1].copy()

head.move(aim)

if not inside(head) or head in snake:

square(head.x, head.y, 9, 'red')

update()

return

snake.append(head)

if head == food:

print('Snake:', len(snake))

food.x = randrange(-15, 15) * 10

food.y = randrange(-15, 15) * 10

else:

snake.pop(0)

clear()

for body in snake:

square(body.x, body.y, 9, 'black')

square(food.x, food.y, 9, 'green')

update()

ontimer(move, 100)

到此为了,经典的贪吃蛇游戏就完成了。整款游戏的纯代码行数不足50行。但是,却内藏锦绣,有很多需要开发者去思考和琢磨的点,对Python学习者也是一个很大的提升。

除了贪吃蛇,这个项目中还有迷宫、吃豆人、扫雷、Flappy Bird等20+款经典游戏。

当然,如果你觉得这些游戏还不够,或者对游戏开发充满兴趣,或者有很好的游戏设计idea但开发能力受限,那么,不妨学习一下free-python-games这个项目,能够把精力专注于游戏本身,而不需要在编程语言方面耗费太多时间。

另外,如果你仅仅希望用来划水,这个项目同样可以满足你,只需要简单的安装之后就可以在电脑上玩这些经典游戏。

安装

$ python3 -m pip install freegames

游戏列表

$ python3 -m freegames list

打开游戏

$ python3 -m freegames.snake

另外,你还可以拷贝一份游戏源码到本地路径,用于编辑,

$ python3 -m freegames copy snake

$ python3 snake.py

干货

最近,为了方便大家,我花费了半个月的时间把这几年来收集的各种技术干货整理到一起,其中内容包括但不限于Python、机器学习、深度学习、计算机视觉、推荐系统、Linux、工程化、Java,内容多达5T+,我把各个资源下载链接整理到一个文档内,目录如下: />

所有干货送给大家,希望能够点赞支持一下!

全部python编程语言-可以用 Python 编程语言做哪些神奇好玩的事情?相关推荐

  1. python可以干嘛用-Python可以被用来做哪些神奇好玩的事情

    原标题:Python可以被用来做哪些神奇好玩的事情 如果你在周末.有WIFI的房间里不知道做什么,不如学下Python吧.有了它,你可以什么都不需要! 基础需求篇:温饱与空虚 躺着赚钱 一位匿名知乎网 ...

  2. python能做什么程序-Python可以被用来做哪些神奇好玩的事情

    原标题:Python可以被用来做哪些神奇好玩的事情 如果你在周末.有WIFI的房间里不知道做什么,不如学下Python吧.有了它,你可以什么都不需要! 基础需求篇:温饱与空虚 躺着赚钱 一位匿名知乎网 ...

  3. SegmentFault 技术周刊 Vol.30 - 学习 Python 来做一些神奇好玩的事情吧

    前言 开始之前,我们先来看这样一个提问: python初学者,请教python学习路径 相信看完 @X_AirDu 的回答我们已经对 Python 有了一个大概的了解.那接下来就让我们更深入的了解 P ...

  4. python能用来做什么有意思的事情-Python可以被用来做哪些神奇好玩的事情

    原标题:Python可以被用来做哪些神奇好玩的事情 如果你在周末.有WIFI的房间里不知道做什么,不如学下Python吧.有了它,你可以什么都不需要! 基础需求篇:温饱与空虚 躺着赚钱 一位匿名知乎网 ...

  5. python能用来做什么有意思的事情-可以用 Python 编程语言做哪些神奇好玩的事情?...

    目前的数据工作中,数据科学家使用最多的工具语言就是Python,排在第二的工具语言是R语言.但这里有一个有趣的现象,那就是同时使用Python或者R语言的人,推荐别人使用Python的却远高于R语言. ...

  6. python有什么好玩的代码_可以用 Python 编程语言做哪些神奇好玩的事情?

    Python作为一种应用极为广泛的语言,几乎在任何领域都能派上用场.想做Web有Flask/Django/Tornado:想做分布式有Celery:想做手机App有Kivy:想做数据分析有Pandas ...

  7. 可以用 Python 编程语言做哪些神奇好玩的事情?

    [Python]作为一种应用极为广泛的语言,几乎在任何领域都能派上用场.想做Web有Flask / [Django] / Tornado:想做分布式有Celery:想做[手机][App]有 Kivy ...

  8. Python可以做哪些神奇好玩的事情?

    Python作为一种应用极为广泛的语言,几乎在任何领域都能派上用场.想做Web有Flask / Django / Tornado:想做分布式有Celery:想做手机App有 Kivy :想做数据分析有 ...

  9. python能做什么有趣的东西-可以用 Python 做哪些神奇好玩的事情?

    Python作为一种应用极为广泛的语言,几乎在任何领域都能派上用场.想做Web有Flask / Django / Tornado:想做分布式有Celery:想做手机App有 Kivy :想做数据分析有 ...

  10. python可以神奇的做什么_可以用 Python 编程语言做哪些神奇好玩的事情?

    源自于一个用Python写各种小游戏的github合集,star数1k.除了坦克大战外,还包含滑雪者.皮卡丘GOGO.贪吃蛇.推箱子.拼图等游戏. 帮助你快速生成属于自己的铅笔画,单色或是彩铅都可以. ...

最新文章

  1. 2022-2028年中国丁基橡胶行业市场深度分析及投资前景展望报告
  2. C语言return函数
  3. 温故(2):pass by value
  4. 七天免登录JavaScript实现
  5. cf1557 C. Moamen and XOR
  6. win10无法开启夜间模式
  7. php 计划任务 不执行,CentOS 系统下 Laravel 计划任务 PHP artisan schedule:run 不执行,应该如何处理?...
  8. date字段 http 头文件_http头文件信息
  9. oracle数据库激活控制文件位置,Oracle数据库之Oracle 重建控制文件一例
  10. Microsoft Office 2010组件介绍
  11. 问题解决型QCC课题的推行步骤
  12. fpga驱动步进电机转动指定角度_通过PLC实现步进电机定位控制的方法
  13. Scrapy框架: 异常错误处理
  14. android4.4 fragment,在Activity和多个Fragment之间共享资源
  15. 如何一日千里 突飞猛进?
  16. 关于Ai打开图片,颜色变色问题
  17. 一键非自锁开关电路设计
  18. Mysql compact行格式
  19. Android与IOS的的兼容总结
  20. Error in v-on handler: “TypeError: Cannot read property ‘validate‘ of undefined“

热门文章

  1. 神经网络中归一化的重要作用
  2. LSTM入门学习——结合《LSTM模型》文章看
  3. Linux下配置Node.js环境
  4. jeecms v9 vue环境搭建
  5. Golang通道的无阻塞读写的方法示例
  6. 循环截取字符串添加换行
  7. document.all 用法
  8. WSS(MOSS)如何修改Rich文本编辑器的宽度
  9. ORM之SQLAlchemy
  10. 计算机网络体系结构作业题整理-第十章答案