基于C++和MFC开发象棋程序

 更新时间:2017年10月27日 15:35:45   作者:月影独行  
这篇文章主要为大家详细介绍了基于C++和MFC开发象棋程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

这是我要和大家分享的基于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++空类默认函数详细解析

    C++空类默认函数详细解析

    如果你只是声明一个空类,不做任何事情的话,编译器会自动为你生成一个默认构造函数、一个拷贝默认构造函数、一个默认拷贝赋值操作符和一个默认析构函数
    2013-10-10
  • C语言求幂计算的高效解法

    C语言求幂计算的高效解法

    这篇文章主要介绍了C语言求幂计算的高效解法,分别演示了求幂运算与整数次方的解法,具有不错的参考借鉴价值,需要的朋友可以参考下
    2014-09-09
  • 在Visual Studio 2019中修改项目名的方法

    在Visual Studio 2019中修改项目名的方法

    这篇文章主要介绍了在Visual Studio 2019中修改项目名的方法,文中通过示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • C++/GoLang如何实现自底向上的归并排序

    C++/GoLang如何实现自底向上的归并排序

    这篇文章主要给大家介绍了关于C++/GoLang如何实现自底向上的归并排序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • C++超详细讲解拷贝构造函数

    C++超详细讲解拷贝构造函数

    我们经常会用一个变量去初始化一个同类型的变量,那么对于自定义的类型也应该有类似的操作,那么创建对象时如何使用一个已经存在的对象去创建另一个与之相同的对象呢
    2022-06-06
  • windows上配置vscode C/C++代码跳转的实现

    windows上配置vscode C/C++代码跳转的实现

    C/C++官方的C/C++插件,必备的插件,是代码跳转、自动补全、代码大纲显示等功能的基础,本文主要介绍了windows上配置vscode C/C++代码跳转,感兴趣的可以了解一下
    2023-09-09
  • 浅谈C++虚重载操作符 virtual operator= 的使用方法

    浅谈C++虚重载操作符 virtual operator= 的使用方法

    下面小编就为大家带来一篇浅谈C++虚重载操作符 virtual operator= 的使用方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 基于C++中常见内存错误的总结

    基于C++中常见内存错误的总结

    本篇文章是对C++中常见的内存错误进行了总结介绍。需要的朋友参考下
    2013-05-05
  • 如何在C++中调用python代码你知道吗

    如何在C++中调用python代码你知道吗

    这篇文章主要为大家介绍了C++中调用python代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 利用C++编写一个Json解析器

    利用C++编写一个Json解析器

    这篇文章主要为大家详细介绍了如何利用C++编写一个简单又好用的Json解析器,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-03-03

最新评论