You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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()

代码说明

  1. 共享状态管理:用current_money存储金币数,game_running控制线程是否继续运行
  2. 后台线程:设置为daemon=True,主线程退出时后台线程会自动终止,无需手动处理
  3. 输入处理:主线程循环等待用户输入,所有操作都不会阻塞后台的金钱生成
  4. 输出优化:用\r覆盖当前行打印金币,避免每次生成都换行刷屏

这样就能实现后台持续赚钱,同时用户可以随时输入指令执行操作的需求。

内容的提问来源于stack exchange,提问作者HelloLearnerC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 09:24:53