mirror of
http://junepve.top:3000/chicrobot/CINC.git
synced 2026-10-29 22:41:29 +08:00
feat(SS) 添加信息栏场景
This commit is contained in:
1 parent
0bba26618f
commit
04f41adf27
4 files changed
+886
-4
No files matched your search
@@ -59,7 +59,7 @@ import WorldLand from './src/scenes/WorldLand.js';
|
|||||||
import BreatheLife from './src/scenes/BreatheLife.js';
|
import BreatheLife from './src/scenes/BreatheLife.js';
|
||||||
// 伏羲画卦,创建角色控制、信息栏与多语言
|
// 伏羲画卦,创建角色控制、信息栏与多语言
|
||||||
import Control from './src/scenes/Control.js';
|
import Control from './src/scenes/Control.js';
|
||||||
// import InfoBar from './src/scenes/InfoBar.js';
|
import InfoBar from './src/scenes/InfoBar.js';
|
||||||
// import MultiLanguage from './src/scenes/MultiLanguage.js';
|
// import MultiLanguage from './src/scenes/MultiLanguage.js';
|
||||||
// // 钻木取火,添加光影与合成系统
|
// // 钻木取火,添加光影与合成系统
|
||||||
// import Shadow from './src/scenes/Shadow.js';
|
// import Shadow from './src/scenes/Shadow.js';
|
||||||
@@ -78,11 +78,12 @@ const config = {
|
|||||||
...gameConfig,
|
...gameConfig,
|
||||||
// 指定游戏使用的场景列表,包括主场景和所有测试场景
|
// 指定游戏使用的场景列表,包括主场景和所有测试场景
|
||||||
scene: [
|
scene: [
|
||||||
Control,
|
|
||||||
PrimordialDevide,
|
PrimordialDevide,
|
||||||
WorldTime,
|
WorldTime,
|
||||||
WorldLand,
|
WorldLand,
|
||||||
BreatheLife,
|
BreatheLife,
|
||||||
|
Control,
|
||||||
|
InfoBar,
|
||||||
|
|
||||||
// 测试场景
|
// 测试场景
|
||||||
MenuScene,
|
MenuScene,
|
||||||
|
|||||||
@@ -46,8 +46,6 @@ export default class Control extends BreatheLife {
|
|||||||
// 初始化团队目标点
|
// 初始化团队目标点
|
||||||
this.teamTargetPoint = null // 团队目标移动点
|
this.teamTargetPoint = null // 团队目标移动点
|
||||||
}
|
}
|
||||||
// Control 场景不再需要覆盖 initSceneTransition 方法
|
|
||||||
// 数组初始化由父类 BreatheLife.create() 中的 initSceneTransition() 完成
|
|
||||||
initInput() {
|
initInput() {
|
||||||
// 移除父类的输入事件监听器,避免重复监听
|
// 移除父类的输入事件监听器,避免重复监听
|
||||||
super.removeListener()
|
super.removeListener()
|
||||||
@@ -68,6 +66,12 @@ export default class Control extends BreatheLife {
|
|||||||
update() {
|
update() {
|
||||||
super.update()
|
super.update()
|
||||||
|
|
||||||
|
// 检查小草是否被收集完
|
||||||
|
if (this.smallGrassObjects.length === 0) {
|
||||||
|
console.log("所有小草已被收集")
|
||||||
|
// 切换到下一个场景
|
||||||
|
this.scene.start(this.nextScene)
|
||||||
|
}
|
||||||
// 更新所有NPC
|
// 更新所有NPC
|
||||||
this.NPCObjects.forEach(npc => {
|
this.NPCObjects.forEach(npc => {
|
||||||
if (npc.update) {
|
if (npc.update) {
|
||||||
|
|||||||
@@ -0,0 +1,76 @@
|
|||||||
|
/**
|
||||||
|
* InfoBar 场景类
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
import Control from "./Control.js"
|
||||||
|
export default class InfoBar extends Control {
|
||||||
|
constructor(sceneKey = 'InfoBar') {
|
||||||
|
// 场景相关
|
||||||
|
super(sceneKey)
|
||||||
|
this.nextScene = 'MultiLanguage'
|
||||||
|
}
|
||||||
|
async preload() {
|
||||||
|
super.preload()
|
||||||
|
}
|
||||||
|
create() {
|
||||||
|
super.create()
|
||||||
|
// 创建信息栏
|
||||||
|
this.createInfoBar()
|
||||||
|
}
|
||||||
|
initSceneTransition() {
|
||||||
|
super.initSceneTransition()
|
||||||
|
}
|
||||||
|
initInput() {
|
||||||
|
// 移除父类的输入事件监听器,避免重复监听
|
||||||
|
super.removeListener()
|
||||||
|
// 监听鼠标点击事件,同时处理左右键
|
||||||
|
this.input.on('pointerdown', (pointer) => {
|
||||||
|
const { x, y } = this.input.activePointer
|
||||||
|
// 检查是否点击在UI区域
|
||||||
|
if (this.isUIClicked(x, y)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (pointer.rightButtonDown()) {
|
||||||
|
// 右键点击
|
||||||
|
this.handleRightClick(x, y)
|
||||||
|
} else {
|
||||||
|
// 左键点击
|
||||||
|
this.handleClick(x, y, pointer)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
update() {
|
||||||
|
super.update()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建信息栏
|
||||||
|
*/
|
||||||
|
createInfoBar() {
|
||||||
|
// 创建信息栏容器
|
||||||
|
this.infoBarContainer = this.add.container(0, 0)
|
||||||
|
this.infoBarContainer.setDepth(this.UIDepth) // 设置深度,确保在UI层级
|
||||||
|
this.infoBarContainer.setScrollFactor(0) // 固定,不随相机移动
|
||||||
|
// 创建信息栏背景
|
||||||
|
// const infoBarBg = this.add.image(0, 0, 'infoBarBg')
|
||||||
|
// 灰色半透明
|
||||||
|
const infoBarBg = this.add.graphics()
|
||||||
|
infoBarBg.fillStyle(0x808080, 0.5)
|
||||||
|
infoBarBg.fillRect(0, 0, this.sys.game.config.width, 100)
|
||||||
|
this.infoBarContainer.add(infoBarBg)
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 检查是否点击在UI区域
|
||||||
|
* @param {number} x - 点击位置的x坐标
|
||||||
|
* @param {number} y - 点击位置的y坐标
|
||||||
|
* @returns {boolean} - 如果点击在UI区域,返回true;否则返回false
|
||||||
|
*/
|
||||||
|
isUIClicked(x, y) {
|
||||||
|
// 检查点击位置是否在信息栏容器内
|
||||||
|
return this.infoBarContainer.getBounds().contains(x, y)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,801 @@
|
|||||||
|
import random
|
||||||
|
import time
|
||||||
|
from collections import Counter
|
||||||
|
|
||||||
|
class 饰品大亨:
|
||||||
|
def __init__(self, verbose=False, manual=False):
|
||||||
|
self.分数 = 50
|
||||||
|
self.轮数 = 0
|
||||||
|
self.总轮数 = 10
|
||||||
|
self.店名 = ""
|
||||||
|
self.店铺类型 = ""
|
||||||
|
self.分店数 = 0
|
||||||
|
self.客流量 = 50
|
||||||
|
self.品牌价值 = 50
|
||||||
|
self.现金流 = 50
|
||||||
|
self.事件记录 = []
|
||||||
|
self.verbose = verbose
|
||||||
|
self.manual = manual
|
||||||
|
|
||||||
|
def 显示状态(self):
|
||||||
|
if not self.verbose:
|
||||||
|
return
|
||||||
|
print("=" * 60)
|
||||||
|
print(f"🏪 {self.店名}({self.店铺类型}) 经营状况 (第{self.轮数}/{self.总轮数}轮)")
|
||||||
|
print("=" * 60)
|
||||||
|
print(f"💰 综合分数: {self.分数} | 🏢 分店数: {self.分店数}")
|
||||||
|
print(f"👥 客流量: {self.客流量} | 💎 品牌价值: {self.品牌价值} | 💵 现金流: {self.现金流}")
|
||||||
|
print("-" * 60)
|
||||||
|
|
||||||
|
def 应用效果(self, 分数变, 分店变, 客流变, 现金变, 品牌变, 描述):
|
||||||
|
旧分数 = self.分数
|
||||||
|
旧现金流 = self.现金流
|
||||||
|
旧客流量 = self.客流量
|
||||||
|
旧品牌价值 = self.品牌价值
|
||||||
|
旧分店数 = self.分店数
|
||||||
|
|
||||||
|
self.分数 += 分数变
|
||||||
|
self.分店数 = max(0, self.分店数 + 分店变)
|
||||||
|
self.客流量 = max(0, min(100, self.客流量 + 客流变))
|
||||||
|
self.现金流 += 现金变
|
||||||
|
self.品牌价值 = max(0, min(100, self.品牌价值 + 品牌变))
|
||||||
|
self.事件记录.append(f"第{self.轮数}轮: {描述}")
|
||||||
|
|
||||||
|
if self.verbose:
|
||||||
|
print(f"✨ {描述}")
|
||||||
|
|
||||||
|
# 资金变化描述(重点突出)
|
||||||
|
if 现金变 > 0:
|
||||||
|
print(f"💰 资金增加 +{现金变}万,现在有{self.现金流}万")
|
||||||
|
elif 现金变 < 0:
|
||||||
|
print(f"� 资金减少 {现金变}万,现在有{self.现金流}万")
|
||||||
|
else:
|
||||||
|
print(f"💰 资金保持{self.现金流}万")
|
||||||
|
|
||||||
|
# 分数变化描述
|
||||||
|
if 分数变 > 0:
|
||||||
|
print(f"� 综合分数提升 +{分数变},从{旧分数}→{self.分数}")
|
||||||
|
elif 分数变 < 0:
|
||||||
|
print(f"📉 综合分数下降 {分数变},从{旧分数}→{self.分数}")
|
||||||
|
|
||||||
|
# 其他参数变化描述
|
||||||
|
变化列表 = []
|
||||||
|
if 客流变 != 0:
|
||||||
|
if 客流变 > 0:
|
||||||
|
变化列表.append(f"客流量+{客流变}({旧客流量}→{self.客流量})")
|
||||||
|
else:
|
||||||
|
变化列表.append(f"客流量{客流变}({旧客流量}→{self.客流量})")
|
||||||
|
|
||||||
|
if 品牌变 != 0:
|
||||||
|
if 品牌变 > 0:
|
||||||
|
变化列表.append(f"品牌价值+{品牌变}({旧品牌价值}→{self.品牌价值})")
|
||||||
|
else:
|
||||||
|
变化列表.append(f"品牌价值{品牌变}({旧品牌价值}→{self.品牌价值})")
|
||||||
|
|
||||||
|
if 分店变 != 0:
|
||||||
|
if 分店变 > 0:
|
||||||
|
变化列表.append(f"分店数+{分店变}({旧分店数}→{self.分店数})")
|
||||||
|
else:
|
||||||
|
变化列表.append(f"分店数{分店变}({旧分店数}→{self.分店数})")
|
||||||
|
|
||||||
|
if 变化列表:
|
||||||
|
print(f"📈 其他变化: {', '.join(变化列表)}")
|
||||||
|
|
||||||
|
def 选择店铺类型(self):
|
||||||
|
if self.verbose:
|
||||||
|
print("🌟" + "=" * 56 + "🌟")
|
||||||
|
if self.manual:
|
||||||
|
print(" " * 20 + "饰品大亨")
|
||||||
|
else:
|
||||||
|
print(" " * 20 + "饰品大亨:自动模拟版")
|
||||||
|
print("🌟" + "=" * 56 + "🌟")
|
||||||
|
print("\n请选择店铺类型:")
|
||||||
|
print(" 1. 时尚银饰店 (现金流-5, 品牌价值+5, 客流量+5)")
|
||||||
|
print(" 2. 古法金饰店 (现金流-15, 品牌价值+10, 客流量-5)")
|
||||||
|
print(" 3. 潮流合金店 (现金流-0, 品牌价值-5, 客流量+10)")
|
||||||
|
print(" 4. 手工DIY饰品店 (现金流-10, 品牌价值+10)")
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
选 = int(input("请输入选择 (1-4): "))
|
||||||
|
else:
|
||||||
|
选 = random.randint(1, 4)
|
||||||
|
|
||||||
|
if 选 == 1:
|
||||||
|
self.店铺类型 = "时尚银饰店"
|
||||||
|
self.客流量 += 5
|
||||||
|
self.品牌价值 += 5
|
||||||
|
self.现金流 -= 5
|
||||||
|
elif 选 == 2:
|
||||||
|
self.店铺类型 = "古法金饰店"
|
||||||
|
self.品牌价值 += 10
|
||||||
|
self.现金流 -= 15
|
||||||
|
self.客流量 -= 5
|
||||||
|
elif 选 == 3:
|
||||||
|
self.店铺类型 = "潮流合金店"
|
||||||
|
self.客流量 += 10
|
||||||
|
self.品牌价值 -= 5
|
||||||
|
self.现金流 += 5
|
||||||
|
else:
|
||||||
|
self.店铺类型 = "手工DIY饰品店"
|
||||||
|
self.品牌价值 += 10
|
||||||
|
self.现金流 -= 10
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
self.店名 = self.店铺类型
|
||||||
|
else:
|
||||||
|
self.店名 = f"自动模拟{self.店铺类型}"
|
||||||
|
if self.verbose:
|
||||||
|
if self.manual:
|
||||||
|
print(f"\n🎯 你选择了:{self.店铺类型}")
|
||||||
|
else:
|
||||||
|
print(f"\n🎲 自动选择店铺类型:{self.店铺类型}")
|
||||||
|
print(f"你的店铺「{self.店名}」正式成立!\n")
|
||||||
|
|
||||||
|
def 轮次1(self):
|
||||||
|
if self.verbose:
|
||||||
|
print("\n📦 第1轮 · 首次进货")
|
||||||
|
print("请选择进货渠道:")
|
||||||
|
print(" 1. 批发市场 (风险低,收益一般)")
|
||||||
|
print(" 2. 品牌代理 (成本高,品牌价值提升)")
|
||||||
|
print(" 3. 线上进货 (风险高,可能爆款)")
|
||||||
|
print(" 4. 手工设计 (独特风格,可能大获成功)")
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
选 = int(input("请输入选择 (1-4): "))
|
||||||
|
else:
|
||||||
|
选 = random.randint(1, 4)
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
点数 = int(input("请输入骰子点数 (1-6): "))
|
||||||
|
else:
|
||||||
|
点数 = random.randint(1, 6)
|
||||||
|
if self.verbose:
|
||||||
|
print(f" 选择: {选} 点数: {点数}")
|
||||||
|
if 选 == 1:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, 0, 3, -2, "批发市场淘到积压货,质量不佳")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 0, 5, 2, "批发市场淘到一批性价比不错的货")
|
||||||
|
else:
|
||||||
|
self.应用效果(10, 0, 5, 8, 5, "批发市场捡漏,发现小众优质货源")
|
||||||
|
elif 选 == 2:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-3, 0, -2, -5, -2, "品牌代理拖延供货,错失良机")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 2, 5, 5, "与品牌代理顺利合作,品质保证")
|
||||||
|
else:
|
||||||
|
self.应用效果(15, 0, 5, 10, 10, "拿到独家代理,品牌价值大增")
|
||||||
|
elif 选 == 3:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, -5, -3, -3, "物流延误,款式过季")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 5, 8, 2, "线上款式受欢迎,客流增加")
|
||||||
|
else:
|
||||||
|
self.应用效果(15, 0, 15, 15, 5, "线上爆款,一夜成名")
|
||||||
|
else:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, -3, 5, -5, "手工设计不被认可")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 3, 5, 5, "手工饰品小受欢迎")
|
||||||
|
else:
|
||||||
|
self.应用效果(20, 0, 10, 12, 15, "手工设计走红,独特风格吸引顾客")
|
||||||
|
|
||||||
|
def 轮次2(self):
|
||||||
|
if self.verbose:
|
||||||
|
print("\n🎉 第2轮 · 开业促销")
|
||||||
|
print("请选择促销方式:")
|
||||||
|
print(" 1. 价格折扣 (快速引流,可能亏本)")
|
||||||
|
print(" 2. 社交媒体宣传 (可能爆红)")
|
||||||
|
print(" 3. 会员制度 (长期收益)")
|
||||||
|
print(" 4. 口碑营销 (稳健发展)")
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
选 = int(input("请输入选择 (1-4): "))
|
||||||
|
else:
|
||||||
|
选 = random.randint(1, 4)
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
点数 = int(input("请输入骰子点数 (1-6): "))
|
||||||
|
else:
|
||||||
|
点数 = random.randint(1, 6)
|
||||||
|
if self.verbose:
|
||||||
|
print(f" 选择: {选} 点数: {点数}")
|
||||||
|
if 选 == 1:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, 5, -5, -3, "折扣过大,亏本赚吆喝")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 15, 5, 2, "薄利多销,客流上升")
|
||||||
|
else:
|
||||||
|
self.应用效果(10, 0, 25, 10, 5, "人气爆棚,成为话题")
|
||||||
|
elif 选 == 2:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-2, 0, -2, -3, -2, "宣传反响平平")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 10, 5, 5, "小有成效,客流增加")
|
||||||
|
else:
|
||||||
|
self.应用效果(20, 0, 30, 15, 15, "视频爆红,门店排长队")
|
||||||
|
elif 选 == 3:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-1, 0, 0, -2, -1, "会员活动参与度低")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 5, 3, 5, "积累首批会员")
|
||||||
|
else:
|
||||||
|
self.应用效果(15, 0, 15, 8, 10, "会员激增,复购率高")
|
||||||
|
else:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, -5, 3, -3, "无人问津,开业冷清")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(0, 0, 5, 5, 2, "平稳起步,靠口碑慢慢积累")
|
||||||
|
else:
|
||||||
|
self.应用效果(5, 0, 10, 8, 5, "口碑发酵,自然客流不错")
|
||||||
|
|
||||||
|
def 轮次3(self):
|
||||||
|
if self.verbose:
|
||||||
|
print("\n🗣️ 第3轮 · 顾客反馈")
|
||||||
|
print("请选择处理方式:")
|
||||||
|
print(" 1. 主动更换产品 (成本高,挽回声誉)")
|
||||||
|
print(" 2. 忽略投诉 (省钱,可能流失顾客)")
|
||||||
|
print(" 3. 改进产品 (长期投资)")
|
||||||
|
print(" 4. 低调处理 (风险较低)")
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
选 = int(input("请输入选择 (1-4): "))
|
||||||
|
else:
|
||||||
|
选 = random.randint(1, 4)
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
点数 = int(input("请输入骰子点数 (1-6): "))
|
||||||
|
else:
|
||||||
|
点数 = random.randint(1, 6)
|
||||||
|
if self.verbose:
|
||||||
|
print(f" 选择: {选} 点数: {点数}")
|
||||||
|
if 选 == 1:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, 2, -8, 5, "更换成本过高,但挽回部分声誉")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 5, -3, 10, "妥善处理,赢得信任")
|
||||||
|
else:
|
||||||
|
self.应用效果(15, 0, 10, 5, 20, "真诚态度感动顾客,品牌大涨")
|
||||||
|
elif 选 == 2:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-15, 0, -20, -5, -15, "口碑崩塌,顾客大量流失")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(-5, 0, -10, -2, -5, "部分顾客流失,负面影响")
|
||||||
|
else:
|
||||||
|
self.应用效果(-2, 0, -5, 3, -2, "少数人计较,侥幸过关")
|
||||||
|
elif 选 == 3:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, 0, -8, -2, "研发失败,资金打水漂")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 3, -5, 5, "小有改进,产品更可靠")
|
||||||
|
else:
|
||||||
|
self.应用效果(15, 0, 10, -8, 20, "技术突破,品质领先")
|
||||||
|
else:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-15, 0, -15, -10, -20, "被消费者曝光,形象崩塌")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(-3, 0, -5, -3, -5, "悄悄处理,但仍有影响")
|
||||||
|
else:
|
||||||
|
self.应用效果(-1, 0, -2, 0, -2, "侥幸过关,但埋下隐患")
|
||||||
|
|
||||||
|
def 轮次4(self):
|
||||||
|
if self.verbose:
|
||||||
|
print("\n🏁 第4轮 · 市场竞争")
|
||||||
|
print("请选择应对策略:")
|
||||||
|
print(" 1. 价格战 (短期有效,可能亏本)")
|
||||||
|
print(" 2. 差异化定位 (长期优势)")
|
||||||
|
print(" 3. 跨界联名 (合作共赢)")
|
||||||
|
print(" 4. 提升服务 (口碑建设)")
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
选 = int(input("请输入选择 (1-4): "))
|
||||||
|
else:
|
||||||
|
选 = random.randint(1, 4)
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
点数 = int(input("请输入骰子点数 (1-6): "))
|
||||||
|
else:
|
||||||
|
点数 = random.randint(1, 6)
|
||||||
|
if self.verbose:
|
||||||
|
print(f" 选择: {选} 点数: {点数}")
|
||||||
|
if 选 == 1:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-10, 0, 5, -8, -5, "价格战亏本,客流略增")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(-5, 0, 10, -3, 0, "勉强稳住客流")
|
||||||
|
else:
|
||||||
|
self.应用效果(5, 0, 20, 5, 2, "价格战成功,抢回顾客")
|
||||||
|
elif 选 == 2:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, -5, -3, -5, "特色不被认可")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 5, 3, 5, "吸引特定人群")
|
||||||
|
else:
|
||||||
|
self.应用效果(15, 0, 15, 8, 15, "形成独特优势")
|
||||||
|
elif 选 == 3:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, -3, -3, -3, "被对方拒绝")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 5, 3, 5, "勉强合作,客流微增")
|
||||||
|
else:
|
||||||
|
self.应用效果(15, 0, 15, 5, 10, "联名双赢,品牌提升")
|
||||||
|
else:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-2, 0, 2, -3, 0, "服务成本高,效果有限")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 5, 2, 5, "服务受欢迎")
|
||||||
|
else:
|
||||||
|
self.应用效果(15, 0, 15, 5, 10, "服务成招牌")
|
||||||
|
|
||||||
|
def 轮次5(self):
|
||||||
|
if self.verbose:
|
||||||
|
print("\n📱 第5轮 · 直播风口")
|
||||||
|
print("请选择应对方式:")
|
||||||
|
print(" 1. 自己直播 (可能成为网红)")
|
||||||
|
print(" 2. 请主播带货 (成本高,可能爆红)")
|
||||||
|
print(" 3. 专注线下 (稳健发展)")
|
||||||
|
print(" 4. 短视频营销 (积累粉丝)")
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
选 = int(input("请输入选择 (1-4): "))
|
||||||
|
else:
|
||||||
|
选 = random.randint(1, 4)
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
点数 = int(input("请输入骰子点数 (1-6): "))
|
||||||
|
else:
|
||||||
|
点数 = random.randint(1, 6)
|
||||||
|
if self.verbose:
|
||||||
|
print(f" 选择: {选} 点数: {点数}")
|
||||||
|
if 选 == 1:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, -3, -3, -2, "口才不佳,直播效果差")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 5, 3, 3, "小有收获")
|
||||||
|
else:
|
||||||
|
self.应用效果(20, 0, 20, 8, 15, "成为网红店主")
|
||||||
|
elif 选 == 2:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-10, 0, -5, -8, -5, "主播不负责,效果差")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 10, 5, 5, "正常销量")
|
||||||
|
else:
|
||||||
|
self.应用效果(20, 0, 30, 10, 10, "主播带火,销量暴增")
|
||||||
|
elif 选 == 3:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, -10, -5, -3, "线下受冲击")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(0, 0, 0, 0, 0, "维持现状")
|
||||||
|
else:
|
||||||
|
self.应用效果(5, 0, 5, 5, 5, "线下体验优势凸显")
|
||||||
|
else:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-2, 0, -1, -3, -1, "内容无趣")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(3, 0, 2, 3, 5, "少量粉丝")
|
||||||
|
else:
|
||||||
|
self.应用效果(15, 0, 15, 8, 20, "爆款视频,粉丝暴涨")
|
||||||
|
|
||||||
|
def 轮次6(self):
|
||||||
|
if self.verbose:
|
||||||
|
print("\n🏢 第6轮 · 租金谈判")
|
||||||
|
print("请选择应对方式:")
|
||||||
|
print(" 1. 接受涨价 (短期成本高)")
|
||||||
|
print(" 2. 谈判降租 (可能成功)")
|
||||||
|
print(" 3. 换址搬迁 (风险高)")
|
||||||
|
print(" 4. 扩张分店 (压力减小)")
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
选 = int(input("请输入选择 (1-4): "))
|
||||||
|
else:
|
||||||
|
选 = random.randint(1, 4)
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
点数 = int(input("请输入骰子点数 (1-6): "))
|
||||||
|
else:
|
||||||
|
点数 = random.randint(1, 6)
|
||||||
|
if self.verbose:
|
||||||
|
print(f" 选择: {选} 点数: {点数}")
|
||||||
|
if 选 == 1:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-10, 0, -5, -10, -5, "租金过高难以承受")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(-2, 0, 0, -5, 0, "勉强接受")
|
||||||
|
else:
|
||||||
|
self.应用效果(0, 0, 5, 5, 2, "生意好能覆盖")
|
||||||
|
elif 选 == 2:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, -3, -5, -5, "谈判破裂,关系恶化")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(2, 0, 0, 5, 2, "小幅降低租金")
|
||||||
|
else:
|
||||||
|
self.应用效果(10, 0, 5, 8, 5, "成功降租")
|
||||||
|
elif 选 == 3:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-15, 0, -15, -8, -5, "新址更差")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(0, 0, -5, -5, 0, "新址一般")
|
||||||
|
else:
|
||||||
|
self.应用效果(15, 0, 20, -5, 5, "找到黄金地段")
|
||||||
|
else:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-20, -1, -10, -15, -10, "扩张失败,双重打击")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 1, 0, -8, 2, "平稳开分店")
|
||||||
|
else:
|
||||||
|
self.应用效果(20, 1, 15, 5, 10, "分店成功,压力减小")
|
||||||
|
|
||||||
|
def 轮次7(self):
|
||||||
|
if self.verbose:
|
||||||
|
print("\n🔥 第7轮 · 爆款机遇")
|
||||||
|
print("请选择应对策略:")
|
||||||
|
print(" 1. 大量备货 (可能积压)")
|
||||||
|
print(" 2. 饥饿营销 (制造稀缺)")
|
||||||
|
print(" 3. 提价销售 (增加利润)")
|
||||||
|
print(" 4. 开发衍生品 (扩大收益)")
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
选 = int(input("请输入选择 (1-4): "))
|
||||||
|
else:
|
||||||
|
选 = random.randint(1, 4)
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
点数 = int(input("请输入骰子点数 (1-6): "))
|
||||||
|
else:
|
||||||
|
点数 = random.randint(1, 6)
|
||||||
|
if self.verbose:
|
||||||
|
print(f" 选择: {选} 点数: {点数}")
|
||||||
|
if 选 == 1:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-10, 0, -5, -10, -5, "热度过去,积压库存")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(15, 0, 10, 10, 10, "抓住机会,销量大增")
|
||||||
|
else:
|
||||||
|
self.应用效果(25, 0, 15, 20, 20, "成为经典爆款")
|
||||||
|
elif 选 == 2:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, -10, 3, 0, "顾客买不到,转向别家")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(10, 0, 5, 8, 10, "饥饿营销成功")
|
||||||
|
else:
|
||||||
|
self.应用效果(20, 0, 25, 12, 20, "引发抢购热潮")
|
||||||
|
elif 选 == 3:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-15, 0, -15, 5, -10, "顾客反感,口碑下降")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(0, 0, -2, 10, -5, "小幅提价,利润增加")
|
||||||
|
else:
|
||||||
|
self.应用效果(5, 0, 0, 15, 0, "提价成功")
|
||||||
|
else:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, -2, -5, 0, "衍生品无人问津")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(10, 0, 5, 8, 5, "衍生品小受欢迎")
|
||||||
|
else:
|
||||||
|
self.应用效果(20, 0, 10, 15, 15, "衍生品也成爆款")
|
||||||
|
|
||||||
|
def 轮次8(self):
|
||||||
|
if self.verbose:
|
||||||
|
print("\n🔄 第8轮 · 市场变化")
|
||||||
|
if self.店铺类型 == "古法金饰店":
|
||||||
|
print("请选择应对方式:")
|
||||||
|
print(" 1. 深耕黄金市场 (巩固优势)")
|
||||||
|
print(" 2. 坚持原创设计 (长期优势)")
|
||||||
|
print(" 3. 提升服务体验 (口碑建设)")
|
||||||
|
print(" 4. 清仓回笼资金 (现金为王)")
|
||||||
|
else:
|
||||||
|
print("请选择应对方式:")
|
||||||
|
print(" 1. 转型黄金饰品 (风险高)")
|
||||||
|
print(" 2. 坚持原创设计 (长期优势)")
|
||||||
|
print(" 3. 提升服务体验 (口碑建设)")
|
||||||
|
print(" 4. 清仓回笼资金 (现金为王)")
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
选 = int(input("请输入选择 (1-4): "))
|
||||||
|
else:
|
||||||
|
选 = random.randint(1, 4)
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
点数 = int(input("请输入骰子点数 (1-6): "))
|
||||||
|
else:
|
||||||
|
点数 = random.randint(1, 6)
|
||||||
|
if self.verbose:
|
||||||
|
print(f" 选择: {选} 点数: {点数}")
|
||||||
|
|
||||||
|
if 选 == 1:
|
||||||
|
if self.店铺类型 == "古法金饰店":
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, -5, -8, -5, "市场饱和,增长乏力")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(8, 0, 5, 5, 5, "稳步发展,保持优势")
|
||||||
|
else:
|
||||||
|
self.应用效果(20, 0, 10, 12, 15, "成为黄金饰品标杆")
|
||||||
|
else:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-15, 0, -5, -10, -5, "转型失败,两头不讨好")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 5, -5, 5, "部分转型,保留原业务")
|
||||||
|
else:
|
||||||
|
self.应用效果(20, 0, 10, -5, 10, "成功转型黄金饰品")
|
||||||
|
elif 选 == 2:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-10, 0, -10, -5, -5, "设计被忽视")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, -5, 3, 5, "核心顾客支持")
|
||||||
|
else:
|
||||||
|
self.应用效果(15, 0, 10, 5, 15, "设计逆袭")
|
||||||
|
elif 选 == 3:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-2, 0, 0, -3, 0, "服务不受欢迎")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(5, 0, 5, 3, 5, "服务增加粘性")
|
||||||
|
else:
|
||||||
|
self.应用效果(15, 0, 10, 5, 10, "服务成特色")
|
||||||
|
else:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-15, 0, -10, -5, -20, "清仓亏本,品牌大跌")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(0, 0, -5, 10, -5, "平稳清仓")
|
||||||
|
else:
|
||||||
|
self.应用效果(5, 0, -2, 15, -10, "清仓成功,现金充足")
|
||||||
|
|
||||||
|
def 轮次9(self):
|
||||||
|
if self.verbose:
|
||||||
|
print("\n⚠️ 第9轮 · 内部危机")
|
||||||
|
print("请选择应对方式:")
|
||||||
|
print(" 1. 挽留设计师 (成本高)")
|
||||||
|
print(" 2. 培养新人 (长期投资)")
|
||||||
|
print(" 3. 外包设计 (降低成本)")
|
||||||
|
print(" 4. 改革制度 (风险高)")
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
选 = int(input("请输入选择 (1-4): "))
|
||||||
|
else:
|
||||||
|
选 = random.randint(1, 4)
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
点数 = int(input("请输入骰子点数 (1-6): "))
|
||||||
|
else:
|
||||||
|
点数 = random.randint(1, 6)
|
||||||
|
if self.verbose:
|
||||||
|
print(f" 选择: {选} 点数: {点数}")
|
||||||
|
if 选 == 1:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-10, 0, -5, -15, 5, "设计师回归但成本过高")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(0, 0, 0, -10, 10, "设计师回归,稳定局面")
|
||||||
|
else:
|
||||||
|
self.应用效果(10, 0, 5, -5, 20, "设计师带回新资源")
|
||||||
|
elif 选 == 2:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-10, 0, -10, -5, -10, "新人能力不足,客户流失")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(0, 0, -5, -3, 5, "新人勉强胜任")
|
||||||
|
else:
|
||||||
|
self.应用效果(10, 0, 5, 3, 15, "新人带来新灵感")
|
||||||
|
elif 选 == 3:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, -3, -5, -5, "外包设计质量差")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(3, 0, 0, -3, 2, "外包设计及格")
|
||||||
|
else:
|
||||||
|
self.应用效果(8, 0, 5, -5, 8, "外包设计出彩")
|
||||||
|
else:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-15, 0, -10, -8, -10, "改革失败,老客不满")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(0, 0, -5, -5, 5, "改革缓慢推进")
|
||||||
|
else:
|
||||||
|
self.应用效果(15, 0, 10, -5, 20, "改革成功,焕然一新")
|
||||||
|
|
||||||
|
def 轮次10(self):
|
||||||
|
if self.verbose:
|
||||||
|
print("\n🏁 第10轮 · 最后冲刺")
|
||||||
|
print("请选择最后策略:")
|
||||||
|
print(" 1. 扩张分店 (可能成功或失败)")
|
||||||
|
print(" 2. 打造网红店 (可能成为地标)")
|
||||||
|
print(" 3. 高位套现 (出售店铺)")
|
||||||
|
print(" 4. 稳健经营 (维持现状)")
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
选 = int(input("请输入选择 (1-4): "))
|
||||||
|
else:
|
||||||
|
选 = random.randint(1, 4)
|
||||||
|
|
||||||
|
if self.manual:
|
||||||
|
点数 = int(input("请输入骰子点数 (1-6): "))
|
||||||
|
else:
|
||||||
|
点数 = random.randint(1, 6)
|
||||||
|
if self.verbose:
|
||||||
|
print(f" 选择: {选} 点数: {点数}")
|
||||||
|
if 选 == 1:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-30, -2, -10, -15, -15, "盲目扩张导致崩溃")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(10, 1, 5, -8, 5, "稳健扩张")
|
||||||
|
else:
|
||||||
|
self.应用效果(20, 2, 10, 5, 10, "成功扩张,分店增加")
|
||||||
|
elif 选 == 2:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-5, 0, -5, -5, -5, "网红热度难持久")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(10, 0, 10, 5, 10, "成为小有名气的网红店")
|
||||||
|
else:
|
||||||
|
self.应用效果(20, 0, 20, 10, 20, "成为城市地标")
|
||||||
|
elif 选 == 3:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(5, 0, 0, 15, -10, "低价出售")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(15, 0, 0, 30, -5, "合理价格出售")
|
||||||
|
else:
|
||||||
|
self.应用效果(30, 0, 0, 45, 0, "高价套现")
|
||||||
|
else:
|
||||||
|
if 点数 <= 2:
|
||||||
|
self.应用效果(-10, 0, -5, -5, -3, "经营困难")
|
||||||
|
elif 点数 <= 4:
|
||||||
|
self.应用效果(0, 0, 0, 0, 0, "平稳维持")
|
||||||
|
else:
|
||||||
|
self.应用效果(5, 0, 2, 5, 2, "略有盈余")
|
||||||
|
|
||||||
|
def 判断结局(self):
|
||||||
|
if self.verbose:
|
||||||
|
print("\n" + "=" * 60)
|
||||||
|
print("🏆 游戏结束!最终结局判定")
|
||||||
|
print("=" * 60)
|
||||||
|
|
||||||
|
综合评分 = self.分数 + self.现金流 // 5
|
||||||
|
|
||||||
|
if 综合评分 >= 100 and self.分店数 >= 3:
|
||||||
|
结局 = "连锁之巅·品牌霸主"
|
||||||
|
描述 = "你打造了饰品帝国,成为行业标杆,分店遍布全国!"
|
||||||
|
elif 综合评分 >= 90 and self.品牌价值 > 70:
|
||||||
|
结局 = "直播涅槃·流量新生"
|
||||||
|
描述 = "你成功转型直播带货,线上线下融合,流量源源不断!"
|
||||||
|
elif 综合评分 >= 85:
|
||||||
|
结局 = "高位套现·全身而退"
|
||||||
|
描述 = "你在市场高点卖出店铺,带着财富优雅离场。"
|
||||||
|
elif 75 <= 综合评分 < 85:
|
||||||
|
结局 = "社区之光·网红传奇"
|
||||||
|
描述 = "你成为社区网红店,虽然规模不大但口碑极佳。"
|
||||||
|
elif 65 <= 综合评分 < 75:
|
||||||
|
结局 = "收支平衡·情怀续航"
|
||||||
|
描述 = "勉强维持经营,靠着一份情怀继续坚持。"
|
||||||
|
elif 55 <= 综合评分 < 65:
|
||||||
|
结局 = "薄利长流·黄金微光"
|
||||||
|
描述 = "微利经营,如同黄金微光般微弱但持续,细水长流。"
|
||||||
|
elif 35 <= 综合评分 < 55:
|
||||||
|
结局 = "同质困局·黯然退场"
|
||||||
|
描述 = "设计缺乏创新,被市场淘汰,最终黯然关门。"
|
||||||
|
elif 20 <= 综合评分 < 35:
|
||||||
|
结局 = "租金绞杀·数据废墟"
|
||||||
|
描述 = "高租金压垮了你的梦想,店铺变成数据废墟。"
|
||||||
|
elif 0 <= 综合评分 < 20:
|
||||||
|
结局 = "品牌贬值·二手踩踏"
|
||||||
|
描述 = "品牌价值归零,二手市场10元回收都没人要。"
|
||||||
|
else:
|
||||||
|
结局 = "降级求生·缩水危机"
|
||||||
|
描述 = "从门店沦为柜台,最终消失在商场角落。"
|
||||||
|
|
||||||
|
if self.verbose:
|
||||||
|
print(f"\n✨ 结局: {结局}")
|
||||||
|
print(f"📖 {描述}")
|
||||||
|
print(f"📊 最终数据 - 综合评分:{综合评分} 分数:{self.分数} 现金流:{self.现金流} 分店:{self.分店数} 品牌:{self.品牌价值}")
|
||||||
|
print(f"\n💰 最终奖励: {self.现金流} 万")
|
||||||
|
print("\n📜 经营大事记:")
|
||||||
|
for i, 事 in enumerate(self.事件记录[-5:], 1):
|
||||||
|
print(f" {i}. {事}")
|
||||||
|
return 结局
|
||||||
|
|
||||||
|
def 运行(self, verbose=False):
|
||||||
|
self.verbose = verbose
|
||||||
|
self.选择店铺类型()
|
||||||
|
while self.轮数 < self.总轮数:
|
||||||
|
self.轮数 += 1
|
||||||
|
self.显示状态()
|
||||||
|
剧情函数 = getattr(self, f"轮次{self.轮数}", None)
|
||||||
|
if 剧情函数:
|
||||||
|
剧情函数()
|
||||||
|
else:
|
||||||
|
if self.verbose:
|
||||||
|
print(f"错误:未定义第{self.轮数}轮剧情")
|
||||||
|
break
|
||||||
|
# 自然波动
|
||||||
|
self.分数 += random.randint(-1, 2)
|
||||||
|
self.分数 = max(0, self.分数)
|
||||||
|
if self.verbose:
|
||||||
|
print() # 加一个空行分隔轮次
|
||||||
|
self.显示状态()
|
||||||
|
结局 = self.判断结局()
|
||||||
|
if self.verbose:
|
||||||
|
print("\n" + "=" * 60)
|
||||||
|
print("模拟完成!")
|
||||||
|
return self.分数, self.现金流, 结局
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
print("=" * 60)
|
||||||
|
print("饰品大亨 - 游戏模式选择")
|
||||||
|
print("=" * 60)
|
||||||
|
print("1. 手动游玩模式")
|
||||||
|
print("2. 自动模拟模式 (运行10000次)")
|
||||||
|
|
||||||
|
模式 = input("\n请选择模式 (1/2): ").strip()
|
||||||
|
|
||||||
|
if 模式 == "1":
|
||||||
|
print("\n开始手动游玩模式!")
|
||||||
|
游戏 = 饰品大亨(verbose=True, manual=True)
|
||||||
|
游戏.运行(verbose=True)
|
||||||
|
else:
|
||||||
|
print("\n开始自动模拟模式...")
|
||||||
|
# 运行10000次模拟,统计平均分数和众数
|
||||||
|
random.seed(time.time())
|
||||||
|
scores = []
|
||||||
|
cashflows = []
|
||||||
|
综合评分列表 = []
|
||||||
|
outcomes = []
|
||||||
|
for i in range(100000):
|
||||||
|
游戏 = 饰品大亨(verbose=False)
|
||||||
|
分数, 现金流, 结局 = 游戏.运行(verbose=False)
|
||||||
|
scores.append(分数)
|
||||||
|
cashflows.append(现金流)
|
||||||
|
综合评分列表.append(分数 + 现金流 // 5)
|
||||||
|
outcomes.append(结局)
|
||||||
|
if (i+1) % 1000 == 0:
|
||||||
|
print(f"已完成 {i+1} 次模拟...")
|
||||||
|
|
||||||
|
# 总体统计
|
||||||
|
平均分 = sum(scores) / len(scores)
|
||||||
|
分数众数 = Counter(scores).most_common(1)[0][0]
|
||||||
|
分数众数次数 = Counter(scores).most_common(1)[0][1]
|
||||||
|
平均现金流 = sum(cashflows) / len(cashflows)
|
||||||
|
现金流众数 = Counter(cashflows).most_common(1)[0][0]
|
||||||
|
现金流众数次数 = Counter(cashflows).most_common(1)[0][1]
|
||||||
|
平均综合评分 = sum(综合评分列表) / len(综合评分列表)
|
||||||
|
综合评分众数 = Counter(综合评分列表).most_common(1)[0][0]
|
||||||
|
综合评分众数次数 = Counter(综合评分列表).most_common(1)[0][1]
|
||||||
|
|
||||||
|
print(f"\n=== 100000次模拟总体统计 ===")
|
||||||
|
print(f"平均分数: {平均分:.2f}")
|
||||||
|
print(f"分数众数: {分数众数} (出现 {分数众数次数} 次)")
|
||||||
|
print(f"平均现金流: {平均现金流:.2f}")
|
||||||
|
print(f"现金流众数: {现金流众数} (出现 {现金流众数次数} 次)")
|
||||||
|
print(f"平均综合评分: {平均综合评分:.2f}")
|
||||||
|
print(f"综合评分众数: {综合评分众数} (出现 {综合评分众数次数} 次)")
|
||||||
|
|
||||||
|
# 各结局统计
|
||||||
|
结局统计 = {}
|
||||||
|
for 结局, 分数, 现金流, 综合评分 in zip(outcomes, scores, cashflows, 综合评分列表):
|
||||||
|
if 结局 not in 结局统计:
|
||||||
|
结局统计[结局] = {'分数': [], '现金流': [], '综合评分': []}
|
||||||
|
结局统计[结局]['分数'].append(分数)
|
||||||
|
结局统计[结局]['现金流'].append(现金流)
|
||||||
|
结局统计[结局]['综合评分'].append(综合评分)
|
||||||
|
|
||||||
|
# 计算全局最大最小值
|
||||||
|
最大分数 = max(scores)
|
||||||
|
最小分数 = min(scores)
|
||||||
|
最大现金流 = max(cashflows)
|
||||||
|
最小现金流 = min(cashflows)
|
||||||
|
|
||||||
|
print(f"\n=== 全局统计 ===")
|
||||||
|
print(f"分数 - 最大值: {最大分数}, 最小值: {最小分数}")
|
||||||
|
print(f"现金流 - 最大值: {最大现金流}, 最小值: {最小现金流}")
|
||||||
|
|
||||||
|
print(f"\n=== 各结局详细统计 ===")
|
||||||
|
print(f"{'结局':<30} {'次数':>6} {'平均分':>8} {'分数众数':>8} {'平均现金流':>10} {'现金流众数':>10}")
|
||||||
|
print("-" * 82)
|
||||||
|
for 结局, 次数 in Counter(outcomes).most_common():
|
||||||
|
分数列表 = 结局统计[结局]['分数']
|
||||||
|
现金流列表 = 结局统计[结局]['现金流']
|
||||||
|
综合评分列表 = 结局统计[结局]['综合评分']
|
||||||
|
平均分 = sum(分数列表) / len(分数列表)
|
||||||
|
分数众数 = Counter(分数列表).most_common(1)[0][0]
|
||||||
|
平均现金流 = sum(现金流列表) / len(现金流列表)
|
||||||
|
现金流众数 = Counter(现金流列表).most_common(1)[0][0]
|
||||||
|
平均综合评分 = sum(综合评分列表) / len(综合评分列表)
|
||||||
|
综合评分众数 = Counter(综合评分列表).most_common(1)[0][0]
|
||||||
|
|
||||||
|
print(f"{结局:<30} {次数:>6} {平均分:>8.2f} {分数众数:>8} {平均现金流:>10.2f} {现金流众数:>10}")
|
||||||
|
|
||||||
|
最大次数 = Counter(outcomes).most_common(1)[0][1]
|
||||||
|
最常结局 = [结局 for 结局, 次数 in Counter(outcomes).items() if 次数 == 最大次数]
|
||||||
|
print(f"\n最常出现的结局: {'、'.join(最常结局)} (出现 {最大次数} 次)")
|
||||||
Reference in new issue
Block a user