用Go写一个中国象棋(一)| 准备工作
从今天开始,我们来学习如何用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+
象棋点击自己的棋子后 ,不会立即走子必须等待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程序界面也很方便
这块确实可以优化,目前还没有时间,等有时间我再看一下