Python之freegames 零代码的22个小游戏集合

yizhihongxing

Python之freegames 零代码的22个小游戏集合是一个Python项目,包含22个小游戏,每个游戏都可以零代码运行。本文将详细讲解如何下载、安装和运行这个项目,并以两个游戏为例进行说明。

下载与安装

  1. 下载项目

在GitHub上下载该项目的压缩文件,或使用git clone命令将项目克隆到本地:

git clone https://github.com/grantjenks/free-python-games
  1. 安装依赖

进入项目目录后,使用以下命令安装依赖:

pip install -r requirements.txt

运行游戏

在项目目录下,找到想要运行的游戏的.py文件,使用Python命令即可运行,例如:

python3 sudoku/sudoku.py

游戏示例

小蛇游戏

小蛇游戏的.py文件位于snake/目录下,文件名为snake.py。运行该文件即可启动小蛇游戏。

游戏规则:

  1. 使用键盘上的方向键控制蛇的移动方向;
  2. 吃到食物后蛇的长度增加,分数增加;
  3. 如果蛇碰到边界或者自己的身体,则游戏结束。

示例代码:

from random import randrange
from turtle import *
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()

Ping-pong游戏

Ping-pong游戏的.py文件位于pong/目录下,文件名为pong.py。运行该文件即可启动Ping-pong游戏。

游戏规则:

  1. 使用键盘上的ws键控制左侧板子的上下移动,使用ik键控制右侧板子的上下移动;
  2. 通过控制板子使得球不超出边界和被挡住;
  3. 根据打球方向,球会改变方向。

示例代码:

from random import choice
from turtle import *
from freegames import vector

def value():
    "Randomly generate value between (-5, -3) or (3, 5)."
    return (3 + choice(range(5))) * [-1, 1][choice([0, 1])]

ball = vector(0, 0)
aim = vector(value(), value())
state = {1: 0, 2: 0}

def move(player):
    "Move ball and check for collisions."
    ball.move(aim)

    if ball.x < -200 or ball.x > 200:
        aim.x = -aim.x
        state[player] += 1

    if ball.y < -200 or ball.y > 200:
        aim.y = -aim.y

    goto(ball.x, ball.y)
    dot(10)

    return state[player]

def power(x, y, w, h):
    "Create and return a turtle with customized attributes."
    t = Turtle(visible=False)
    t.speed(0)
    t.penup()
    t.goto(x, y)
    t.shape('square')
    t.shapesize(w, h)
    t.fillcolor('white')
    t.showturtle()
    return t

def final_scores():
    "Display the final scores."
    clear()
    goto(-100, 0)
    write(f'Player 1: {state[1]}   Player 2: {state[2]}', font=('Arial', 30, 'normal'), align='center')

def winner():
    "Display winner."
    clear()
    winner = 1 if state[1] > state[2] else 2
    goto(-100, 0)
    write(f'Player {winner} Wins!', font=('Arial', 30, 'normal'), align='center')

# Set up game board
setup(420, 420, 370, 0)
hideturtle()
tracer(False)
window = Turtle(visible=False)
window.penup()
window.goto(0, 200)
window.write("Python Pong", align="center", font=("Courier", 24, "normal"))
window.goto(170, -195)
window.write("Player 1", align="center", font=("Courier", 14, "normal"))
window.goto(-150, -195)
window.write("Player 2", align="center", font=("Courier", 14, "normal"))
window.goto(-145, 185)
window.write("Python Pong", align="center", font=("Courier", 14, "normal"))

# Draw game board
l1 = power(-220, 20, 1, 10)
l2 = power(-220, -20, 1, 10)
r1 = power(220, 20, 1, 10)
r2 = power(220, -20, 1, 10)

# Game loop
while abs(ball.x) < 200 and abs(ball.y) < 200:
    if l1.distance(ball) < 15:
        aim.x = -aim.x
        state[1] += 1

    if l2.distance(ball) < 15:
        aim.x = -aim.x
        state[1] += 1

    if r1.distance(ball) < 15:
        aim.x = -aim.x
        state[2] += 1

    if r2.distance(ball) < 15:
        aim.x = -aim.x
        state[2] += 1

    delay = abs(int(25 - (move(1) + move(2))/2))
    ontimer(1, lambda:None)

