3d国际象棋游戏
I. 实现目标
- 能够实现基本国际象棋的操作:
- 利用键盘选择棋子移动(后期可尝试添加鼠标操作棋子)
- 利用窗口判断棋局胜负,将军时能够提示。
- 实现基本的3d视角操作:
- 利用方向键以及鼠标移动摄像机角度
- 利用按键或鼠标滚轮移动摄像机远近
- 棋子棋盘场景的美化建模:
- 实现天空盒背景
- 进行棋子建模
- 棋盘与棋子纹理
II. 技术分析
- 开发环境:
- API:openGL, GLUT
- 软件:VS2017, 3dmax
- 语言:C++
*环境分析:*本工程需要开发3d场景,为日后平台可移植性考虑选用openGL作为三维图形api,由于工程所需三维处理并不要求复杂,从易用性考虑利用glut工具库处理底层操作系统层面I/O以及接口调用。
- 难点:
- 3d场景的绘制,天空盒的实现及棋盘棋子的三维绘制,棋子模型的导入。
- 键盘鼠标事件捕捉以及场景互动,棋子控制交互。
- 移动是否合乎规则的判定,棋局胜负判定。
- 程序架构设计:
- 实现功能概要:
输入:对鼠标点击旋转场景,滚轮或键盘按键±控制场景缩放,wasd控制当前选中棋盘格,控制棋子移动。
输出:主要游戏窗口UI,负责显示棋盘背景等游戏画面,提示窗口UI,负责提示游戏输赢以及一些特殊情况的警告。
棋盘绘制:利用纹理贴图实现。
棋子绘制:利用3dmax绘制静态棋子3ds模型文件,程序读入作为棋子模型。
交互规则:实现棋子移动可行性判断,两方对局视角切换,棋局输赢判断。 - 面对对象的程序设计:
棋盘类:主要实现棋子移动判定,棋盘存储,胜局判断,当前应下棋方判定。
纹理类:负责加载导入棋盘天空纹理贴图(主要为位图文件)。
模型类:负责加载棋子模型(主要为3ds文件)。