C++課程設計說明書(五子棋)_第1頁
C++課程設計說明書(五子棋)_第2頁
C++課程設計說明書(五子棋)_第3頁
C++課程設計說明書(五子棋)_第4頁
C++課程設計說明書(五子棋)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

PAGE1課程設計說明書五子棋游戲TheGameofGobang學院名稱:機械工程學院專業(yè)班級:測控10xx學生姓名:江x指導教師姓名:張xx指導教師職稱:副教授2012年6月

目錄第一章需求分析 51.1系統(tǒng)概述 51.1.1概述: 51.2系統(tǒng)運行環(huán)境 51.2.1運行環(huán)境 51.3功能需求描述 61.3.1功能需求 6第二章總體設計 62.1開發(fā)與設計的總體思想 62.1.1總體設計思路 62.1.2屏幕的組成 72.1.3形狀的組成 82.1.4形狀的統(tǒng)一 8第三章概要設計 93.1系統(tǒng)流程圖 93.2軟件功能模塊 103.3系統(tǒng)功能模塊 11第四章詳細設計 114.1.界面的設計 114.1.1總體界面的設計 114.1.2界面棋子的設計 114.2.顯示界面的準備 134.2.1在窗體類中添加存放黑白棋兩維數(shù)組和背景棋盤、黑棋、白棋位圖對象 134.2.2在窗體構造函數(shù)中初始化wb,裝入棋盤、黑棋、白棋位圖 134.3.顯示棋盤和棋子代碼 134.4.輪流下子代碼 144.5.判斷輸贏 174.5.1判斷是否白棋勝代碼 174.5.2判斷是否黑棋勝代碼 184.5.3判斷是否平局代碼 194.6.悔棋 194.7.重新開始 204.8.背景音樂 214.9.保存讀取游戲文件 214.9.1保存文件: 224.9.2讀取文件: 23第五章測試分析 24結論和心得體會 25致謝 26參考文獻: 27

課程設計任務書課程設計目的課程設計是工科各專業(yè)的主要實踐性教學環(huán)節(jié)之一,是圍繞一門主要基礎課或專業(yè)課,運用所學課程的知識,結合實際應用設計而進行的一次綜合分析設計能力的訓練。課程設計旨在培養(yǎng)學生在本課程范圍內(nèi),初步掌握解決實際應用問題時所應具有的查閱資料、綜合運用所學知識的能力,為課程設計及今后從事專業(yè)工作打下基礎。課程設計的內(nèi)容及要求利用所學的面向對象及C++編程知識和技巧,通過布置具有一定難度的程序設計題目,并且要求學生獨立完成所布置題目,在分析設計過程中,要求學生養(yǎng)成良好的編程習慣,學會分析簡單的實際問題,并能利用所學的知識建立系統(tǒng)的邏輯結構,學會簡單的調試技巧和方法。根據(jù)系統(tǒng)的功能要求,要求學生逐步完成應用程序的設計,具體要求為:1、按規(guī)定的時間及要求上機。2、設計方案正確,正確劃分所選課題的系統(tǒng)功能模塊。3、系統(tǒng)設計要盡量實用,數(shù)據(jù)與功能分析詳細。4、要求C++編碼簡潔、穩(wěn)定、高效。5、獨立查閱資料,認真書寫課程設計說明書。進度安排此次課程設計時間為兩周,分五個階段完成:1、分析設計階段:學生自主學習和鉆研問題,明確設計要求,找出實現(xiàn)方法,按照需求分析、總體設計、詳細設計這幾個步驟進行。這一階段前第1-3天完成。2、編程調試階段:根據(jù)設計分析方案編寫C++代碼,然后調試該代碼,實現(xiàn)課題要求的功能。這一階段在第4-7天完成。3、總結報告階段:總結設計工作,寫出課程設計說明書,要求學生寫出需求分析、總體設計、詳細設計、編程測試的步驟和內(nèi)容。這一階段在第8-9天完成。4、考核階段。這一階段在第10天完成。課程設計說明書要求課程設計說明書包括課程設計的目的、意義和任務,軟件開發(fā)工具介紹、任務分析、總體設計、詳細設計、編程、調試的步驟和內(nèi)容、課程設計總結、參考資料等,不符合以上要求者,則本次設計以不及格記。具體格式參看《江蘇大學課程設計說明書寫作規(guī)范》課程設計題目:設計一個五子棋游戲上機時間及地點地點:計算中心NA1NA2上機時間:19周星期四1234節(jié)星期五12345678節(jié)20周星期一5678節(jié) 星期二12345678節(jié) 星期三1234節(jié) 星期四12345678節(jié)星期五1234節(jié)答辯時間20周星期六

