教你使用一行Python代码玩遍童年的小游戏
作者:python可乐编程 发布时间:2021-05-15 10:14:00
写在前面
贪吃蛇,吃豆人,迷宫,井字游戏......这些小游戏我相信大家小的时候肯定玩过,或许在某个时段还沉迷过.
随着年龄的增长,这些小游戏离我们越来越远,但是我相信大家的童心还是一直在的
今天就分享一个真正可以玩耍的GitHub项目 --- free-python-games
安装与使用
python大家都懂的,安装第三方库非常简单
pip install freegames
Python
由于该项目中的所有游戏均是基于Python内置模块Turtle制作,所以没有太多依赖,安装不会有困难
安装完之后我们可以使用 python -m freegames list 来查看所有的游戏列表
图1
贪吃蛇
现在我们可以使用一行代码启动相关游戏,比如贪吃蛇snake
python -m freegames.snake
Python
复制
图2
贪吃蛇的玩法想必不用过多解释了,使用键盘⬆️⬇️⬅️➡️即可操控
吃豆人
吃豆人没玩过也应该听过,使用下面的代码可以启动一个类似吃豆人的游戏
python -m freegames.pacman
Python
复制
图3
Flappy
Flappy这个游戏和之前非常火的Flappy bird十分类似
图4
只需要更换游戏名即可启动
python -m freegames.flappy
Python
复制
图5
这次需要不断点击鼠标来控制绿色小圆点飞行,实测比flappy bird难度要更高一点
Memory
Memory翻译过来是记忆,该游戏给出一些宫格,点击每一个小宫格会显示背后藏的数字,但会快速消失,当你成功选中两个相同的数字之后就会显示为拼图,可玩性还是很高的
python -m freegames.memory
Python
复制
图8
迷宫
这个游戏应该就不用介绍了,找出走出迷宫对应的路径即可
python -m freegames.maze
Python
复制
图7
Tic Tac Toe
这个游戏我打赌你一定玩过,单击屏幕即可放置一个X或O,当三个同样的图案在一条直线上就赢了
python3 -m freegames.tictactoe
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
现在我们就可以学习源码并进行修改来实现更多的功能与玩法,抓紧试试吧!
来源:https://www.cnblogs.com/pythonQqun200160592/p/15168868.html


猜你喜欢
- 禁用admin中models的编辑链接和添加删除按钮方法如下:class MyModelAdmin(models.ModelAdmin):
- 前言不管是做开发还是做过网站的朋友们,应该对于User Agent一点都不陌生,User Agent 中文名为用户代理,简称 UA,它是一个
- 1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 “SyntaxE
- 下面我们就分别讲述,虽然说的是Insert语句, 但是Select、Update、Delete语句都是一样的。 假如有下述表格:
- Git 基本操作Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比。本章将对有关创建与提交你的项目快照的命令作介绍。获取与创建项
- IPython + ptpython,完美体验首先是安装pip install ipython ptpython然后使用ptipython有
- 概述在实践中,我们发现上述的代码重复率非常高,新增和修改都费力,并且是没技术含量的体力活。 但又必须要这样做,不适合以公共函数的形式重用,为
- 或许你也经历过,很多人都说一个女人很漂亮,而你觉得很一般。有时候,我也尝试理解为什么会对某个女人情有独钟。通常,我用迷人来描述,但这个&qu
- 一.相关说明:1、openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件;2007一下的版本为xls结
- 在我们的网站建设中,为网站打造一个契合网站主题的个性化标志则是必需的,这直接关系到能否成功地塑造网站的品牌。这从某些角度看仍在网站推广的范畴
- 网页上的图片如果设置了alt属性,当鼠标移经时就会有tooltip出现,但是只能显示一行文本,有时需要多行文本,乃至图片来显示图片、链接或者
- 错误出现情景在cmd中使用mysql命令,学生信息表添加数据。使用load data方式简单批量导入数据。准备好文本数据: xuesheng
- 前言春联是中国传统文化中最具内涵的元素之一,它以对仗工整、简洁精巧的文字描绘美好形象,抒发美好愿望,是中国特有的文学形式,是华人们过年的重要
- 使用Keras作前端写网络时,由于训练图像尺寸较大,需要做类似 tf.random_crop 图像裁剪操作。为此研究了一番Keras下已封装
- 中间件介绍中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与
- csscompressor 库使用在 Python 中可以使用多种方法来压缩 CSS 文件。其中一种流行的方法是使用 csscompress
- 1.线性与非线性回归线性回归 Linear Regression:两个变量之间的关系是一次函数关系的—&mdas
- 问题描述 为了程序的正常运行,进行异常处理是有必要的,甚至于有时候,我们会主动的抛出异常,然后让程序进行异常捕获,再进行进一步的处理。但是,
- 装饰器模式在以下场景中被广泛应用:动态地向对象添加职责或行为,而不需要更改对象的代码。例如,可以通过装饰器模式来实现日志记录、性能分析、缓存
- 预编译语句预编译语句是一种用于执行参数化SQL查询的技术,它可以提高性能并减少SQL注入的风险。预编译语句主要有以下优势:避免SQL注入攻击