Python基础(吃洋葱小游戏)

下面我将为你设计一个"吃洋葱小游戏"的Python实现方案,使用Pygame库开发。这个游戏模拟吃洋葱的过程,玩家需要收集不同种类的洋葱以获得高分,同时避免吃到辣椒。

🧅 吃洋葱小游戏 - Python实现方案

🎮 1. 游戏设计概念
  • ​游戏目标​​:玩家控制角色吃掉尽可能多的洋葱获得高分
  • ​核心机制​​:
    • 洋葱从屏幕上方随机下落
    • 玩家左右移动角色接住洋葱
    • 不同洋葱有不同分值(普通洋葱+10,红洋葱+20,紫洋葱+50)
    • 辣椒会扣减生命值
    • 生命值耗尽游戏结束

先安装洋葱

打开链接--->高级
配置  浏览器如何连接互联网。
配置成127.0.0.1  7890  socket5(配置 洋葱浏览器如何连接互联网)
 

D:\Tor Browser\Browser\TorBrowser\Data\Tor里面有一个torrc文件然后配置一下

# 基本配置
DataDirectory D:\Tor Browser\Browser\TorBrowser\Data\Tor
GeoIPFile D:\Tor Browser\Browser\TorBrowser\Data\Tor\geoip
GeoIPv6File D:\Tor Browser\Browser\TorBrowser\Data\Tor\geoip6# 控制端口配置
ControlPort 9051
CookieAuthentication 1# 启用网络
DisableNetwork 0

Flask代码:

from flask import Flask, render_template_string
from stem.control import Controller
import os
from threading import Thread
import logging
import time
import socket
import subprocessapp = Flask(__name__)# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)# HTML模板
HTML_TEMPLATE = """
<!DOCTYPE html>
<html>
<head><title>Tor Hidden Service</title><style>body {font-family: Arial, sans-serif;max-width: 800px;margin: 0 auto;padding: 20px;background-color: #f0f0f0;}.container {background-color: white;padding: 20px;border-radius: 5px;box-shadow: 0 2px 5px rgba(0,0,0,0.1);}h1 {color: #333;}</style>
</head>
<body><div class="container"><h1>欢迎访问服务</h1><p>这是一个通过服务网站。</p><p>当前时间: {{ current_time }}</p></div>
</body>
</html>
"""@app.route('/')
def index():from datetime import datetimereturn render_template_string(HTML_TEMPLATE, current_time=datetime.now().strftime('%Y-%m-%d %H:%M:%S'))def check_tor_running():"""检查Tor是否正在运行"""try:# 尝试连接到Tor的SOCKS端口(9150)来检查Tor是否运行sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)result = sock.connect_ex(('127.0.0.1', 9150))sock.close()return result == 0except:return Falsedef start_tor_browser():"""启动Tor Browser"""try:tor_path = "D:\\Tor Browser\\Browser\\TorBrowser\\Tor\\tor.exe"if os.path.exists(tor_path):subprocess.Popen([tor_path])logger.info("正在启动...")time.sleep(10)  # 等待启动return Trueexcept Exception as e:logger.error(f"启动失败: {str(e)}")return Falsedef start_hidden_service():max_retries = 3retry_count = 0while retry_count < max_retries:try:# 检查Tor是否运行if not check_tor_running():logger.error("未运行")if not start_tor_browser():logger.error("无法启动")returnlogger.info("正在尝试连接到控制端口...")# 连接到Tor控制端口controller = Controller.from_port(port=9051)# 尝试不同的认证方法try:controller.authenticate()except Exception as auth_err:logger.error(f"认证失败: {str(auth_err)}")# 尝试使用cookie认证cookie_path = "D:\\Tor Browser\\Browser\\TorBrowser\\Data\\Tor\\control_auth_cookie"if os.path.exists(cookie_path):with open(cookie_path, 'rb') as f:cookie_data = f.read()controller.authenticate(cookie_data)else:raise Exception("无法找到认证cookie文件")logger.info("成功连接到Tor控制端口")# 获取当前目录并创建隐藏服务目录hidden_service_dir = os.path.join(os.getcwd(), 'hidden_service')os.makedirs(hidden_service_dir, exist_ok=True)# 使用单独的命令添加隐藏服务配置response = controller.msg('SETCONF HiddenServiceDir="{0}" HiddenServicePort="80 127.0.0.1:5000"'.format(hidden_service_dir.replace('\\', '/')))if response.is_ok():logger.info("成功设置隐藏服务")# 给Tor一些时间来生成密钥和hostname文件logger.info("等待生成密钥和地址...")# 等待20秒,确保hostname文件被创建max_wait = 20hostname_file = os.path.join(hidden_service_dir, 'hostname')for i in range(max_wait):if os.path.exists(hostname_file):breaktime.sleep(1)logger.info(f"等待hostname文件生成...({i+1}/{max_wait}秒)")# 从文件读取onion地址if os.path.exists(hostname_file):try:with open(hostname_file, 'r') as f:onion_address = f.read().strip()logger.info(f"隐藏服务地址: {onion_address}")except Exception as e:logger.error(f"读取hostname文件失败: {str(e)}")else:logger.warning("未找到hostname文件,请稍后手动查看hidden_service目录")logger.info(f"隐藏服务目录: {hidden_service_dir}")logger.info(f"网站可通过Tor Browser访问: {onion_address}")return  # 成功后退出else:raise Exception(f"设置隐藏服务失败: {response.str()}")except Exception as e:logger.error(f"尝试 {retry_count + 1}/{max_retries} 失败: {str(e)}")# 检查具体错误类型if isinstance(e, socket.error):logger.error("网络错误: 请检查是否正在运行,以及端口9051是否可访问")retry_count += 1if retry_count < max_retries:logger.info("等待5秒后重试...")time.sleep(5)else:logger.error("请确保:")logger.error("1. 已经启动")logger.error("2. torrc 文件已正确配置")logger.error("3. 控制端口 9051 可访问")logger.error("4. 检查端口占用情况:")try:subprocess.run(["netstat", "-ano", "|", "findstr", "9051"], shell=True)except:pass# 最后一次尝试从文件读取hostname_file = os.path.join(os.getcwd(), 'hidden_service', 'hostname')if os.path.exists(hostname_file):try:with open(hostname_file, 'r') as f:onion_address = f.read().strip()logger.info(f"从文件获取的隐藏服务地址: {onion_address}")logger.info(f"隐藏服务已创建,但连接过程中出现错误")logger.info(f"你可以通过访问:{onion_address}")except:passif __name__ == '__main__':# 在后台线程中启动隐藏服务hidden_service_thread = Thread(target=start_hidden_service)hidden_service_thread.daemon = Truehidden_service_thread.start()# 启动Flask应用app.run(host='127.0.0.1', port=5000)

