【正文】
game software on Windows system for players with traditional renju game, the basic function of in this simple renju players through the mouse, two personal game. The main battlefield games for line 15 to 15 listed in the board. The game is over, if a loser, the output who wins, otherwise, the output of the draw information box.Keywords: Gobang。而棋類因為其兼具動腦并且娛樂的雙重功效,并且十分符合現(xiàn)代式生活,因此已經(jīng)得到越來越多人的歡迎,為此我們開發(fā)一個簡單的五子棋游戲,開發(fā)此五子棋游戲軟件的目的,主要是供辦公人員與同事一起休閑娛樂,增進友誼、減輕疲勞,以提高工作效率,創(chuàng)造更多的社會財富,造福人類。第一章 需求分析:本程序是一款棋類益智游戲程序,名為五子棋游戲,是采用C語言編寫的可在WINDOWS 系統(tǒng)下運行的娛樂游戲平臺。(1)硬件環(huán)境。在Windows XP SP2環(huán)境下測試通過。容易上手,老少皆宜,而且趣味橫生,引人入勝;不僅能增強思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。另外,也可以保存和讀取游戲文件。這樣程序的主要工作是接收棋手鼠標按鍵操作,棋手用鼠標控制光標移動,按鍵表示落子。在游戲中,如果玩家悔棋,則按下悔棋按鈕,調(diào)用悔棋函數(shù),將剛下的棋去掉,重下一子。此游戲的屏幕由15行15列的網(wǎng)格和菜單欄、工具欄組成,背景是一張棋盤圖,棋盤圖和棋子圖如下圖: 每一種形狀都是由五個棋子組成,比如●●●●●或○○○○○ 由五個棋子排列而成。同時在窗口視圖中添加顯示透明色圖片函數(shù),是棋子圖片更加逼真有趣。 BITMAP bm。 (pDC)。 (pDC)。 (pDC,nWidth,nHeight)。bmAndObject)。bmSave)。 oldColor=(color)。 (0,0,nWidth,nHeight,amp。objectDC,0,0,SRCAND)。pieceDC,0,0,SRCPAINT)。saveDC,0,0,SRCCOPY)。i15。 //零表示空、1表示黑棋、2表示白棋 (IDB_BITMAP1)。 ASSERT_VALID(pDoc)。Board)。i15。Black,RGB(255,255,255))。 //計算坐標 if(x15amp。i++) for(int j=0。 //設(shè)置成黑棋 a[x][y]=1。 pDC=thisGetDC()。Red,RGB(255,255,255))。 } if(ping(wb)==1) { thisMessageBox(平局,完成,MB_OK)。 //計算坐標 if(x15amp。i++) for(int j=0。 //設(shè)置成白棋 a[x][y]=2。 pDC=thisGetDC()。Green,RGB(255,255,255))。 } if(ping(wb)==1) { thisMessageBox(平局,完成,MB_OK)。 int CFivechessView::heisheng(int a[15][15]) { int i,j。j11。amp。amp。j++)//判斷豎著的5個是否都相等 for(i=0。a[i+1][j]==1amp。a[i+3][j]==1amp。i11。amp。amp。 } for(i=0。j) {if(a[i][j]==1amp。a[i+2][j2]==1amp。a[i+4][j4]==1) return 1。i15。amp。amp。 for(j=0。i++) if(a[i][j]==2amp。a[i+2][j]==2amp。a[i+4][j]==2) return 1。j11。amp。amp。i++)//右斜5個 for(j=14。a[i+1][j1]==2amp。a[i+3][j3]==2amp。 }int CFivechessView::ping(int a[15][15]) { for(int i=0。j++) { if(a[i][j]==0)//當棋盤全部子都不是0時才能return 1,即棋盤已下滿 return 0。i15。 a[i][j]=0。 case 0: RightORLet=1。}. 重新開始在菜單欄里添加重新開始按鈕,當按下重新開始按鈕時,調(diào)用重新開始函數(shù),對棋盤進行清盤處理,然后游戲重新開始。j15。 count=0。. 保存讀取游戲文件理論上,這個游戲并無須保存,因為它確實太小了。:保存文件函數(shù)是一個菜單選項。void CFivechessView::OnFileSave() { // TODO: Add your mand handler code here //設(shè)置保存的文件,后綴名wb CFileDialog dlg(FALSE,wb,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,(*.WB)|*.wb|All Files|*.*||,this)。 int i,j。 } //循環(huán)把棋盤數(shù)組的值寫進文件 for(i=0。j++) { if(wb[i][j]==1) (1\n)。 else (1\n)。 if(()==IDOK) ()。 CStdioFile file。file,CArchive::load)。j15。 if(m==1) wb[i][j]=1。 sscanf(str,%d,amp。 ()。該游戲利用鼠標進行下棋,在菜單欄中選擇悔棋,和重新開始的功能。它是計算機程序設(shè)計的重要理論技術(shù)基礎(chǔ),在我們測控專業(yè)的學習中占據(jù)著十分重要的地位。同時對于此游戲還可以進一步研究開發(fā),可以制成有人機對戰(zhàn)和人人對戰(zhàn)兩種選擇的游戲,還可以制成網(wǎng)上游戲形式,可以和網(wǎng)友一起游戲等等。感謝班上同學對我的幫助和指點。在此表示最誠摯的感謝!參考文獻:[1] 《Visual C++面向?qū)ο蟪绦蛟O(shè)計教程與實驗》 第二版 溫秀梅,丁學鈞主編 清華大學出版社 2009[2] 《C程序設(shè)計》 第三版 譚浩強著 清華大學出版社 2005