教你使用一行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 文件与目录操作
Dec 24 Python
分享15个最受欢迎的Python开源框架
Jul 13 Python
用Python制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
使用pyecharts在jupyter notebook上绘图
Apr 23 Python
python 信息同时输出到控制台与文件的实例讲解
May 11 Python
详解TensorFlow查看ckpt中变量的几种方法
Jun 19 Python
Opencv实现抠图背景图替换功能
May 21 Python
django数据关系一对多、多对多模型、自关联的建立
Jul 24 Python
深入解析神经网络从原理到实现
Jul 26 Python
基于Django静态资源部署404的解决方法
Jul 28 Python
python 从list中随机取值的方法
Nov 16 Python
Python图像处理之膨胀与腐蚀的操作
Feb 07 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排序算法(冒泡排序,快速排序)
2012/10/09 PHP
php简单中奖算法(实例)
2017/08/15 PHP
JS 分号引起的一段调试问题
2009/06/18 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
2018/09/12 Javascript
JS实现图片切换效果
2018/11/17 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
进一步理解Python中的函数编程
2015/04/13 Python
详解python eval函数的妙用
2017/11/16 Python
python实现自动网页截图并裁剪图片
2018/07/30 Python
python递归实现快速排序
2018/08/18 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
Pytorch 实现focal_loss 多类别和二分类示例
2020/01/14 Python
django rest framework 自定义返回方式
2020/07/12 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
html5的canvas方法使用指南
2014/12/15 HTML / CSS
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
应届毕业生自荐信
2014/05/28 职场文书
2014年健康教育工作总结
2014/11/20 职场文书
同学聚会通知短信
2015/04/20 职场文书
交通事故案件代理词
2015/05/23 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书