五子棋游戲摘要此課程設計的目的是為了達到熟練掌握C++語言的基本知識和C++調試技能;基本掌握面向對象程序設計的基本思路和方法;能夠利用所學的基本知識和技能,解決簡單的面向對象程序設計問題;培養(yǎng)綜合利用C++語言進行程序設計的能力,主要是培養(yǎng)利用系統(tǒng)提供的標準圖形函數(shù)進行創(chuàng)新設計。該游戲軟件在Windows系統(tǒng)為玩家提供傳統(tǒng)五子棋游戲的基本功能,在這簡單的五子棋中,玩家通過鼠標進行兩個人的游戲。游戲的主戰(zhàn)場為15行15列的棋盤,初始狀態(tài)棋盤上無落子,進入游戲后,默認黑棋先下,也可由玩家選擇先下的棋子,然后輪流落子,一旦有一方的棋子在某一方向上構成連續(xù)的五個棋子,則該方勝利,游戲結束并重新開始,如果有輸贏,則輸出誰勝,否則,輸出平局的信息框。游戲還有悔棋和重新開始的的功能。另外,在游戲中還有背景音樂,運行時自動播放,也可通過工具欄按鈕關閉。還可以保存和讀取游戲文件功能。關鍵詞:五子棋;視窗操作系統(tǒng);悔棋;雙人游戲。TheGameofGobangAbstractThiscourseisdesignedinordertomasterthebasicknowledgeofthec++languagetestingskills;andc++Basicgraspofobjectorientedprogrammingbasictrainofthoughtandmethod;Canuseofmyknowledgeofthebasicknowledgeandskills,solvesimpleobject-orientedprogramdesignproblem;Usingc++languagetrainingcomprehendsiveprogramdesignability,ismainlyusethesystemtoprovidethetrainingofstandardgraphicsfunctionsofinnovationdesign.ThisgamesoftwareonWindowssystemforplayerswithtraditionalrenjugame,thebasicfunctionofinthissimplerenjuplayersthroughthemouse,twopersonalgame.Themainbattlefieldgamesforline15to15listedintheboard.Thegameisover,ifaloser,theoutputwhowins,otherwise,theoutputofthedrawinformationbox.Keywords:Gobang;WindowsSystem;Takeback;thegameofTwopeopleplaying引言隨著經(jīng)濟時代的發(fā)展,人們的精神壓力越來越大,精神上得不到應有的放松,精神生活得不到極大的滿足,隨著計算機技術的飛速發(fā)展,計算機已逐漸成為人們辦公不可或缺的工具,因此及時的開發(fā)一些應用于計算機上的小型游戲軟件,以供人們在辦公的閑暇時間得到充分的休閑娛樂。而棋類因為其兼具動腦并且娛樂的雙重功效,并且十分符合現(xiàn)代式生活,因此已經(jīng)得到越來越多人的歡迎,為此我們開發(fā)一個簡單的五子棋游戲,開發(fā)此五子棋游戲軟件的目的,主要是供辦公人員與同事一起休閑娛樂,增進友誼、減輕疲勞,以提高工作效率,創(chuàng)造更多的社會財富,造福人類。查閱有關程序設計的案例資料,進一步理解程序設計模塊化的思想,并利用此思想,根據(jù)對程序設計課程的學習,編寫一個簡單的游戲軟件系統(tǒng)。通過本設計可以加深理解利用程序設計思想開發(fā)一個系統(tǒng)的整個流程,提高分析問題、解決問題和實際動手的能力。在下面的各章中我們將以開發(fā)一個五子棋游戲為例,談談其開發(fā)過程和所涉及到的問題及解決方法。第一章需求分析1.1系統(tǒng)概述1.1.1概述:本程序是一款棋類益智游戲程序,名為五子棋游戲,是采用C語言編寫的可在WINDOWS系統(tǒng)下運行的娛樂游戲平臺。該程序面向廣大棋類游戲的愛好者,能夠提供方便,實現(xiàn)基本智能控制的游戲環(huán)境。棋盤由若干網(wǎng)格構成,初始狀態(tài)棋盤上無落子,玩家可以通過鼠標在棋盤的相應位置下子,一方為白色,另一方為黑色,先下的為黑子。游戲過程中,一旦有一方的棋子在某一方向上先構成連續(xù)的五個棋子,不論橫、豎或斜,就會在屏幕上顯示是誰贏了比賽。1.2系統(tǒng)運行環(huán)境1.2.1運行環(huán)境(1)硬件環(huán)境。本系統(tǒng)適用于那種Inter386以上計算機,內(nèi)存容量為128M,應配備鍵盤、鼠標、顯示器等外部設備。(2)軟件環(huán)境。本系統(tǒng)的設計采用VisualC++6.0編寫。在WindowsXPSP2環(huán)境下測試通過。(3)只要計算機具有VisualC++6.0,本游戲軟件在Windows平臺下都可以運行。1.3功能需求描述1.3.1功能需求五子棋是一種大眾喜愛的游戲,其規(guī)則簡單,變化多端,非常富有趣味性何消遣性,是一種兩人對弈的純策略型棋類游戲,是起源于中國古代的傳統(tǒng)黑白棋種之一。發(fā)展于日本,流行于歐美。容易上手,老少皆宜,而且趣味橫生,引人入勝;不僅能增強思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。近來隨著計算機的快速發(fā)展,各種棋類游戲被紛紛請進了電腦,使得那些喜愛下棋,又常常苦于沒有工具的棋迷們能隨時過足棋癮。在這里我也設計了一個較簡單的五子棋游戲,這個游戲,不僅可以滿足游戲愛好者對游戲的要求,同時我們增加了美觀因素,讓游戲有一個比較美觀的界面,滿足我們游戲愛好者的視覺要求,同時有悔棋和重新清盤開始的功能,更加方便了玩家的操作和游戲的有趣性。同時,這個游戲還增加了背景音樂的功能,讓玩家在玩游戲的同時還可以聆聽音樂,使身心放松,如果不需要,也可以通過菜單欄或工具欄中的按鈕將其關閉。另外,也可以保存和讀取游戲文件。第二章總體設計2.1開發(fā)與設計的總體思想2.1.1總體設計思路棋盤設計為15*15格,初始狀態(tài)棋盤的為空,玩家黑子先走,輪流落子,當一方連成五子或下滿棋盤時,游戲結束并重新開始(連成五子的一方獲勝,下滿棋盤為和棋)。當游戲一方勝利后顯示勝利信息。從程序表面看,這是一個二維平面圖,所以數(shù)據(jù)用二維數(shù)組來表示,數(shù)組兩個下標可以表示棋盤上的位置,用坐標表示位置,數(shù)組元素的值代表棋格上的狀態(tài),共有三種情況,分別是0代表空格,1代表黑棋,2代表白棋。這樣程序的主要工作是接收棋手鼠標按鍵操作,棋手用鼠標控制光標移動,按鍵表示落子。一旦接收到按鍵,說明棋手落子,先判斷是否是有效位置,也就是說已經(jīng)有棋子的位置不能重疊落子。落子成功后,馬上判斷該棋盤上是否有相同顏色的棋子連成五子,如果連成五子,則游戲結束,輸出相應的信息。按確認后,自動調用清盤函數(shù),此時清盤重新開始,由另一家先走。在游戲中,如果玩家悔棋,則按下悔棋按鈕,調用悔棋函數(shù),將剛下的棋去掉,重下一子。按下重新開始菜單,可清盤使游戲重新開始。2.1.2屏幕的組成一個游戲一定要有一個界面供游戲者對游戲控制。這個界面中要包含讓游戲者更加清楚游戲狀態(tài)的信息,比如,白方要下子時,必須要先看一看所有黑子的排列情況,決定是防守還是進攻,這關系著玩家要如何放置自己的棋子,讓整體有個更加的布局,有利于游戲的進行。此游戲的屏幕由15行15列的網(wǎng)格和菜單欄、工具欄組成,背景是一張棋盤圖,棋盤圖和棋子圖如下圖:2.1.3形狀的組成每一種形狀都是由五個棋子組成,比如●●●●●或○○○○○由五個棋子排列而成。2.1.4形狀的統(tǒng)一棋子的排列,如:●●●●●等共有8種形狀(黑白的形狀歸為不同的形狀)。如圖形狀:黑棋的四種情況:●●●●●●○○○○●○○○○○○○○●○○○○○●○○○○○●○○○○○○●○○○○○○●○○○○○○●○○○○●○○○○○○○●○○○○○○○●○○●○○○○○○○○●○○○○○○○○●●○○○○白棋的四種情況:○○○○○○●●●●○●●●●●●●●○●●●●●○●●●●●○●●●●●●○●●●●●●○●●●●●●○●●●●○●●●●●●●○●●●●●●●○●●○●●●●●●●●○●●●●●●●●○○●●●●第三章概要設計3.1系統(tǒng)流程圖系統(tǒng)流程圖是對系統(tǒng)的大致流程進行描述,本游戲的系統(tǒng)流程圖如下:游戲開始游戲開始選擇先下棋子(默認黑棋先下)黑白子交替落子判斷是否連成五子或棋盤滿Y游戲結束悔棋N重新開始江蘇大學測控專業(yè)編程及軟件應用課程設計說明書3.2軟件功能模塊本游戲的軟件功能模塊如下:五五子棋界面及顯示模塊播放音樂模塊輪流下子模塊塊勝負判斷模塊悔棋模塊重新開始模塊保存讀取游戲文件模塊3.3系統(tǒng)功能模塊系統(tǒng)功能模塊是對系統(tǒng)的大致功能進行描述,本游戲的系統(tǒng)功能模塊如下:五子棋游戲功能五子棋游戲功能兩人基本游戲功能悔棋功能重新開始功能播放背景音樂功能輸贏輸出保存讀取功能第四章詳細設計根據(jù)上面所介紹的本系統(tǒng)的各個模塊及其需要實現(xiàn)的功能,下面詳細設計如下:4.1.界面的設計4.1.1總體界面的設計程序界面程序在啟動運行時,系統(tǒng)會調用在資源視圖中導入的圍棋背景圖片,使程序界面更加友好,在使用上給用戶一種直觀方便的感覺。4.1.2界面棋子的設計在資源視圖中導入圍棋的黑棋圖片、白旗圖片,使下子時調用此圖片,使游戲更加直觀有趣。同時在窗口視圖中添加顯示透明色圖片函數(shù),是棋子圖片更加逼真有趣。顯示透明色圖片函數(shù)如下所示://顯示透明色函數(shù)voidPutBitmap(CDC*pDC,intx,inty,CBitmap*pBitmap,COLORREFcolor){COLORREFoldColor;CBitmapbmAndBack,bmAndObject,bmAndMem,bmSave;CDC memDC,backDC,objectDC,saveDC,pieceDC;BITMAPbm;pBitmap->GetBitmap(&bm);intnWidth=bm.bmWidth,nHeight=bm.bmHeight; memDC.CreateCompatibleDC(pDC);backDC.CreateCompatibleDC(pDC);objectDC.CreateCompatibleDC(pDC);saveDC.CreateCompatibleDC(pDC);pieceDC.CreateCompatibleDC(pDC);bmAndBack.CreateBitmap(nWidth,nHeight,1,1,NULL);bmAndObject.CreateBitmap(nWidth,nHeight,1,1,NULL);bmAndMem.CreateCompatibleBitmap(pDC,nWidth,nHeight);bmSave.CreateCompatibleBitmap(pDC,nWidth,nHeight);backDC.SelectObject(&bmAndBack);objectDC.SelectObject(&bmAndObject);memDC.SelectObject(&bmAndMem);saveDC.SelectObject(&bmSave);pieceDC.SelectObject(pBitmap);saveDC.BitBlt(0,0,nWidth,nHeight,&pieceDC,0,0,SRCCOPY);oldColor=pieceDC.SetBkColor(color);objectDC.BitBlt(0,0,nWidth,nHeight,&pieceDC,0,0,SRCCOPY);pieceDC.SetBkColor(oldColor);backDC.BitBlt(0,0,nWidth,nHeight,&objectDC,0,0,NOTSRCCOPY);memDC.BitBlt(0,0,nWidth,nHeight,pDC,x,y,SRCCOPY);memDC.BitBlt(0,0,nWidth,nHeight,&objectDC,0,0,SRCAND);pieceDC.BitBlt(0,0,nWidth,nHeight,&backDC,0,0,SRCAND);memDC.BitBlt(0,0,nWidth,nHeight,&pieceDC,0,0,SRCPAINT);pDC->BitBlt(x,y,nWidth,nHeight,&memDC,0,0,SRCCOPY);pieceDC.BitBlt(0,0,nWidth,nHeight,&saveDC,0,0,SRCCOPY);}4.2.顯示界面的準備4.2.1在窗體類中添加存放黑白棋兩維數(shù)組和背景棋盤、黑棋、白棋位圖對象intwb[15][15];CBitmapBoard,Black,White; //背景棋盤、黑棋、白棋位圖對象4.2.2在窗體構造函數(shù)中初始化wb,裝入棋盤、黑棋、白棋位圖 for(inti=0;i<15;i++) for(intj=0;j<15;j++) wb[i][j]=0; //零表示空、1表示黑棋、2表示白棋 Board.LoadBitmap(IDB_BITMAP1); //裝入背景位圖 Black.LoadBitmap(IDB_BITMAP2); //裝入黑棋位圖 White.LoadBitmap(IDB_BITMAP3); //裝入白棋位圖4.3.顯示棋盤和棋子代碼在窗口OnDraw函數(shù)中添加顯示棋盤和棋子代碼voidCChessView::OnDraw(CDC*pDC){ CChessDoc*pDoc=GetDocument(); ASSERT_VALID(pDoc); CDCmem; mem.CreateCompatibleDC(pDC); mem.SelectObject(&Board); pDC->BitBlt(0,0,535,536,&mem,0,0,SRCCOPY); //繪制棋盤 for(inti=0;i<15;i++) //繪制棋子 for(intj=0;j<15;j++) if(wb[i][j]==1) PutBitmap(pDC,5+i*35,7+j*35,&Black,RGB(255,255,255)); elseif(wb[i][j]==2) PutBitmap(pDC,5+i*35,7+j*35,&White,RGB(255,255,255)); //TODO:adddrawcodefornativedatahere}4.4.輪流下子代碼voidCFivechessView::OnLButtonDown(UINTnFlags,CPointpoint){ //TODO:Addyourmessagehandlercodehereand/orcalldefault if(RightORLet==0)//如果鼠標狀態(tài)為0,黑棋先下 { intx=(point.x-5)/35,y=(point.y-7)/35; //計算坐標 if(x<15&&y<15) //點擊鼠標的位置在棋盤內(nèi) if(wb[x][y]==0)//且該位置還沒有棋子 { for(inti=0;i<15;i++) for(intj=0;j<15;j++) if(jl[i][j]==count) a[i][j]=0; wb[x][y]=1;//設置成黑棋 a[x][y]=1; count++; jl[x][y]=count; CDC*pDC; pDC=this->GetDC(); PutBitmap(pDC,5+x*35,7+y*35,&Black,RGB(255,255,255));//顯示該棋子 PutBitmap(pDC,5+x*35,7+y*35,&Red,RGB(255,255,255)); CView::OnLButtonDown(nFlags,point); if(heisheng(wb)==1) { this->MessageBox("黑子勝","完成",MB_OK); OnStart(); } if(ping(wb)==1) { this->MessageBox("平局","完成",MB_OK); OnStart(); } RightORLet++;//鼠標狀態(tài)變?yōu)? } } else//如果鼠標狀態(tài)為1,則下白棋 { intx=(point.x-5)/35,y=(point.y-7)/35; //計算坐標 if(x<15&&y<15) //點擊鼠標的位置在棋盤內(nèi) if(wb[x][y]==0)//且該位置還沒有棋子 { for(inti=0;i<15;i++) for(intj=0;j<15;j++) if(jl[i][j]==count) a[i][j]=0; wb[x][y]=2; //設置成白棋 a[x][y]=2; count++; jl[x][y]=count; CDC*pDC; pDC=this->GetDC(); PutBitmap(pDC,5+x*35,7+y*35,&White,RGB(255,255,255));//顯示該棋子 PutBitmap(pDC,5+x*35,7+y*35,&Green,RGB(255,255,255)); CView::OnLButtonDown(nFlags,point); if(baisheng(wb)==1) { this->MessageBox("白子勝","完成",MB_OK); OnStart(); } if(ping(wb)==1) { this->MessageBox("平局","完成",MB_OK); OnStart(); } RightORLet--;//鼠標狀態(tài)變?yōu)? } }}4.5.判斷輸贏此功能用來判斷當某一方下完子后在八個方向上是否有連成五個子的可能性,若連成五子則執(zhí)此棋子方獲勝;或者棋盤下滿為和局。4.5.1判斷是否白棋勝代碼 intCFivechessView::heisheng(inta[15][15]){ inti,j;//判斷橫著的5個是否都相等 for(i=0;i<15;i++) for(j=0;j<11;j++) {if(a[i][j]==1&&a[i][j+1]==1&&a[i][j+2]==1&&a[i][j+3]==1&&a[i][j+4]==1) return1; } for(j=0;j<15;j++)//判斷豎著的5個是否都相等 for(i=0;i<11;i++) {if(a[i][j]==1&&a[i+1][j]==1&&a[i+2][j]==1&&a[i+3][j]==1&&a[i+4][j]==1) return1; } for(i=0;i<11;i++)//判斷左斜5個 for(j=0;j<11;j++) {if(a[i][j]==1&&a[i+1][j+1]==1&&a[i+2][j+2]==1&&a[i+3][j+3]==1&&a[i+4][j+4]==1) return1; } for(i=0;i<11;i++)//右斜5個 for(j=14;j>=4;j--) {if(a[i][j]==1&&a[i+1][j-1]==1&&a[i+2][j-2]==1&&a[i+3][j-3]==1&&a[i+4][j-4]==1) return1; } return0;}4.5.2判斷是否黑棋勝代碼intCFivechessView::baisheng(inta[15][15]){ inti,j;//判斷橫著的5個是否都相等 for(i=0;i<15;i++) for(j=0;j<11;j++) if(a[i][j]==2&&a[i][j+1]==2&&a[i][j+2]==2&&a[i][j+3]==2&&a[i][j+4]==2) return1; for(j=0;j<15;j++)//判斷豎著的5個是否都相等 for(i=0;i<11;i++) if(a[i][j]==2&&a[i+1][j]==2&&a[i+2][j]==2&&a[i+3][j]==2&&a[i+4][j]==2) return1; for(i=0;i<11;i++)//判斷左斜5個 for(j=0;j<11;j++) if(a[i][j]==2&&a[i+1][j+1]==2&&a[i+2][j+2]==2&&a[i+3][j+3]==2&&a[i+4][j+4]==2) return1; for(i=0;i<11;i++)//右斜5個 for(j=14;j>=4;j--) if(a[i][j]==2&&a[i+1][j-1]==2&&a[i+2][j-2]==2&&a[i+3][j-3]==2&&a[i+4][j-4]==2) return1; return0;}4.5.3判斷是否平局代碼intCFivechessView::ping(inta[15][15]){ for(inti=0;i<15;i++) for(intj=0;j<15;j++) { if(a[i][j]==0)//當棋盤全部子都不是0時才能return1,即棋盤已下滿 return0; } return1;}4.6.悔棋此功能是體現(xiàn)一種人性化,在菜單欄里添加悔棋按鈕,當某一方玩家覺得此步走錯了,按下悔棋按鈕,調用悔棋函數(shù),棋盤上就會自動消除玩家剛下的一步棋,實行悔棋功能?;谄宕a如下:voidCFivechessView::OnFileHuiqi(){ //TODO:Addyourcommandhandlercodehere if(count!=0) { for(inti=0;i<15;i++) for(intj=0;j<15;j++) if(jl[i][j]==count) { wb[i][j]=0; a[i][j]=0; } count--; switch(RightORLet) { case1: RightORLet=0; break; case0: RightORLet=1; break; } OnDraw(GetDC()); } else this->MessageBox("無法悔棋","完成",MB_OK);}4.7.重新開始在菜單欄里添加重新開始按鈕,當按下重新開始按鈕時,調用重新開始函數(shù),對棋盤進行清盤處理,然后游戲重新開始。重新開始代碼如下:voidCFivechessView::OnFileRestart()//重新開始(用按鈕){ for(inti=0;i<15;i++) for(intj=0;j<15;j++) { wb[i][j]=0; a[i][j]=0; } RightORLet=0; count=0; OnDraw(GetDC()); //TODO:Addyourcommandhandlercodehere}4.8.背景音樂首先將音樂轉為wav類型,然后插入到資源,在fivechess.cpp中添加頭文件#include<mmsystem.h>#pragmacomment(lib,"Winmm.lib")在構造函數(shù)中添加如下代碼:{PlaySound((LPCTSTR)IDR_WAVE1,AfxGetInstanceHandle(),SND_RESOURCE|SND_ASYNC);}其中IDR_WAVE1為音樂文件的地址。4.9.保存讀取游戲文件理論上,這個游戲并無須保存,因為它確實太小了。事實上,這個游戲有保存的功能,由于我們學習的需要。這個游戲的保存,與其說是學習文件的保存,不如說是我們學習字符串的操作。另外,這個附加的內(nèi)容并不是為了當前的學習而添加的,而是為了后面的學習和應用而鋪墊的。4.9.1保存文件:保存文件函數(shù)是一個菜單選項。它的作用就是保存當前游戲的狀態(tài)。首先,我們應該為我們自己的文件定義一個后綴名:.wb;接著是打開保存文件的公共對話框,如果確定,則表示保存,那么就先獲取文件名,然后按照一定的順序保存各個點的數(shù)組的值,最后保存當前是哪種顏色下棋。voidCFivechessView::OnFileSave(){ //TODO:Addyourcommandhandlercodehere //設置保存的文件,后綴名wb CFileDialogdlg(FALSE,"wb",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"(*.WB)|*.wb|AllFiles|*.*||",this); //如果公共類對話框為確定 if(dlg.DoModal()==IDOK)//獲取文件名 dlg.GetFileName();//否則,退出 else return;//字符串變量 CStringstr; inti,j; CStdioFilefile;//如果有問題,退出 if(file.Open(dlg.GetFileName(),CFile::modeCreate|CFile::modeWrite|CFile::typeText)==0) { AfxMessageBox("saveerror!"); return; } //循環(huán)把棋盤數(shù)組的值寫進文件 for(i=0;i<15;i++) for(j=0;j<15;j++) { if(wb[i][j]==1) file.WriteString("1\n"); if(wb[i][j]==0) file.WriteString("0\n"); if(wb[i][j]==2) file.WriteString("2\n"); } if(RightORLet==1) //保存當前下棋顏色 file.WriteString("2\n"); else file.WriteString("1\n"); file.Close(); //關閉文件}4.9.2讀取文件:讀文件就是把我們以前保存的文件打開,讀取當前打開文件的內(nèi)容,并給數(shù)組賦值使和文件內(nèi)容相同,然后可以繼續(xù)進行游戲。voidCFivechessView::OnFileOpen(){ //TODO:Addyourcommandhandlercodehere CFil

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論