用python实现一个文字挂机游戏(可以保存游戏进度)

下面是一个简单的文字挂机游戏的 Python 代码示例,该游戏使用了 random 和 time 模块来模拟随机事件和时间流逝,还使用了 shelve 模块来保存游戏进度。

import random  
import time  
import shelve  
  
# 定义游戏相关参数  
max_level = 100  
experience = 0  
level = 1  
money = 0  
inventory = []  
  
# 定义游戏存档文件名  
save_file = "game_save.dat"  
  
# 加载游戏存档,如果文件不存在则创建新存档  
try:  
    save = shelve.open(save_file)  
    experience = save["experience"]  
    level = save["level"]  
    money = save["money"]  
    inventory = save["inventory"]  
    save.close()  
except FileNotFoundError:  
    pass  
  
# 游戏循环  
while True:  
    # 显示当前游戏状态  
    print(f"Level: {level}, Experience: {experience}, Money: {money}")  
    print("Inventory:", inventory)  
    print()  
  
    # 等待一段时间,模拟时间流逝  
    time.sleep(1)  
  
    # 随机事件发生概率  
    event_probability = 0.1  
  
    # 判断是否发生随机事件  
    if random.random() < event_probability:  
        # 随机事件发生,根据当前等级有一定概率获得物品或金币或经验值  
        if random.random() < 0.2 and level <= max_level:  
            experience += random.randint(1, 5)  
            print("获得了一些经验值!")  
        elif random.random() < 0.3:  
            money += random.randint(1, 5)  
            print("获得了一些金币!")  
        else:  
            inventory.append(random.choice(["武器", "装备", "道具"]))  
            print("获得了一些物品!")  
    else:  
        # 没有发生随机事件,根据当前等级有一定概率升级或获得金币或没有变化  
        if random.random() < 0.2 and level <= max_level:  
            experience += random.randint(10, 20)  
            level += 1  
            money += random.randint(10, 20)  
            print("升级了!")  
        elif random.random() < 0.3:  
            money += random.randint(1, 5)  
            print("获得了一些金币!")  
        else:  
            print("没有变化。")  
  
    # 将游戏状态保存到存档中  
    save = shelve.open(save_file)  
    save["experience"] = experience  
    save["level"] = level  
    save["money"] = money  
    save["inventory"] = inventory  
    save.close()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值