123

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/87496.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/87496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Objective-C 路由表原理详解

在 Objective-C 中实现路由表是组件化架构的核心&#xff0c;它通过 URL 映射机制实现模块间解耦通信。以下是完整实现原理&#xff1a; 一、核心架构设计 #mermaid-svg-5jMinPiZe8mivAbi {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fil…

通过交互式网页探索传输现象-AI云计算数值分析和代码验证

传输过程涉及质量、动量和能量等物理量在各种系统中的基本运动和转移&#xff0c;主要分为动量传输、热量传输和质量传输&#xff0c;在工程、环境科学、生物学和物流等领域至关重要。 传输过程是指物理量&#xff08;如质量、动量和能量&#xff09;在物理、化学、生物或工程系…

使用Rust原生实现小波卡尔曼滤波算法

一、算法原理概述小波变换&#xff08;Wavelet Transform&#xff09;通过多尺度分解将信号分为高频&#xff08;细节&#xff09;和低频&#xff08;近似&#xff09;部分&#xff0c;高频通常包含噪声&#xff0c;低频保留主体信息。使用Haar小波&#xff08;计算高效&#x…

leetcode 3304. 找出第 K 个字符 I 简单

Alice 和 Bob 正在玩一个游戏。最初&#xff0c;Alice 有一个字符串 word "a"。 给定一个正整数 k。 现在 Bob 会要求 Alice 执行以下操作 无限次 : 将 word 中的每个字符 更改 为英文字母表中的 下一个 字符来生成一个新字符串&#xff0c;并将其 追加 到原始的…

数字人分身+矩阵系统聚合+碰一碰发视频: 源码搭建-支持OEM

以下是关于数字人分身、矩阵系统聚合及碰一碰发视频功能的源码搭建与OEM支持的方案整理&#xff1a;核心技术模块数字人分身技术 使用深度学习框架&#xff08;如PyTorch或TensorFlow&#xff09;训练生成对抗网络&#xff08;GAN&#xff09;或变分自编码器&#xff08;VAE&am…

【LeetCode 热题 100】189. 轮转数组——(解法一)额外数组

Problem: 189. 轮转数组 题目&#xff1a;给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 文章目录 整体思路完整代码时空复杂度时间复杂度&#xff1a;O(N)空间复杂度&#xff1a;O(N) 整体思路 这段代码旨在解决一个经典的…

【PyCharm 2025.1.2配置debug】

大家先看下我的配置 1.调试配置 选择 FastAPI 框架名称-》 自定义应用程序文件&#xff1a;必须选择当前项目的main.pyUvicorn 选项&#xff1a;这是启动命令&#xff0c;有第三步的选择 main.py 所以只需要–reload即可&#xff0c;如果想自定义启动端口补充–port xxxxPytho…

Python数据库软件:查询与预测功能集成系统

Python数据库软件:查询与预测功能集成系统 概述 本文将详细介绍一个具备查询和模型预测功能的Python数据库软件的设计与实现。该系统基于Python开发,使用Excel作为数据存储格式,包含约15个功能页面,支持数据管理、查询分析、模型预测等核心功能。 系统架构 技术栈 核心…

