Skip to content
sdd330Public

About

魔都i启航 - iSailing

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

魔都i启航 - iSailing

🎮 游戏介绍

魔都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 install

启动开发服务器

pnpm dev

构建生产版本

pnpm build

桌面端(Tauri 2)

# 允许构建脚本(首次/依赖变更后执行)
pnpm approve-builds

# 开发模式(桌面 + Vite dev server)
pnpm tauri:dev

# 打包桌面应用(macOS 产物在 src-tauri/target/release/bundle/macos)
pnpm tauri:build

代码检查

pnpm lint

🎯 游戏规则

初始状态

  • 现金: 2000元
  • 债务: 5000元 (每周利息10%)
  • 银行存款: 0元 (每周利息1%)
  • 健康: 100点
  • 名声: 100点
  • 仓库容量: 100单位

核心机制

  1. 每周循环: 生成商品价格 → 处理财务 → 随机事件 → 时间递减
  2. 商品交易: 在黑市购买商品,存储在仓库中,到下一周出售
  3. 建筑服务:
    • 银行: 存款取款,利息计算
    • 医院: 治疗健康,每点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: "银行长途电话:'你太穷了,去要饭吧!'"

🏗️ 配置系统 - 面向对象架构

项目采用完整的面向对象设计,基于策略模式实现高度模块化的城市配置系统。

核心架构

1. 抽象基类设计

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
}

2. 策略模式接口

  • PriceStrategy: 城市特色价格计算策略
  • EventStrategy: 城市特色随机事件策略
  • TransportationStrategy: 城市间交通费用策略
  • RentStrategy: 城市房屋租金计算策略

3. 配置管理器

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使用单例模式确保全局唯一

📱 PWA支持

支持离线访问和桌面应用安装:

  • Service Worker: 智能缓存策略,支持离线使用
  • Web App Manifest: 完整的应用图标和配置
  • 安装提示: 自动检测并引导用户安装
  • 更新机制: 新版本自动检测和更新提示

图标文件使用 public/icon-generator.html 工具生成,支持各种尺寸和格式。

🎨 UI组件库

  • Element Plus: 企业级Vue组件库,支持自动按需导入和响应式设计
  • Element Plus X: AI交互组件,提供聊天气泡和思考状态指示器
  • Tailwind CSS: 现代化的样式系统,提供丰富的设计tokens

🤝 贡献

欢迎提交Issue和Pull Request来改进这个项目!

About

魔都i启航 - iSailing

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages