前端小白想写一个网页对战五子棋游戏 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
stcasshern
V2EX    游戏开发

前端小白想写一个网页对战五子棋游戏

  •  
  •   stcasshern 2016-07-20 09:5:55 +08:00 7413 次点击
    这是一个创建于 3436 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT ,想法来自和 gf 聊天,因为异地,她想玩五子棋,但是找了半天没找到那种支持网页版联机对战的,当然什么 qq 游戏大厅这种可以,但是只为了一个五子棋就下载 qq 太过于浪费,而且得一直带着电脑。 所以现在想法就是自己写一个网页五子棋,双方随机生成两个匹配码,输入对方的码就可以连接对战,嗯,大概想法是这样,不知道这个网页实现困不困难,打算有空做出来。

    25 条回复    2016-07-20 17:16:10 +08:00
    Imivan
        1
    Imivan  
       2016-07-20 09:59:08 +08:00
    花样秀恩爱
    coderluan
        2
    coderluan  
       2016-07-20 09:59:30 +08:00
    不困难,可以试试现有的 h5 引擎
    wenzichel
        3
    wenzichel  
       2016-07-20 10:01:20 +08:00
    其实这就相当于一个网页版的聊天系统+五子棋规则。

    1. 可以创建房间,并可以配对
    2. 将你的棋子位置传送给对方的浏览器( websocket )
    3. 使用五子棋的规则判定双方谁赢

    难点就是双方之前的互相通信
    GreatMartial
        4
    GreatMartial  
       2016-07-20 10:06:14 +08:00 via Android
    微信里搜“微五子棋”,直接就能联网对战
    zhouyg
        5
    zhouyg  
       2016-07-20 10:07:26 +08:00
    做过类似的,注意好 websocket 相关的编程就好了。
    justfindu
        6
    justfindu  
       2016-07-20 10:09:38 +08:00
    可是有 app 呀~
    p1llar
        7
    p1llar  
       2016-07-20 10:13:29 +08:00 via Android
    socket.io
    luckyscript
        8
    luckyscript  
       2016-07-20 10:15:14 +08:00
    顺便做个五子棋 AI
    stcasshern
        9
    stcasshern  
    OP
       2016-07-20 10:20:27 +08:00
    @coderluan @wenzichel @zhouyg @p1llar 多谢指点,打算先看下网页对战 AI 怎么实现的,多谢!
    @justfindu 并没有找到相关的。。。
    @GreatMartial 多谢= =发现真的是= =
    mars0prince
        10
    mars0prince  
       2016-07-20 10:22:17 +08:00
    花式虐狗啊
    GreatMartial
        11
    GreatMartial  
       2016-07-20 10:22:48 +08:00 via Android
    @stcasshern 有空匹配对战一把,到现在我还没输过呢
    tvallday
        12
    tvallday  
       2016-07-20 10:23:25 +08:00
    这种游戏很简单的,不过等你做出来了她说不定移情别恋到别的游戏上了。
    stcasshern
        13
    stcasshern  
    OP
       2016-07-20 10:26:10 +08:00
    @tvallday 那就当练手了哈哈
    justfindu
        14
    justfindu  
       2016-07-20 10:29:23 +08:00
    coderluan
        15
    coderluan  
       2016-07-20 10:49:25 +08:00   2
    楼主你逗我,对战游戏你看什么 AI...
    tangzx
        16
    tangzx  
       2016-07-20 10:52:05 +08:00 via iPhone
    @coderluan 我喜欢 coop 胜过对战,能攀比又不伤感情
    learnshare
        17
    learnshare  
       2016-07-20 10:52:24 +08:00
    单机版我已经做出来了,联机版可以在这个基础上搞一搞
    https://github.com/learnshare/wuziqi
    learnshare
        18
    learnshare  
       2016-07-20 10:56:12 +08:00
    @learnshare 上图

    0x5010
        19
    0x5010  
       2016-07-20 11:17:33 +08:00
    @learnshare 棋一般是落在十字不是格子内, 黑白棋才是放在格子内的
    learnshare
        20
    learnshare  
       2016-07-20 11:19:41 +08:00
    @0x5010 只是个 demo ,不要太在乎细节 :)
    Eymard
        21
    Eymard  
       2016-07-20 11:26:53 +08:00
    微信里有现成的公众号提供这种服务啊 还能玩你画我猜 = =
    xieguanglei
        22
    xieguanglei  
       2016-07-20 11:32:52 +08:00
    很简单,都不用自己架服务器,用一些简单的实时云服务(比如 V2 右边广告位总是向我推荐的「野狗后端云」)就可以完成。

    我写过一个 [小 demo]( https://xieguanglei.github.io/code-whiteboard/),可以多人远程在同一块白板上写代码的,就是用的这个「野狗后端云」,挺好用的还。
    stcasshern
        23
    stcasshern  
    OP
       2016-07-20 11:43:01 +08:00
    多谢各位,虽然已经找到解决办法了哈哈,但还是决定自己搞一搞
    coderluan
        24
    coderluan  
       2016-07-20 17:13:48 +08:00
    刚才闲着无论,用 LayaAir 帮楼主写了个三子棋
    没优化数据结构和算法,没添加网络功能, LayaAir 也有现成的网络通信接口,懒的加了。
    楼主随便看看,了解到这个很简单就行了。

    var flag = 0;//用来决定谁先手
    var pause = false;

    var block = [[], [], []];

    for (var i = 0; i < 3; i++) {
    for (var j = 0; j < 3; j++) {
    block[i][j] = new Laya.Sprite();
    Laya.stage.addChild(block[i][j]);
    block[i][j].pos(i * 200, j * 200);
    block[i][j].size(200, 200);
    block[i][j].graphics.drawRect(0, 0, 200, 200, "white", "black", 3);//画格子
    block[i][j].piece = -1;//-1 未放置棋子, 0 放置圈, 1 放置叉
    block[i][j].on(Laya.Event.CLICK, this, function (e) {

    if (e.target.piece == -1&&!pause) {//确保格子未放棋子
    e.target.piece = flag;
    if (flag) {
    e.target.graphics.drawLine(20, 20, 180, 180, "black", 5);//画叉
    e.target.graphics.drawLine(20, 180, 180, 20, "black", 5);//画叉
    }
    else {
    e.target.graphics.drawCircle(100, 100, 80, "white", "black", 5);//画圈
    }

    //判断游戏结果,偷懒:-D ,用枚举
    for (var i = 0; i < 3; i++) {
    if (block[i][0].piece == 0 && block[i][1].piece == 0 && block[i][2].piece == 0) { logo.text = "Circle win!!!"; pause = true; }
    if (block[i][0].piece == 1 && block[i][1].piece == 1 && block[i][2].piece == 1) { logo.text = "Cross win!!!"; pause = true; }
    }

    for (var j = 0; j < 3; j++) {
    if (block[0][j].piece == 0 && block[1][j].piece == 0 && block[2][j].piece == 0) { logo.text = "Circle win!!!"; pause = true; }
    if (block[0][j].piece == 1 && block[1][j].piece == 1 && block[2][j].piece == 1) { logo.text = "Cross win!!!"; pause = true; }
    }

    if (block[0][0].piece == 0 && block[1][1].piece == 0 && block[2][2].piece == 0) { logo.text = "Circle win!!!"; pause = true; }
    if (block[2][0].piece == 0 && block[1][1].piece == 0 && block[0][2].piece == 0) { logo.text = "Circle win!!!"; pause = true; }

    if (block[0][0].piece == 1 && block[1][1].piece == 1 && block[2][2].piece == 1) { logo.text = "Cross win!!!"; pause = true; }
    if (block[2][0].piece == 1 && block[1][1].piece == 1 && block[0][2].piece == 1) { logo.text = "Cross win!!!"; pause = true; }

    flag = !flag;//换人
    }
    }
    )
    }
    }

    在线地址 http://www.coderluan.com/gameluan/TicTacToe.html
    coderluan
        25
    coderluan  
       2016-07-20 17:16:10 +08:00
    不用一个小时就写完了,这类引擎现学现用的话,我感觉一天也足够了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana   &nbs; 5170 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 07:39 PVG 15:39 LAX 23:39 JFK 02:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86