一步一步實現五子棋1

2021-06-19 12:53:41 字數 2010 閱讀 5332

最近待業中,趁這段時間想實現乙個vc版的五子棋軟體,並且把每天的工作內容寫出來當作對自己工作的總結,同時希望能達到拋磚引玉的效果,希望各位大俠多多指教。

首先建立乙個mfc工程,如下圖:

工程建好後我們先完成棋盤的繪製。這裡我們使用gdi+來繪圖。要使用gdi+,先要完成如下工作。

(1)將以下**加入到stdafx.h標頭檔案中:
#include

#ifndef ulong_ptr 

#define ulong_ptr  unsignedlong*

#include "gdiplus.h" 

using namespace gdiplus;

#endif 

#pragma comment(lib,"gdiplus.lib")

(2) 在程式初始化部分加入以下**:

// 裝載gdi+ 

gdiplusstartupinput gdiplusstartupinput;     

ulong_ptr  pgditoken; 

gdiplusstartup(&pgditoken,&gdiplusstartupinput,null);

(3) 在程式結束部分前加入如下**:

// 解除安裝gdi+

gdiplusshutdown(pgidtoken);

這樣這個工程就可以使用gdi+了。

在onpaint()中新增繪圖部分**如下:

void

cfivedlg::onpaint()

else

else

cpaintdc

dc(this);

graphics

graphics(dc.m_hdc);

// 繪製棋盤

drawchessboard(&graphics);

// 繪製棋子

drawchess(&graphics);

cdialog::onpaint();

}

繪製棋盤的方法實現如下

void

cfivedlg::drawchessboard(graphics *g)

}

繪製棋子的方法實現如下,這裡只是簡單的繪製了兩顆棋子。

void

cfivedlg::drawchess(graphics *g)

{image

whitechess(l

"img/whitestone.png",false);

image

blackchess(l

"img/blackstone.png",false);

intchessleft= m_left - m_blocksize/ 2;

intchesstop= m_top - m_blocksize/ 2;

intchesssize= m_blocksize;

g->drawimage(&whitechess,chessleft+ 7 * m_blocksize,chesstop+ 7 * m_blocksize,chesssize,chesssize);

g->drawimage(&blackchess,chessleft+ 6 * m_blocksize,chesstop+ 7 * m_blocksize,chesssize,chesssize);

好了,到這裡就完成了棋盤的繪製了,看看執行之後的效果吧。

這棋盤和棋子可是我用photoshop借鑑了n多教程後繪製的,怎麼樣,還不錯吧!

一步一步實現五子棋5

前面弱智版五子棋雖然實現了讓電腦下棋,但是完全沒有思考能力。下面我們就來為電腦提公升智力,學會思考後再下棋。計算機的思考能力體現在對盤面的分析上,通過分析可能形成的盤面,從中選擇最優結果,形成這個最優結果的著法即為計算機本次的選擇。盤面分析的過程就是查詢能形成五連珠的棋形,每種棋形賦予一定的分數,分...

一步一步實現FormsAuthentic驗證登入

本文不講原理,只講用法,原理性的東西網上特別多,不過還是會對一些要用到的東西進行解釋,不深入講原理。本文中用的是vs2012 net mvc 4.0。原理看這篇文章 看完這個文章絕對受益匪淺。說下登入的整個流程 使用者輸入賬號密碼 點選提交 資料提交到後台控制器 去資料庫取得使用者資料 如果登入成功...

一步一步學習hadoop(五)

hadoop分布式檔案系統 hdfs 首先介紹一下hdfs的特點 1.擅長處理大檔案,超大檔案。幾十g甚至pb級別的檔案 2.擅長流式資料訪問,一次寫入多次讀取是最高效的訪問模式 3.可以執行在普通的機器上,一般只要求記憶體是ecc記憶體,可以對資料進行糾錯。4.擅長執行非實時的分析或者是近實時的資...