Python中如何使用浏览器游玩中文DOS游戏

🎮 中文 DOS 游戏 浏览器游玩中文 DOS 游戏 在线试玩: https://dos.zczc.cz 项目地址: https://github.com/rwv/chinese-dos-games

支持游戏:

游戏列表 仙剑奇侠传 模拟城市 2000 美少女梦工厂 同级生 2 大富翁 3 明星志愿 1 三国志 IV 金庸群侠传 轩辕剑 1 轩辕剑 2 皇帝 轩辕剑外传:枫之舞 疯狂医院 大航海时代 大航海时代 2 银河英雄传说 III SP 三国志 II 三国志 III 三国志 V 三国志 V 威力加强版 三国志英杰传 主题医院 三国演义 三界谕:邦沛之迷 殖民计划 炎龙骑士团 II ‧黄金城之谜 倚天屠龙记 信长之野望·天翔记 信长之野望·霸王传 金瓶梅之偷情宝鉴


Python中如何使用浏览器游玩中文DOS游戏

19 回复

远程运行?


要玩中文DOS游戏,我推荐用pygame配合dosbox-python库。先安装依赖:

pip install pygame dosbox-python

然后写个启动脚本:

import os
import subprocess
import sys

def run_dos_game(game_path, game_exe):
    """启动DOS游戏"""
    # 构建DOSBox命令
    dosbox_cmd = [
        'dosbox',
        '-c', f'mount c {game_path}',
        '-c', 'c:',
        '-c', f'{game_exe}',
        '-c', 'exit'
    ]
    
    try:
        # 执行DOSBox命令
        subprocess.run(dosbox_cmd, check=True)
    except FileNotFoundError:
        print("错误:未找到DOSBox,请先安装DOSBox")
        print("下载地址:https://www.dosbox.com/")
    except subprocess.CalledProcessError as e:
        print(f"游戏启动失败:{e}")

def main():
    # 配置游戏路径和可执行文件
    game_dir = r"C:\Games\ChineseDOSGame"  # 修改为你的游戏目录
    game_exe = "GAME.EXE"  # 修改为游戏的可执行文件名
    
    if not os.path.exists(game_dir):
        print(f"错误:游戏目录不存在 {game_dir}")
        return
    
    print(f"正在启动游戏: {game_exe}")
    run_dos_game(game_dir, game_exe)

if __name__ == "__main__":
    main()

对于浏览器运行,可以用Emscripten把DOSBox编译成WebAssembly:

# 安装Emscripten后,编译DOSBox到Web
# 这是一个简化的构建脚本示例
import subprocess

def build_dosbox_wasm():
    """编译DOSBox到WebAssembly"""
    emcc_cmd = [
        'emcc',
        '-o', 'dosbox.html',
        'dosbox_main.c',
        '-s', 'USE_SDL=2',
        '-s', 'ASYNCIFY',
        '--preload-file', 'game_data@/'
    ]
    
    subprocess.run(emcc_cmd, check=True)
    print("编译完成,生成dosbox.html")

# 注意:这需要先安装Emscripten SDK

实际在浏览器玩的话,更简单的方法是直接用现成的方案:

  1. http.server开个本地服务器
  2. 把游戏文件放在静态目录
  3. js-dos前端库加载游戏
# 简单的HTTP服务器
import http.server
import socketserver

def start_server(port=8000):
    """启动本地HTTP服务器"""
    handler = http.server.SimpleHTTPRequestHandler
    with socketserver.TCPServer(("", port), handler) as httpd:
        print(f"服务器启动在 http://localhost:{port}")
        print("把游戏文件放在当前目录,然后访问index.html")
        httpd.serve_forever()

if __name__ == "__main__":
    start_server()

然后在同目录创建index.html,引入js-dos:

<!DOCTYPE html>
<html>
<head>
    <script src="https://js-dos.com/6.22/current/js-dos.js"></script>
</head>
<body>
    <div id="jsdos"></div>
    <script>
        Dos(document.getElementById("jsdos"), {
            wdosboxUrl: "https://js-dos.com/6.22/current/wdosbox.js",
            cycles: 1000,
            autolock: true,
        }).ready((fs, main) => {
            fs.extract("GAME.ZIP").then(() => {
                main(["-c", "GAME.EXE"]);
            });
        });
    </script>
</body>
</html>

把游戏打包成ZIP放在服务器目录,浏览器打开就能玩。

总结:本地用pygame+dosbox,浏览器用js-dos。

能存档吗?

不清楚,看着好玩扩散下,可以自己去摸索。

就是 emdosbox 嘛。话说,为啥没人把 Dosbox-X 移植到 emscripten 下面啊。。。浏览器里的东方旧作才萌

挺好玩的,不知道原理是什么,不知道能不能部署到自己服务器上,因为速度有点喜感。。。。可以存档,但我没试过。。不过好像玩仙剑啊,但是没有修改器,估计没耐心打下去。。。。

金庸群侠传 居然是注音输入法,名字都没法输入 晕了

鼠标有点漂, 操作不舒服, 会吃到小屏幕里, 老板过来不好切换.

昨天想自己编译一个本地运行,失败了。谁传一个二进制包?

怎么退出网页全屏

厉害。。。。。上班时可以随时摸鱼了

鼠标太漂了

我靠。我要在打串 金庸群侠传

楼主的网站 seo 做的挺好的

谢谢!自己都没有什么感觉,都是瞎弄的。

看 V2EX 很久,今天觉得有必要冒个泡支持一下这个帖子,注册了一个账号。前几天各种把游戏打包成 webassembly 的新闻,我就在等着仙剑,终于有了。

这么棒!不过刚试了一下没声音,是我自己的问题么?

自己也 demo 了一个出来。
https://yksoft1.github.io/

回到顶部