基于C++和MFC開(kāi)發(fā)象棋程序
這是我要和大家分享的基于C++和MFC開(kāi)發(fā)的一個(gè)象棋程序,目的是練習(xí)編程實(shí)踐和大家分享同時(shí)希望大家能給出指教。
進(jìn)入主題
一、棋盤(pán)分析
這是我繪制的棋盤(pán),棋盤(pán)的組成由9條豎線和10條橫線構(gòu)成。這兒我們?cè)O(shè)置每條線間的間隔是50。
二、繪制過(guò)程
1、在vs中新建MFC程序,去除環(huán)境自動(dòng)生成的按鈕和文字。
2、打開(kāi)***Dlg.cpp文件,在void CChessDlg::OnPaint()中定義一個(gè)棋盤(pán)間隔值和繪圖設(shè)備CDC *cd = CWnd::GetDC();
int nWid = 50; CDC *cd = CWnd::GetDC();
3、繪制棋盤(pán)橫線
//畫(huà)橫線 for (int i = 1; i < 11; ++i) { cd->MoveTo(nWid, i * nWid); cd->LineTo(9 * nWid, i * nWid); }
4、繪制棋盤(pán)豎線
//畫(huà)豎線 for (int i = 1; i < 10; ++i) { //繪制棋盤(pán)兩側(cè)線段 if(1 == i || 9 == i) { cd->MoveTo(i * nWid ,nWid); cd->LineTo(i * nWid,10 * nWid); } else//繪制棋盤(pán)中間的幾條豎線 { cd->MoveTo(i * nWid ,nWid); cd->LineTo(i * nWid,5 * nWid); cd->MoveTo(i * nWid,6 * nWid); cd->LineTo(i * nWid,10 * nWid); } }
5、繪制九宮格
//畫(huà)九宮格 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);
到這里我們的棋盤(pán)就繪制好了下面是完整代碼
CDialogEx::OnPaint(); int nWid = 50; CDC *cd = CWnd::GetDC(); //畫(huà)橫線 for (int i = 1; i < 11; ++i) { cd->MoveTo(nWid, i * nWid); cd->LineTo(9 * nWid, i * nWid); } //畫(huà)豎線 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); } } //畫(huà)九宮格 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);
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++空類(lèi)默認(rèn)函數(shù)詳細(xì)解析
如果你只是聲明一個(gè)空類(lèi),不做任何事情的話(huà),編譯器會(huì)自動(dòng)為你生成一個(gè)默認(rèn)構(gòu)造函數(shù)、一個(gè)拷貝默認(rèn)構(gòu)造函數(shù)、一個(gè)默認(rèn)拷貝賦值操作符和一個(gè)默認(rèn)析構(gòu)函數(shù)2013-10-10在Visual Studio 2019中修改項(xiàng)目名的方法
這篇文章主要介紹了在Visual Studio 2019中修改項(xiàng)目名的方法,文中通過(guò)示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03C++/GoLang如何實(shí)現(xiàn)自底向上的歸并排序
這篇文章主要給大家介紹了關(guān)于C++/GoLang如何實(shí)現(xiàn)自底向上的歸并排序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08windows上配置vscode?C/C++代碼跳轉(zhuǎn)的實(shí)現(xiàn)
C/C++官方的C/C++插件,必備的插件,是代碼跳轉(zhuǎn)、自動(dòng)補(bǔ)全、代碼大綱顯示等功能的基礎(chǔ),本文主要介紹了windows上配置vscode?C/C++代碼跳轉(zhuǎn),感興趣的可以了解一下2023-09-09淺談C++虛重載操作符 virtual operator= 的使用方法
下面小編就為大家?guī)?lái)一篇淺談C++虛重載操作符 virtual operator= 的使用方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01基于C++中常見(jiàn)內(nèi)存錯(cuò)誤的總結(jié)
本篇文章是對(duì)C++中常見(jiàn)的內(nèi)存錯(cuò)誤進(jìn)行了總結(jié)介紹。需要的朋友參考下2013-05-05