教你使用一行Python代码玩遍童年的小游戏


Posted in Python onAugust 23, 2021

写在前面

贪吃蛇,吃豆人,迷宫,井字游戏......这些小游戏我相信大家小的时候肯定玩过,或许在某个时段还沉迷过.
随着年龄的增长,这些小游戏离我们越来越远,但是我相信大家的童心还是一直在的
今天就分享一个真正可以玩耍的GitHub项目 --- free-python-games

安装与使用

python大家都懂的,安装第三方库非常简单

pip install freegames

Python

由于该项目中的所有游戏均是基于Python内置模块Turtle制作,所以没有太多依赖,安装不会有困难

安装完之后我们可以使用 python -m freegames list 来查看所有的游戏列表

教你使用一行Python代码玩遍童年的小游戏

图1

贪吃蛇

现在我们可以使用一行代码启动相关游戏,比如贪吃蛇snake

python -m freegames.snake

Python

复制

教你使用一行Python代码玩遍童年的小游戏

图2

贪吃蛇的玩法想必不用过多解释了,使用键盘⬆️⬇️⬅️➡️即可操控

吃豆人

吃豆人没玩过也应该听过,使用下面的代码可以启动一个类似吃豆人的游戏

python -m freegames.pacman

Python

复制

教你使用一行Python代码玩遍童年的小游戏

图3

Flappy

Flappy这个游戏和之前非常火的Flappy bird十分类似

教你使用一行Python代码玩遍童年的小游戏

图4

只需要更换游戏名即可启动

python -m freegames.flappy

Python

复制

教你使用一行Python代码玩遍童年的小游戏

图5

这次需要不断点击鼠标来控制绿色小圆点飞行,实测比flappy bird难度要更高一点

Memory

Memory翻译过来是记忆,该游戏给出一些宫格,点击每一个小宫格会显示背后藏的数字,但会快速消失,当你成功选中两个相同的数字之后就会显示为拼图,可玩性还是很高的

python -m freegames.memory

Python

复制

教你使用一行Python代码玩遍童年的小游戏

图8

迷宫

这个游戏应该就不用介绍了,找出走出迷宫对应的路径即可

python -m freegames.maze

Python

复制

教你使用一行Python代码玩遍童年的小游戏

图7

Tic Tac Toe

这个游戏我打赌你一定玩过,单击屏幕即可放置一个X或O,当三个同样的图案在一条直线上就赢了

python3 -m freegames.tictactoe

Python

复制

教你使用一行Python代码玩遍童年的小游戏

图8

查看源码

还有更多的游戏这里就不再一一介绍,Turtle我们并不陌生,所以当我们玩游戏时应该思考开发者是怎样实现的。使用下面的代码即可在当前目录下生成对应游戏的源码

"免费的python游戏将游戏和学习结合在一个灵活的环境中 减少编程等困难主题的压力"

python3 -m freegames copy snake

Python

复制

执行之后,在当前目录下就多了一个snake.py文件,打开就能查看游戏对应的逻辑

"""Snake, classic arcade game.

Exercises

1. How do you make the snake faster or slower?
2. How can you make the snake go around the edges?
3. How would you move the food?
4. Change the snake to respond to arrow keys.

"""

from turtle import *
from random import randrange
from freegames import square, vector

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

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)

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')
move()
done()

Python

现在我们就可以学习源码并进行修改来实现更多的功能与玩法,抓紧试试吧!

到此这篇关于一行Python代码玩遍童年的小游戏的文章就介绍到这了,更多相关Python童年的小游戏内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python 实现堆排序算法代码
Jun 05 Python
Python中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
Python实现对比不同字体中的同一字符的显示效果
Apr 23 Python
在Python的Django框架中包装视图函数
Jul 20 Python
实例讲解Python编程中@property装饰器的用法
Jun 20 Python
python线程、进程和协程详解
Jul 19 Python
Python File readlines() 使用方法
Mar 19 Python
修改python plot折线图的坐标轴刻度方法
Dec 13 Python
kafka-python批量发送数据的实例
Dec 27 Python
python函数的作用域及关键字详解
Aug 20 Python
GitHub上值得推荐的8个python 项目
Oct 30 Python
详解MindSpore自定义模型损失函数
Jun 30 Python
一文搞懂Python Sklearn库使用
python库sklearn常用操作
Aug 23 #Python
Python使用psutil库对系统数据进行采集监控的方法
Aug 23 #Python
Python 中的Sympy详细使用
Aug 07 #Python
Anaconda配置各版本Pytorch的实现
Aug 07 #Python
python开发的自动化运维工具ansible详解
Python初识逻辑与if语句及用法大全
Aug 07 #Python
You might like
php ss7.5的数据调用 (笔记)
2010/03/08 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
2017/09/29 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
如何判断微信内置浏览器(通过User Agent实现)
2014/09/01 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
2017/03/28 NodeJs
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
[00:10]DOTA2 TI9勇士令状明日上线
2019/05/07 DOTA
python单例模式获取IP代理的方法详解
2018/09/13 Python
Python字符串的常见操作实例小结
2019/04/08 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
匡威英国官网:Converse英国
2018/12/02 全球购物
廉价连衣裙和婚纱礼服在线销售:Tbdress
2019/02/28 全球购物
Java如何支持I18N?
2016/10/31 面试题
软件售后服务方案
2014/05/29 职场文书
群众路线班子对照检查材料
2014/09/25 职场文书
五好家庭事迹材料
2014/12/20 职场文书
管辖权异议上诉状
2015/05/23 职场文书
会议主持词开场白
2015/05/28 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书