什么是持续集成/持续交付(CI/CD)?

基本概念 CI/CD旨在通过自动化流程提高代码质量、加快发布速度 CI &#xff08;Continuous Integration&#xff0c;持续集成&#xff09;CD&#xff08;Continuous Delivery/Deployment&#xff0c;持续交付/持续部署&#xff09; CI 持续集成 目标 频繁加粗样式将代码合…

核弹级漏洞

CVE-2025-6018 漏洞介绍&#xff1a; 该漏洞是Linux PAM&#xff08;可插拔认证模块&#xff09;中的一个本地权限提升漏洞&#xff0c;主要存在于openSUSE Leap 15和SUSE Linux Enterprise 15的PAM配置中。由于PAM规则错误地将检查条件设置为用户存在SSH或TTY会话&#xff0c…

LabVIEW自动扶梯振动监测

利用LabVIEW开发平台构建自动扶梯机械振动数据采集系统&#xff0c;实现驱动主机、减速器、梯级等关键部位的振动信号实时采集、频谱分析、数据存储及故障特征提取。系统通过加速度传感器与高速数据采集卡的协同工作&#xff0c;结合 LabVIEW 图形化编程的高效数据处理能力&…

PTA最少交换次数

最少交换次数 分数 15 作者 計科G隊長 单位 重庆大学 长度为N的数组中只有1&#xff0c;2&#xff0c;3三种值&#xff0c;要按升序排序&#xff0c;并且只能通过数值间的两两交换实现不能移位。比如某项竞赛的优胜者按金银铜牌排序&#xff0c;或者荷兰国旗问题都是该问题…

LiteHub中间件之跨域访问CORS

跨域访问CORS 原理基本概念简单请求非简单请求&#xff08;预检请求&#xff09; 代码实现服务器端Cors的关键配置服务端解析预检请求服务端填充响应 抓包分析 原理 基本概念 在浏览器安全模型中&#xff0c;同源策略是最重要的安全基石。 一个“域”是由3个要素组成的&#…

FastAPI开发教程

FastAPI 是一个现代、高性能的 Python Web 框架&#xff0c;专为构建 APIs 设计。它基于 Python 类型提示&#xff0c;支持异步编程&#xff0c;并提供自动生成的交互式文档&#xff08;Swagger UI 和 ReDoc&#xff09;。以下是 FastAPI 开发的核心指南&#xff1a; 1. 安装 …

基于Spring Boot + MyBatis-Plus + Thymeleaf的评论管理系统深度解析

你好呀&#xff0c;我是小邹。 个人博客系统日渐完善&#xff0c;现在的文章评论以及留言数量逐渐增多&#xff0c;所以今天重构了管理后台的评论列表&#xff08;全量查询 -> 分页条件搜索&#xff09;。 示例图 网页端手机端一、系统架构设计与技术选型 系统采用前后端分离…

sqlmap学习笔记ing(1.Easy_SQLi(时间,表单注入))

题解 根据题目提示&#xff0c;应为SQL注入&#xff0c;题目页面只有一个表单&#xff0c;用sqlmap进行表单注入。 使用--forms参数进行自动化表单注入&#xff0c;逐步得到flag。 ### 总结参数作用&#xff1a; -u 指定目标URL。 -C 指定列名&#xff08;多个…

SciPy 安装使用教程

一、SciPy 简介 SciPy&#xff08;Scientific Python&#xff09;是基于 NumPy 的开源科学计算库&#xff0c;提供了数值积分、优化、信号处理、线性代数、统计分析等高级科学计算功能。它是构建 Python 科学计算生态系统的核心组件之一&#xff0c;常用于科研、工程、数据分析…

【AI大模型】通义大模型与现有企业系统集成实战《CRM案例分析与安全最佳实践》

简介&#xff1a; 本文档详细介绍了基于通义大模型的CRM系统集成架构设计与优化实践。涵盖混合部署架构演进&#xff08;新增向量缓存、双通道同步&#xff09;、性能基准测试对比、客户意图分析模块、商机预测系统等核心功能实现。同时&#xff0c;深入探讨了安全防护体系、三…

如何进行需求全周期管理

实现高效的需求全周期管理&#xff0c;应从以下五个方面入手&#xff1a;1、建立系统化需求来源渠道、2、设置清晰的评审与优先级策略、3、加强执行过程的协同与跟踪、4、闭环需求验收与上线反馈、5、构建长期的需求知识沉淀机制。 其中&#xff0c;“加强执行过程的协同与跟踪…

热传导方程能量分析与边界条件研究

题目 问题 10. (a) 考虑热传导方程在 J = ( − ∞ , ∞ ) J = (-\infty, \infty) J=(−∞,∞) 上,证明“能量” E ( t ) = ∫ J u 2 ( x , t ) d x E(t) = \int_{J} u^{2}(x,t) dx E(t)=∫J​u2(x,t)dx (8) 不增加;进一步证明,除非 u ( x , t ) = 常数 u(x,t) = \text{常…