魔都i启航是一款经营模拟游戏,玩家在大都市中,通过买卖各种商品来积累财富,同时要处理债务、健康和各种随机事件。本开源项目是基于 北京浮生记 (由Guo Xianghao于2000-2001年)开发。 魔都i启航,成为一名荣耀上海滩的现代企业家
- 💬 ChatGPT风格对话界面: 通过自然语言对话进行游戏操作
- 🤖 智能AI助手: 游戏助手会引导你完成各种操作
- 🎨 Element Plus UI组件: 使用企业级Vue组件库,提升界面质量
- 📱 响应式设计: 完美适配桌面和移动设备
- ⚡ 现代化UI: 流畅动画和精美界面设计
- 🛒 8城市商品系统:北京、上海、广州、深圳、杭州、苏州、天津、青岛,每座城市有独特的商品和特色
- 📈 动态价格系统:商品价格实时波动,城市特色事件影响黑市
- 🏢 完整的建筑/服务系统:银行、医院、工地、房屋扩建、邮局、出行(高铁/飞机)等
- 🎲 随机事件系统:商业事件、健康伤害事件、财务损失事件,每座城市都有独特的事件
- 🌍 多城市旅行系统:可以在不同城市间旅行,体验不同城市的商品黑市和文化特色
- 📦 PWA支持:可安装为桌面应用,支持离线访问
- 前端框架: Vue 3 + TypeScript
- 状态管理: Pinia
- 路由: Vue Router
- UI组件库: Element Plus + Element Plus X
- 构建工具: Vite
- 样式: Element Plus + Tailwind CSS + 自定义CSS
- PWA: Vite PWA Plugin (Workbox)
pnpm installpnpm devpnpm build# 允许构建脚本(首次/依赖变更后执行)
pnpm approve-builds
# 开发模式(桌面 + Vite dev server)
pnpm tauri:dev
# 打包桌面应用(macOS 产物在 src-tauri/target/release/bundle/macos)
pnpm tauri:buildpnpm lint- 现金: 2000元
- 债务: 5000元 (每周利息10%)
- 银行存款: 0元 (每周利息1%)
- 健康: 100点
- 名声: 100点
- 仓库容量: 100单位
- 每周循环: 生成商品价格 → 处理财务 → 随机事件 → 时间递减
- 商品交易: 在黑市购买商品,存储在仓库中,到下一周出售
- 建筑服务:
- 银行: 存款取款,利息计算
- 医院: 治疗健康,每点350元
- 工地: 打工赚取收入(300-500元),消耗健康(2-5点),有15%受伤风险
- 送外卖: 花费15元,随机获得10-50元奖金,消耗健康(1-3点)
- 房屋扩建: 增加仓库容量,现金>30000元时半价
- 邮局: 偿还债务
- 出行: 选择高铁/飞机前往其他城市
商品ID采用全局唯一标识:城市ID * 100000 + 商品index
每座城市都有8种独特的商品,反映当地特色文化和经济发展水平。商品价格受城市特色事件影响,体现地域差异性和真实性。
- 价格上涨事件: 影响商品价格上涨(×2 到 ×8)
- 价格下跌事件: 影响商品价格下跌(÷5 到 ÷8)
- 赠送商品事件: 随机获得商品,可能强制购买
- 各种伤害事件,降低健康值(1-20点)
- 各种消费事件,直接扣除现金(5%-40%)
- 时间耗尽(52周)
- 健康值为0
- 债务超过100000元
最终得分 = 现金 + 银行存款 - 债务
得分评价:
- >10000000: "你的钱太多了,建议向国家申报资产"
- 100000-10000000: "银行长途电话:'哇!你是大款!'"
- 1000-100000: "银行长途电话:'嗯,你还可以'"
- <1000: "银行长途电话:'你太穷了,去要饭吧!'"
项目采用完整的面向对象设计,基于策略模式实现高度模块化的城市配置系统。
export abstract class CityConfig {
abstract getLocations(): Location[]
abstract getGoods(): Omit<Goods, 'price' | 'owned'>[]
abstract getPriceStrategy(): PriceStrategy
abstract getEventStrategy(): EventStrategy
abstract getTransportationStrategy(): TransportationStrategy
abstract getRentStrategy(): RentStrategy
}- PriceStrategy: 城市特色价格计算策略
- EventStrategy: 城市特色随机事件策略
- TransportationStrategy: 城市间交通费用策略
- RentStrategy: 城市房屋租金计算策略
export const configManager = ConfigManager.getInstance()
export const getCurrentCity = () => configManager.getCurrentCityConfig()
export const getCity = (key: string) => configManager.getCityConfig(key)- 健康事件: PM2.5爆表、沙尘暴席卷京城、呼吸困难、干燥过敏
- 价格策略: 春季沙尘暴影响,秋季旅游旺季上涨
- 交通费用: 高铁北京→上海450元,机场1200元
- 健康事件: 加班熬夜、996工作制、雾霾呼吸不适
- 价格策略: 双十一购物节大促销
- 交通费用: 高铁上海→北京450元,机场1200元
- 健康事件: 昼夜温差大感冒、肠胃不适、空调病多发
- 价格策略: 春季广交会繁荣上涨
- 交通费用: 高铁广州→北京550元,机场1500元
- 健康事件: 通宵写代码、高压生活、创业压力大
- 价格策略: 双十一电商狂欢节
- 交通费用: 高铁深圳→北京500元,机场1400元
- 健康事件: 西湖湿气重、互联网加班、相对温和
- 价格策略: 春季茶价上涨
- 交通费用: 高铁杭州→北京400元,机场1200元
- 健康事件: 石板路湿滑、园林游玩、湿润气候
- 价格策略: 婚庆季上涨
- 交通费用: 高铁苏州→北京350元,机场1300元*
- 健康事件: 海风头疼、湿度变化、天津卫性格
- 价格策略: 冬季取暖上涨
- 交通费用: 高铁天津→北京55元,机场300元
- 健康事件: 海鲜过敏、晒伤、啤酒节饮酒过量
- 价格策略: 夏季旅游旺季上涨
- 交通费用: 高铁青岛→北京450元,机场1000元
*苏州无机场,需到上海或南京转机
- 🎯 完全面向对象: 基于类和接口设计,无兼容代码
- 🔄 策略模式: 城市特色完全可配置和扩展
- 📦 模块化: 每个城市独立目录,职责清晰
- ⚡ 高度扩展: 新城市只需继承基类,实现策略
- 🛡️ 类型安全: 完整的TypeScript类型系统
src/
├── components/ # UI 组件
│ └── game/ # 游戏界面组件(抽屉、对话框、聊天等)
├── composables/ # 组合式函数(操作、逻辑、时间、菜单等)
├── core/ # 核心游戏引擎与领域层
│ ├── base/ # 基类(BaseManager)
│ ├── formatters/ # 格式化器(MarketFormatter)
│ ├── handlers/ # 事件处理器(商业/健康/财务)
│ ├── managers/ # 业务管理器(Goods/GoodsLibrary/Financial/Building/Market/City)
│ ├── models/ # 领域模型(Player/Goods/Building/Market/City)
│ ├── services/ # 服务层(FameService/GoodsFinder)
│ └── GameEngine.ts # 游戏引擎与流程协调
├── config/ # 配置(游戏参数、城市配置、策略模式、ID 规则)
├── stores/ # Pinia Store(game.ts,统一初始化/持有 Managers)
├── plugins/ # Element Plus / Element Plus X 插件与解析器
├── styles/ # 组件样式定制
├── utils/ # 工具与调试
└── views/ # 页面组件
- 🏠 首页: 游戏介绍和开始界面
- 💬 游戏界面: ChatGPT风格的对话界面,通过与AI助手对话进行游戏
- 📖 关于页面: 游戏介绍和技术说明
- 自然语言输入: 在输入框中输入指令,如"购买商品"、"查看黑市"等
- 快捷按钮: 使用底部的快捷操作按钮快速执行常用命令
- 选项选择: AI助手会提供操作选项,点击即可执行
"黑市"或"购买"- 查看并购买商品"出售"或"库存"- 查看并出售商品"服务"或"建筑"- 访问各种建筑服务"下一周"- 进入下一周"状态"- 查看当前游戏状态
- 毛玻璃效果: 现代化的背景模糊和透明效果
- 渐变色彩: 丰富的渐变色彩和动画效果
- 流畅动画: 消息滑入、按钮悬停等流畅动画
- 响应式布局: 完美适配桌面和移动设备
- Element Plus: 企业级Vue组件库
- 自定义样式: 精心设计的CSS变量和主题
- 图标系统: Emoji图标提供更好的视觉识别
- 交互反馈: 丰富的悬停和点击效果
项目采用完整的面向对象设计,遵循SOLID原则,结合策略模式和依赖注入。
🎨 UI层:components + views + composables(交互界面)
📊 状态层:Pinia Store(游戏状态管理)
⚙️ 核心层:GameEngine(业务逻辑调度)
🏛️ 领域层:models + services(业务模型和服务)
🛠️ 基础设施:config + utils(配置和工具)
- 策略模式: 城市配置系统使用策略模式实现不同城市的特色行为
- 依赖注入: Manager和Handler通过构造函数注入配置和服务
- 组合优于继承: 优先使用组合而非继承来扩展功能
- 单例模式: ConfigManager和GameEngine使用单例模式确保全局唯一
支持离线访问和桌面应用安装:
- Service Worker: 智能缓存策略,支持离线使用
- Web App Manifest: 完整的应用图标和配置
- 安装提示: 自动检测并引导用户安装
- 更新机制: 新版本自动检测和更新提示
图标文件使用 public/icon-generator.html 工具生成,支持各种尺寸和格式。
- Element Plus: 企业级Vue组件库,支持自动按需导入和响应式设计
- Element Plus X: AI交互组件,提供聊天气泡和思考状态指示器
- Tailwind CSS: 现代化的样式系统,提供丰富的设计tokens
欢迎提交Issue和Pull Request来改进这个项目!