如何用Python Threading实现放置游戏的每秒赚钱系统?
解决放置游戏「每秒赚钱」+ 用户输入并行问题
你的核心问题是原代码重复创建线程、阻塞逻辑混乱,正确的做法是让后台赚钱线程持续运行,主线程专注处理用户输入,两者并行不干扰。
正确实现思路
- 启动一个后台线程负责每秒生成金钱,循环执行直到游戏终止
- 主线程持续处理用户输入,不阻塞后台线程
- 用共享状态存储当前金钱,用控制变量管理线程启停
修正后的代码示例
import time import threading # 共享游戏状态 current_money = 0 game_running = True def money_generator(): """后台每秒生成金钱的线程函数""" global current_money while game_running: current_money += 10 # 每秒赚10金币 print(f"\r当前金币: {current_money}", end="") # 用\r覆盖行,避免刷屏 time.sleep(1) def handle_user_input(): """处理用户输入的主函数""" global game_running print("放置游戏启动!输入指令操作:") print("- 'check':查看当前金币") print("- 'exit':退出游戏") while game_running: cmd = input("\n请输入指令:").strip().lower() if cmd == "check": print(f"当前金币: {current_money}") elif cmd == "exit": game_running = False print("游戏结束,正在退出...") else: print("未知指令,请重新输入") if __name__ == "__main__": # 启动后台赚钱线程 money_thread = threading.Thread(target=money_generator, daemon=True) money_thread.start() # 主线程处理用户输入 handle_user_input() # 等待后台线程结束(可选,因为daemon线程会随主线程退出) money_thread.join()
代码说明
- 共享状态管理:用
current_money存储金币数,game_running控制线程是否继续运行 - 后台线程:设置为
daemon=True,主线程退出时后台线程会自动终止,无需手动处理 - 输入处理:主线程循环等待用户输入,所有操作都不会阻塞后台的金钱生成
- 输出优化:用
\r覆盖当前行打印金币,避免每次生成都换行刷屏
这样就能实现后台持续赚钱,同时用户可以随时输入指令执行操作的需求。
内容的提问来源于stack exchange,提问作者HelloLearnerC
相关产品推荐
相关产品推荐

