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

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 list sort方法的具体使用

    以下是详细讲解“Python list sort方法的具体使用”的完整攻略。 在Python中,列表是一种常用的数据类型,可以用存储一组有序的数据。sort()是Python中用于对列表进行排序的方法。本文介绍sort()方法的具体使用方法,并提两个示例说明。 sort()方法的具体使用 sort()方法用于对列表进行排序可以按照升序或降序排列。sort()…

    python 2023年5月13日
    00
  • 如何使用 SeleniumWebdriver 和 Python 通过滚动查找网页上的所有元素

    【问题标题】:How to find all elements on the webpage through scrolling using SeleniumWebdriver and Python如何使用 SeleniumWebdriver 和 Python 通过滚动查找网页上的所有元素 【发布时间】:2023-04-02 02:11:01 【问题描述】:…

    Python开发 2023年4月8日
    00
  • 解决Python报错:SyntaxError: invalid character ‘,‘ (U+FF0C)

    当Python代码中出现“SyntaxError: invalid character“,”(U+FF0C)”时,这通常是因为代码中包含了中文字符的写法错误所造成的。该错误表示Python编译器无法识别该字符,并且它可能导致代码中断或执行出现错误。以下是一些可能有用的方法来解决这个问题。 1. 修改代码文件编码格式 在代码文件的头部,添加以下注释,告诉Pyt…

    python 2023年5月13日
    00
  • SymPy库关于矩阵的基本操作和运算

    SymPy是Python语言中的数学符号计算库,支持各种数学操作和计算,并提供多种数据结构,其中包括矩阵。下面我们将讲述SymPy库关于矩阵的基本操作和运算的完整攻略,包括矩阵的创建、矩阵的加减乘除运算、高阶矩阵的行列式和逆矩阵等。 创建矩阵 SymPy中的Matrix类提供了方便创建矩阵的方法。我们可以使用Matrix()构造函数来创建一个矩阵。下面我们将…

    python 2023年5月18日
    00
  • python os.path模块使用方法介绍

    Python的os.path模块使用方法介绍 os.path模块是Python标准库中与路径相关操作的模块之一,它提供了许多用于处理文件路径的函数。本文将详细讲解os.path模块的各种方法及其用法。 获取路径信息: os.path.abspath(path) 返回path的绝对路径,如果path不存在,则抛出FileNotFoundError。 >&…

    python 2023年6月2日
    00
  • Python中三个不可思议的返回功能分享

    Python中三个不可思议的返回功能分享 在Python中,有三个不可思议的返回功能,分别是return、yield和raise。本文将详细讲解这三个返回功能的使用方法和注意事项,并提供两个示例说明。 return return是Python中最常用的返回功能,用于从函数中返回一个值。当函数执行到return语句时,函数将会立即停止执行将return后面的值…

    python 2023年5月13日
    00
  • Python随机函数库random的使用方法详解

    Python随机函数库random的使用方法详解 Python的random函数库可以用于生成随机数和随机序列。下面将介绍一些常用的使用方法。 生成随机整数 可以使用randint函数来生成指定范围内的随机整数。例如,生成1~10之间的整数可以使用以下代码: import random random.randint(1, 10) 生成随机实数 可以使用uni…

    python 2023年5月14日
    00
  • python爬虫框架talonspider简单介绍

    Python爬虫框架TalonSpider简单介绍 TalonSpider是一款基于Python语言的爬虫框架,它是一款轻量级的框架,提供了基础的爬虫功能,如URL管理、网页下载、解析等,同时也提供了一些扩展的特性,如爬虫深度设置、下载延时设置等,方便用户对爬虫进行定制。 安装 TalonSpider的安装非常简单,只需在命令行输入以下命令即可完成安装。 p…

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