从今天开始,我们来学习如何用Go实现一个中国象棋的程序。

搭建Go开发环境

Go开发环境的搭建可以参考我的另一篇博文:

完整演示

完整的项目已经上传到Github,地址:https://github.com/Capricornwqh/ChineseChess

安装好Go的开发环境以后,大家可以从github上把项目clone下来,然后用vscode打开所在的文件夹,直接运行。

git clone https://github.com/Capricornwqh/ChineseChess

如果你想一步步的创建项目,可以把main.go和chess文件夹删掉。

Go游戏框架Ebiten

Ebiten是用Go编程语言写的开源游戏库。Ebiten的简单API可以快速轻松地开发可在多个平台上部署的2D游戏。

项目地址:https://github.com/hajimehoshi/ebiten

用VSCode打开ChineseChess文件夹,按下Ctrl+~打开一个终端,执行下面的命令:

go mod init ChineseChess

它会在项目文件夹ChineseChess下面生成一个go.mod文件,这个文件是用来管理项目中所使用的包。

接下来我们下载Ebiten包,在终端下面继续执行命令:

go get -u github.com/hajimehoshi/ebiten

学习建议

这个项目是Go的开发应用,并不是基础教学。

如果之前没有学过Go,可以先从《GO语言圣经》《Go语言实战》这2本书籍开始,这2本的中文电子书已经上传到百度云:

链接:https://pan.baidu.com/s/1Y84JonjXUwRCkuP2v64-7Q
提取码:qjdu

等掌握了这些基础知识,再回来下面章节的学习。

如果已经有丰富的编程经验,可以把这2本书当工具书,一边学习一边查阅。

当这些准备工作做完之后,下一节就可以开始学习ebiten!

1+

本文为原创文章,转载请注明出处,欢迎访问作者网站(和而不同)
  1. 象棋点击自己的棋子后 ,不会立即走子必须等待AI走子后才更新界面。可以优化一下。
    var aiturn bool

    func (g *Game) Update(screen *ebiten.Image) error {
    。。。。。。
    if inpututil.IsMouseButtonJustReleased(ebiten.MouseButtonLeft) {
    if aiturn {
    g.aiMove(screen)
    aiturn = false
    }
    。。。。。。。。。。
    }

    g.drawBoard(screen)
    if g.bGameOver {
    g.messageBox(screen)
    }
    return nil
    }

    。。。。。
    aiturn = true
    //g.aiMove(screen)
    。。。。。。。。。

    用 GoVCL 开发go程序界面也很方便

    1+

发表评论

error: Content is protected !!
blank