这是我要和大家分享的基于C++和MFC开发的一个象棋程序,目的是练习编程实践和大家分享同时希望大家能给出指教。

进入主题

一、棋盘分析

  这是我绘制的棋盘,棋盘的组成由9条竖线和10条横线构成。这儿我们设置每条线间的间隔是50。

二‘、绘制过程

1、在vs中新建MFC程序,去除环境自动生成的按钮和文字。

2、打开***Dlg.cpp文件,在void CChessDlg::OnPaint()中定义一个棋盘间隔值和绘图设备CDC *cd = CWnd::GetDC();

int nWid = 50;
CDC *cd = CWnd::GetDC();

3、绘制棋盘横线

//画横线
for (int i = 1; i < 11; ++i)
{
cd->MoveTo(nWid, i * nWid);
cd->LineTo(9 * nWid, i * nWid);
}

4、绘制棋盘竖线

//画竖线
for (int i = 1; i < 10; ++i)
{
  //绘制棋盘两侧线段
if(1 == i || 9 == i)
{
cd->MoveTo(i * nWid ,nWid);
cd->LineTo(i * nWid,10 * nWid);
}
else//绘制棋盘中间的几条竖线
{
cd->MoveTo(i * nWid ,nWid);
cd->LineTo(i * nWid,5 * nWid); cd->MoveTo(i * nWid,6 * nWid);
cd->LineTo(i * nWid,10 * nWid);
}
}

5、绘制九宫格

//画九宫格
cd->MoveTo(4 * nWid ,nWid);
cd->LineTo(6 * nWid,3 * nWid); cd->MoveTo(6 * nWid, nWid);
cd->LineTo(4 * nWid,3 * nWid); cd->MoveTo(4 * nWid ,8 * nWid);
cd->LineTo(6 * nWid,10 * nWid); cd->MoveTo(6 * nWid, 8 * nWid);
cd->LineTo(4 * nWid,10 * nWid);

到这里我们的棋盘就绘制好了下面是完整代码

        CDialogEx::OnPaint();
int nWid = 50;
CDC *cd = CWnd::GetDC(); //画横线
for (int i = 1; i < 11; ++i)
{
cd->MoveTo(nWid, i * nWid);
cd->LineTo(9 * nWid, i * nWid);
} //画竖线
for (int i = 1; i < 10; ++i)
{
if(1 == i || 9 == i)
{
cd->MoveTo(i * nWid ,nWid);
cd->LineTo(i * nWid,10 * nWid);
}
else
{
cd->MoveTo(i * nWid ,nWid);
cd->LineTo(i * nWid,5 * nWid); cd->MoveTo(i * nWid,6 * nWid);
cd->LineTo(i * nWid,10 * nWid);
}
} //画九宫格
cd->MoveTo(4 * nWid ,nWid);
cd->LineTo(6 * nWid,3 * nWid); cd->MoveTo(6 * nWid, nWid);
cd->LineTo(4 * nWid,3 * nWid); cd->MoveTo(4 * nWid ,8 * nWid);
cd->LineTo(6 * nWid,10 * nWid); cd->MoveTo(6 * nWid, 8 * nWid);
cd->LineTo(4 * nWid,10 * nWid);

编程的路上有光芒,不回头的往前走。

