main.py | ||
pyproject.toml | ||
README.md | ||
setup.py | ||
show_avatar.py |
AI头控球球大逃亡
简介
这是一个基于 Pygame 和 MediaPipe 实现的小游戏。玩家通过控制自己的头部移动来避开下落的障碍物,同时收集时间值。使用计算机的摄像头进行人脸检测,动态控制游戏中的小球进行左右移动。
特性
- 使用 MediaPipe 进行实时人脸检测
- 用 Pygame 构建游戏界面
- 障碍物动态生成,增加游戏挑战性
- 实时计时显示,记录游戏时间
- 支持窗口化操作和实时反馈
环境要求
- Python 3.12.x
- 使用 PDM 进行依赖管理
使用 PDM 安装依赖
首先,确保你的系统上已经安装了 PDM。然后在项目根目录下,通过以下命令安装项目依赖:
pdm install
指定 Python 版本为 3.12 的依赖将会被安装,如下所列:
[project]
name = "HeadBallGame"
version = "0.1.0"
description = "Default template for PDM package"
authors = [
{name = "Zengtudor", email = "Zengtudor@outlook.com"},
]
dependencies = ["opencv-python>=4.11.0.86", "mediapipe>=0.10.21", "numpy>=1.26.4", "pygame>=2.6.1"]
requires-python = "==3.12.*"
readme = "README.md"
license = {text = "MIT"}
[tool.pdm]
distribution = false
使用方法
- 确保你拥有正常工作的摄像头。
- 运行游戏的主程序:
pdm run python main.py
- 根据摄像头的反馈,移动头部来控制游戏中的小球左右移动,避开障碍物。
代码示例
以下是游戏的核心代码片段,用于说明主要功能的实现:
import cv2
import mediapipe as mp
import pygame
import time
import random
# 游戏初始化
pygame.init()
font = pygame.font.Font(None, 36)
screen = pygame.display.set_mode((600, 800))
ball_radius = 20
ball_color = (255, 105, 180)
# 摄像头初始化
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
# MediaPipe初始化
mp_face = mp.solutions.face_detection
face_detection = mp_face.FaceDetection(min_detection_confidence=0.5)
# 游戏逻辑和绘制函数
clock = pygame.time.Clock()
obstacles = []
# ...(省略一些代码)...
def draw_ball(normalized_x, normalized_y):
# ...(绘制小球及障碍物的逻辑)...
注意事项
- 由于该游戏需要使用摄像头进行人脸检测和控制,请确保在良好的光线条件下进行游戏,以获得最佳效果。
- 如果检测效果不佳,请尝试调整摄像头的位置。
贡献
欢迎任何对项目功能和性能的改进或反馈。您可以通过提交 issue 或 pull requests 的方式贡献。
License
本项目采用 MIT 许可证,具体内容请查阅 LICENSE 文件。
希望这个游戏能为您带来乐趣!尽情享受游戏吧!