教你使用一行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获得两个数组交集、并集、差集的方法
Mar 27 Python
基于Django filter中用contains和icontains的区别(详解)
Dec 12 Python
在python中利用KNN实现对iris进行分类的方法
Dec 11 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
Jun 13 Python
Python中那些 Pythonic的写法详解
Jul 02 Python
python3.7 的新特性详解
Jul 25 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
Python 求数组局部最大值的实例
Nov 26 Python
使用pandas 将DataFrame转化成dict
Dec 10 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
python实现logistic分类算法代码
Feb 28 Python
python基于opencv实现人脸识别
Jan 04 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生成图片验证码-附五种验证码
2015/08/19 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
2016/11/05 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
js CSS操作方法集合
2008/10/31 Javascript
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
node前端模板引擎Jade之标签的基本写法
2018/05/11 Javascript
记录vue项目中遇到的一点小问题
2019/05/14 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
python进阶教程之动态类型详解
2014/08/30 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
详解Flask前后端分离项目案例
2020/07/24 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
超市开店计划书
2014/04/26 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
举起手来观后感
2015/06/09 职场文书
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL