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
英文地址,請注明出處:http://en.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{常…