吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6683|回复: 14
收起左侧

[Python 转载] 【Python】 一行代码玩遍童年的小游戏

[复制链接]
Java_S 发表于 2020-10-14 21:28

写在前面

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

安装与使用

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

pip install freegames

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

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

图1

贪吃蛇

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

python -m freegames.snake

图2

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

吃豆人

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

python -m freegames.pacman

图3

Flappy

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

图4

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

python -m freegames.flappy

图5

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

Memory

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

python -m freegames.memory

图6

迷宫

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

python -m freegames.maze

图7

Tic Tac Toe

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

python3 -m freegames.tictactoe

图8

查看源码

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

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

python3 -m freegames copy snake

执行之后,在当前目录下就多了一个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()

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


世界因代码而改变   Peace Out

免费评分

参与人数 11吾爱币 +14 热心值 +10 收起 理由
stefaniema + 1 谢谢@Thanks!
1472 + 1 + 1 谢谢@Thanks!
笙若 + 1 + 1 谢谢@Thanks!
深水夜藏 + 1 + 1 我很赞同!
wushaominkk + 4 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
alittlebear + 1 666
GhostCN_Z + 1 + 1 用心讨论,共获提升!
wokl168 + 1 + 1 谢谢@Thanks!
hack_wangyu + 1 + 1 HXD
kaysenX + 1 + 1 HXD
正己 + 2 + 1 赞一个

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ZhenBab 发表于 2020-10-14 21:59
厉害!就是玩起来有点卡哈哈哈
正己 发表于 2020-10-14 21:32
kaysenX 发表于 2020-10-14 21:33
貌似装上了,但是报个错,不知道影不影响,还是只有我报了
image.png
Luckyu920 发表于 2020-10-14 22:13
6哇,大神,感谢分享
别路山川 发表于 2020-10-14 22:18
感谢分享
ciker_li 发表于 2020-10-14 22:35
感谢分享
error_bug 发表于 2020-10-14 22:42
娱乐与学习结合才能学的更好
HuangQiguang 发表于 2020-10-14 22:49
支持支持
 楼主| Java_S 发表于 2020-10-15 07:55
正己 发表于 2020-10-14 21:32
好兄弟,支持一波

哈哈哈,走起来
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:31

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表