教你使用一行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 SqlAlchemy
Feb 12 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
Python正则表达式实现截取成对括号的方法
Jan 06 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
May 29 Python
python中不能连接超时的问题及解决方法
Jun 10 Python
使用Python自动化破解自定义字体混淆信息的方法实例
Feb 13 Python
浅谈Python反射 &amp; 单例模式
Mar 21 Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 Python
Python属性和内建属性实例解析
Jan 14 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 Python
Python多分支if语句的使用
Sep 03 Python
Django中如何用xlwt生成表格的方法步骤
Jan 31 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
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
jQuery 使用手册(六)
2009/09/23 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
js数组依据下标删除元素
2015/04/14 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
基于vue和react的spa进行按需加载的实现方法
2018/09/29 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
vue.js实现备忘录demo
2019/06/26 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
2019/12/27 Javascript
vue项目中使用vue-layer弹框插件的方法
2020/03/11 Javascript
[01:27:43]VGJ.S vs TNC Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
[01:20]DOTA2更新全新英雄 天涯墨客现已加入游戏
2018/08/25 DOTA
python使用cookielib库示例分享
2014/03/03 Python
Python针对给定列表中元素进行翻转操作的方法分析
2018/04/27 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
Python代码太长换行的实现
2019/07/05 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
马来西亚最好的婴儿商店:Motherhood
2017/09/14 全球购物
后勤人员岗位职责
2013/12/17 职场文书
高中军训感想300字
2014/03/04 职场文书
求职信名称怎么写
2014/05/26 职场文书
临床专业自荐信
2014/06/22 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
电工生产实习心得体会
2016/01/22 职场文书
导游词之阆中古城
2019/12/23 职场文书
解决Vue+SpringBoot+Shiro跨域问题
2021/06/09 Vue.js