当前位置: 首页 > news >正文

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.lryc.cn/news/576677.html

相关文章:

  • 如何让ChatGPT模仿人类写作,降低AIGC率?
  • SpringBoot3.x整合Knife4j接口文档
  • cocos creator 3.8 - 精品源码 - 六边形消消乐(六边形叠叠乐、六边形堆叠战士)
  • 阿里 Qwen3 模型更新,吉卜力风格get
  • (五)神经网络
  • 【数据标注师】线标注
  • Linux软连接和硬连接
  • 复杂驱动开发-TLE9471的休眠流程与定时唤醒
  • 断路器、空气开关、漏电保护器
  • 【扩欧应用】同余方程
  • 概述-4-通用语法及分类
  • 领域驱动设计(DDD)【21】之值对象的优势
  • WebRTC(十二):DTLS
  • PowerBI 柱状图显示MoM销量环比示例,以及解决相同列值时设置柱子颜色的问题
  • 【转】PostgreSql的镜像地址
  • 一个简单测试Deepseek吞吐量的脚本,国内环境可跑
  • QTreeWidget 简单使用
  • web自动化测试常见函数
  • 西门子S7-200 SMART PLC:小型自动化领域的高效之选
  • 华为云鸿蒙应用入门级开发者认证 实验部分题目及操作步骤
  • 基于Uniapp+SpringBoot+Vue 的在线商城小程序
  • AI 在金融领域的落地实践:从智能风控到量化交易的技术突破与案例解析
  • 【Docker基础】Docker容器管理:docker stats及其参数详解
  • 使用asyncio构建高性能网络爬虫
  • 华为云Flexus+DeepSeek征文|基于Dify构建AI资讯语音播报工作流
  • Python pyserial库【串口通信】全面讲解
  • 从傅立叶级数到傅里叶变换和离散傅里叶变换及其逆变换:FS FT DFT IDFT
  • 华为云Flexus+DeepSeek征文 | 华为云ModelArts Studio实战指南:创建高效的AingDesk知识库问答助手
  • Java锁机制知识点
  • Java安装与使用教程