if state[1] == 10 or state[2] == 10:
    winner()
else:
    final_scores()

done()

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python之freegames 零代码的22个小游戏集合 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 三大Python翻译神器再也不用担心学不好英语

    当今全球开发者中喜好Python语言的人越来越多,同时,Python也成了统计学和科学计算领域的通用工具。在Python开发中,我们经常需要查看英文文档、书籍甚至英文博客等内容。如果英文不好,这些资源可能会成为进一步深入学习和提高的障碍。为了解决这个问题,这里介绍三大Python翻译神器,帮助你摆脱英语学习的困难,实现Python技能的进一步提升。 翻译神器…

    python 2023年6月3日
    00
  • python代码实现图书管理系统

    使用Python语言编写一个图书管理系统,主要包括以下几个模块: 登陆注册模块 图书信息管理模块 图书借还管理模块 系统管理模块 具体的实现过程如下: 1. 登录注册模块 实现用户登录和注册功能。用户需要输入账号和密码进行登录,如果是新用户需要先进行注册。登录成功后,用户可以选择进入图书信息管理模块或者图书借还管理模块。 2. 图书信息管理模块 管理员可以添…

    python 2023年5月19日
    00
  • Python极简代码实现杨辉三角示例代码

    下面是Python极简代码实现杨辉三角的攻略。 一、杨辉三角的定义 杨辉三角,又称帕斯卡三角形,是二项式系数在三角形中的一种几何排列。它的形状像一个三角形,内容则由数字组成,数字是由它上面的两个数字相加而得出的,它最左侧和最右侧的数字都是1。 下面是一个6行的杨辉三角: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 11 5 10 10 5 1 二…

    python 2023年5月19日
    00
  • 从Numpy数组创建一个Pandas DataFrame,并指定索引列和列头

    创建Pandas DataFrame通常涉及到将原始数据转换成Pandas所能理解的数据结构,即DataFrame。在Python中,使用Numpy数组来创建Pandas DataFrame是一种非常有效的方法。下面是通过Numpy数组创建Pandas DataFrame的完整攻略,包括指定索引列和列头。 创建Pandas DataFrame 要从Numpy…

    python-answer 2023年3月25日
    00
  • Python TCP通信客户端服务端代码实例

    首先,我们需要了解什么是TCP通信。TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它在互联网中被广泛使用,例如浏览网页、下载文件等。TCP通过三次握手建立连接,在数据传输过程中会保证数据的可靠传输,也能够保证数据的顺序正确。 在Python中,通过socket模块可以实现TCP通信。…

    python 2023年6月2日
    00
  • 在Python中实现字典反转案例

    要实现Python中字典反转,需要使用到字典的相关方法。下面是实现字典反转的完整攻略。 步骤一:创建需要反转的字典 首先,需要创建一个需要被反转的字典,示例代码如下。 # 创建需要反转的字典 original_dict = {"a": 1, "b": 2, "c": 3, "d"…

    python 2023年6月3日
    00
  • Python实现图像增强

    我将为您详细讲解“Python实现图像增强”的完整攻略。 1. 图像增强 图像增强是指对图像的特定操作或一系列操作,以获得更好的可视化效果,提高图像质量。常用的图像增强技术包括:亮度调整、对比度调整、直方图均衡化、模糊、锐化等。 2. Python实现图像增强 Python中有很多第三方库可以实现图像增强,本文将以Pillow库为例进行讲解。 2.1 安装P…

    python 2023年5月19日
    00
  • 如何利用python处理原始音频数据

    处理原始音频数据是一项重要任务,Python为处理音频的操作提供了一些库和工具,包括SciPy、NumPy、Soundfile等。下面提供一个完整攻略,来解释如何利用Python处理原始音频数据。 步骤1:导入所需的库 为了开始处理音频数据,我们需要先导入必要的库。Python中用于处理音频的一些常用库包括: numpy:处理数字信号 scipy:用于处理数…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部