C++开发象棋一 绘制棋盘的更多相关文章

  1. 用python代码编写象棋界面,棋盘覆盖问题

    编写象棋界面 import turtle t=turtle.Pen() t.speed(100) def angle(x,y): t.penup() t.goto(x+3,y+3) t.pendown ...

  2. 基于OpenCV做“三维重建”(1)--找到并绘制棋盘

    <OpenCV计算机视觉编程攻略(第3版)>这套书已经出到第3版了,如果你非要我说这本书有多好,我说不出来:只是很多我第一手的例子都是来源于这本书的-相比较OpenCV官方提供的代码,这本 ...

  3. HTML5 2D平台游戏开发#6地图绘制

    此前已经完成了一部分角色的动作,现在还缺少可以交互的地图让游戏看起来能玩.不过在开始之前应当考虑清楚使用什么类型的地图,就2D平台游戏来说,一般有两种类型的地图,Tile-based和Art-base ...

  4. android 开发 View _13 绘制图片与BitmapShader位图的图像渲染器

    BitmapShader位图的图像渲染器 TileMode 模式 Shader.TileMode.CLAMP 边缘拉伸. Shader.TileMode.MIRROR 在水平方向和垂直方向交替景象, ...

  5. Python 绘制棋盘

    import turtle pen = turtle.Pen() pen.speed(10) width = 30 # 格子宽度 count = 18 # 横向纵向格子数 o = width * co ...

  6. 用微信小程序开发的Canvas绘制可配置的转盘抽奖

    使用https://github.com/givebest/GB-canvas-turntable代码移植过而来. 其它 微信小程序感觉是个半成品,代码移植过程比较繁琐麻烦.canvas API 部分 ...

  7. 中国象棋游戏Chess(1) - 棋盘绘制以及棋子的绘制

    本项目都使用QT来实现绘图,没有任何第三方的资源. 工程详情:Github 首先将棋盘设计为一个类Board // Board.h // Board类实现了棋盘的绘制以及显示 // #ifndef B ...

  8. 【JavaScript游戏开发】使用HTML5 canvas开发的网页版中国象棋项目

    //V1.0 : 实现棋子的布局,画布及游戏场景的初始化 //V2.0 : 实现棋子的颜色改变 //V3.0 :实现所有象棋的走棋规则 //V4.0 : 实现所有棋子的吃子功能 完整的项目源码已经开源 ...

  9. HTML5学习总结——canvas绘制象棋(canvas绘图)

    一.HTML5学习总结——canvas绘制象棋 1.第一次:canvas绘制象棋(笨方法)示例代码: <!DOCTYPE html> <html> <head> & ...

随机推荐

  1. 多线程面试题系列(8):经典线程同步 信号量Semaphore

    前面介绍了关键段CS.事件Event.互斥量Mutex在经典线程同步问题中的使用.本篇介绍用信号量Semaphore来解决这个问题. 首先也来看看如何使用信号量,信号量Semaphore常用有三个函数 ...

  2. 通过Excel认识POI

    1.POI是什么 Apache POI - the Java API for Microsoft Documents,顾名思义,Apache的三方包,用来操作微软office文档的,多数时候用来操作e ...

  3. Linux 虚拟机安装后的配置和一些命令符笔记

    一.安装后的配置 1.设在终端的字体为等宽字体 比如:DejaVu Sans Mono 2.将当前的普通用户加入到sudo用户组adduser en sudochmod +w /etc/sudoers ...

  4. maven详解之结构

    maven 父子关系 父项目中打包方式必须是pom  如 <packaging>pom</packaging>,父项目中使用<modules><module& ...

  5. FPGA在其他领域的应用(二)

    计算机和存储领域: 计算机技术和存储技术发展迅猛.如今,云计算正在实现对传统 IT 功能和全新功能的整合.例如,许多大型数据中心目前正在同时提供传统的 IT 服务以及新型的数据分析服务. 因此,这些大 ...

  6. netsh用法

    netsh(Network Shell) 是一个windows系统本身提供的功能强大的网络配置命令行工具. 导出配置脚本:netsh -c interface ip dump > c:\inte ...

  7. ASP.NET没有魔法——ASP.NET MVC 与数据库大集合

    ASP.NET没有魔法——ASP.NET与数据库 ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQL ASP.NET没有魔法——ASP.NET MVC 与数据库之ORM ASP.N ...

  8. Unity3D - Animator Controller循环依赖

    问题 假设有2个Animator Controller,分别命名为TestControllerLhs.controller以及TestControllerRhs.controller.在TestCon ...

  9. 怎样让PDM图形列表显示name和code等需要的信息

    1. 工具(TOOLS)-〉显示参数设置(DISPLAY PREFERENCES) 2. 在弹出来的框中选中Content-〉Table 3. 点右下角那个Advanced 按钮 4. 在弹出的框个选 ...

  10. 浅谈Java多态

    什么是Java中的多态?又是一个纸老虎的概念,老套路,把它具体化,细分化,先想三个问题(注意,这里不是简单的化整为零,而是要建立在学习一个新概念时的思考框架): 1.这个东西有什么用?用来干什么的?它 ...