《算法設(shè)計(jì)與分析》課程設(shè)計(jì)論文五子棋游戲

上傳人:仙*** 文檔編號:29624039 上傳時間:2021-10-07 格式:DOC 頁數(shù):19 大?。?68.02KB
收藏 版權(quán)申訴 舉報(bào) 下載
《算法設(shè)計(jì)與分析》課程設(shè)計(jì)論文五子棋游戲_第1頁
第1頁 / 共19頁
《算法設(shè)計(jì)與分析》課程設(shè)計(jì)論文五子棋游戲_第2頁
第2頁 / 共19頁
《算法設(shè)計(jì)與分析》課程設(shè)計(jì)論文五子棋游戲_第3頁
第3頁 / 共19頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《算法設(shè)計(jì)與分析》課程設(shè)計(jì)論文五子棋游戲》由會員分享,可在線閱讀,更多相關(guān)《《算法設(shè)計(jì)與分析》課程設(shè)計(jì)論文五子棋游戲(19頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、算法設(shè)計(jì)與分析課程設(shè)計(jì)論文五子棋游戲?qū)W生姓名: 學(xué)生學(xué)號: 200710802017 院(系): 計(jì)算機(jī)學(xué)院 年級專業(yè): 2007級信息與計(jì)算科學(xué) 指導(dǎo)教師: 2010-6-11 目錄摘要21問題的提出32 問題的分析33 程序及流程的設(shè)計(jì)43.1概要設(shè)計(jì)43.2模塊及其功能介紹53.2.1定義全局變量53.2.2Main()主函數(shù)53.2.3drawqp()畫棋盤函數(shù)53.2.4win()判斷是否勝出函數(shù)53.2.5Gameplay()雙人對戰(zhàn)函數(shù)53.2.6Xandy()顯示光標(biāo)縱橫坐標(biāo)函數(shù)63.2.7圖形功能函數(shù)64 調(diào)試分析7總結(jié)8參考文獻(xiàn)9附 錄: 源程序10摘要本問介紹的一個五子棋

2、游戲的編寫和設(shè)計(jì),本游戲的依據(jù)就是下棋的雙方各持黑白棋子,當(dāng)某方在橫、縱或?qū)欠较蜻B成五個棋子,則認(rèn)為該玩家勝利,游戲結(jié)束。該程序用C語言編寫,主要有C語言函數(shù)的調(diào)用(其中包括圖形函數(shù),判斷函數(shù)等)和可視化編程,還有數(shù)組的應(yīng)用,比如在該程序中就是用一個二維數(shù)組來表示棋盤。從程序表面看,這是一個二維平面圖,所以數(shù)據(jù)用二維數(shù)組來表示,數(shù)組兩個下標(biāo)可以表示棋盤上的位置,數(shù)組元素的值代表棋格上的狀態(tài),共有三種情況,分別是0代表空格,1代表白棋,2代表黑棋。這樣程序的主要工作是接收棋手按鍵操作,棋手1用Up、Down、Left、Right控制光標(biāo)移動,回車鍵表示落子。棋手2用W、S、A、D控制光標(biāo)移動,

3、空格鍵表示落子。一旦接收到回車鍵或空格鍵,說明棋手落子,先判斷是否是有效位置,也就是說已經(jīng)有棋子的位置不能重疊落子。落子成功后,馬上判斷以該位置為中心的八個方向:上、下、左、右、左上、左下、右上、右下是否有相同顏色的棋子連成五子,如果連成五子,則游戲結(jié)束,輸出相應(yīng)的信息。如果想退出游戲,可以按Esc鍵。關(guān)鍵詞 五子棋,C語言,二維數(shù)組,函數(shù) 五子棋游戲設(shè)計(jì)1問題的提出連珠(五子棋)是有兩個人在一盤棋上進(jìn)行對抗的競技運(yùn)動。在對局開始時,先由用戶選擇哪方先開局,先開局一方將一枚棋子落在一點(diǎn)上,然后由另一方在對方棋周圍的交叉點(diǎn)上落子,如此輪流落子,直到某一方首先在棋盤的直線、橫線或斜線上形成連續(xù)的五

4、子則該方就算獲勝。此時,算法結(jié)束。當(dāng)有任何一方想退出時,都可在算法中實(shí)現(xiàn)。2 問題的分析為了要實(shí)現(xiàn)五子棋的人和人的對戰(zhàn),我們就首先要實(shí)現(xiàn)通過鍵盤對棋子的操作。因此我們必須要先定義一個鍵盤,并用二維數(shù)組來表示棋盤并把它用圖形函數(shù)輸出在屏幕上。因此我們可以定義結(jié)構(gòu)體來表示一個完整的棋盤。為了讓人可以移動光標(biāo)來選擇下棋位置,我們必須要定義函數(shù)來輸出光標(biāo)的位置(既橫縱坐標(biāo))。我們實(shí)現(xiàn)了人和人的對戰(zhàn)就要勝負(fù),因此我分析要定義一個判斷函數(shù)來判斷誰勝誰負(fù)。要是我們在定義一個游戲開始函數(shù)來控制游戲的還是和一個游戲結(jié)束函數(shù)來控制游戲的結(jié)束,那么我們這就是一個完整的游戲過程,則我們這個程序就基本實(shí)現(xiàn)了人和人的對戰(zhàn)

5、。3 程序及流程的設(shè)計(jì) 開始西 安 工 業(yè) 大 學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院算 法 設(shè) 計(jì) 與 分 析 課 程 設(shè) 計(jì)題 目: 五子棋 班 級: 050606 人 數(shù): 13人 成 員: 陳瑋 高謙 侯夕杰 馬濤 宋文彬 王偉 周仁文 邵文清趙瑞紅 李盈超 尉建明 陳建軍 張祥雄 學(xué) 號: 時 間: 2008年元月16日 目 錄1課程設(shè)計(jì)報(bào)告-1 1.1問題描述-1 1.2需求分析-1 1.3概要設(shè)計(jì)-1 1.4詳細(xì)設(shè)計(jì)-頁碼 1.5調(diào)試分析-頁碼2源程序-頁碼3程序的說明文件-頁碼4課設(shè)總結(jié)-頁碼1. 課程設(shè)計(jì)報(bào)告1.1問題描述連珠(五子棋)是有兩個人在一盤棋上進(jìn)行對抗的競技運(yùn)動。在對局開始時,先

6、由用戶選擇哪方先開局,先開局一方將一枚棋子落在一點(diǎn)上,然后由另一方在對方棋周圍的交叉點(diǎn)上落子,如此輪流落子,直到某一方首先在棋盤的直線、橫線或斜線上形成連續(xù)的五子則該方就算獲勝。此時,算法結(jié)束。當(dāng)有任何一方想退出時,都可在算法中實(shí)現(xiàn)。 1.2需求分析 (1)、輸出游戲規(guī)則并由用戶決定是否遵守并開局。 (2)、要求動態(tài)畫出棋盤大小。(3)、畫棋子并確定其顏色。 (4)、玩家輪流下棋。(5)、判斷鍵盤輸入哪個鍵按規(guī)則執(zhí)行操作 (6)、判斷誰先落棋。 (7)判斷贏家1.3概要設(shè)計(jì) 流程圖:Y Y N Y N Y N Y 1.4詳細(xì)設(shè)計(jì) 1.5調(diào)試分析 運(yùn)行結(jié)果:屏幕顯示:Please input w

7、ho is first:1 or 2 當(dāng)輸入1時,白棋先走;當(dāng)輸入2時,紅棋先走。屏幕顯示:Please input the size of chessbox:從鍵盤輸入t值,則棋盤大小為t*t型。屏幕顯示:Left, Right, Up, Down KEY to move, Space to put, ESC-quit 及棋盤,棋子,用上下左右鍵控制棋子向,用空格鍵確定棋子的落點(diǎn) 。當(dāng)白棋贏時,顯示The White Win ! 當(dāng)紅棋贏時,顯示The Red Win !遇到的問題:算法改進(jìn)思想:將棋盤由原先的固定大小改進(jìn)為可動態(tài)變化,由原來固定的白棋先走改進(jìn)為讓用戶可以選擇哪方先落子。2源

8、程序#include#include#include#include#include#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b#define SPACE 0x3920#define BILI 20#define JZ 4#define JS 3#define N 19int boxNN,s; /*落子點(diǎn)*/int step_x,step_y ;int key ;int flag,i,j ;void draw_box();void draw_cicle(

9、int x,int y,int color);void change();void judgewho(int x,int y);void judgekey();int judgeresult(int x,int y);void attentoin();void attentoin() /*游戲規(guī)則*/ char ch ; printf(Play attentoins:nn); printf(1. Press Left,Right,Up,Down Key to move Piecenn); printf(2. Press Space to place the Piecenn); printf(3

10、. DO NOT press Space outside of the draw_boxnn); printf(Do you accept the above Playing attentoins? Y/Other:); while(1) ch=getche(); if(ch=Y|ch=y) break ; else exit(0); printf(nnwhat size of the draw_box:); scanf(%d,&s); printf(nnwho is the frist:1 or 2? ); while(1) scanf(%d,&flag); if(flag!=1&flag!

11、=2) printf(Error!n); else break; void draw_box() /*畫出棋盤*/ int x1,x2,y1,y2 ; setbkcolor(LIGHTBLUE); setcolor(YELLOW); gotoxy(7,2); printf(Left, Right, Up, Down KEY to move, Space to put, ESC-quit.); for(x1=1,y1=1,y2=s;x1=s;x1+) line(x1+JZ)*BILI,(y1+JS)*BILI,(x1+JZ)*BILI,(y2+JS)*BILI); for(x1=1,y1=1,x

12、2=s;y1=s;y1+) line(x1+JZ)*BILI,(y1+JS)*BILI,(x2+JZ)*BILI,(y1+JS)*BILI); for(x1=1;x1=s;x1+) for(y1=1;y1=s;y1+) boxx1y1=0 ;void draw_cicle(int x,int y,int color) /*棋子*/ setcolor(color); setlinestyle(SOLID_LINE,0,1); x=(x+JZ)*BILI ; y=(y+JS)*BILI ; circle(x,y,8);void judgekey() switch(key) case LEFT :

13、if(step_x-1=1;i-) if(boxij=0) draw_cicle(step_x,step_y,LIGHTBLUE); break ; if(is) break ; else for(i=step_x+1,j=step_y;is)break ; step_x=i ; judgewho(step_x,step_y); break ; case DOWN : if(step_y+1s) break ; else for(i=step_x,j=step_y+1;js)break ; step_y=j ; judgewho(step_x,step_y); break ; case UP

14、: if(step_y-1=1;j-) if(boxij=0) draw_cicle(step_x,step_y,LIGHTBLUE); break ; if(j=1&step_x=1&step_y=1;j-) /*水平向左數(shù)*/ if(boxjk=flag) n+; else break ; for(j=x,k=y;j5) return(1); n=0 ; for(j=x,k=y;k=1;k-) /*垂直向上數(shù)*/ if(boxjk=flag) n+; else break ; for(j=x,k=y;k5) return(1); n=0 ; for(j=x,k=y;j=1,k=1;j-,k

15、-) /*向左上方數(shù)*/ if(boxjk=flag) n+; else break ; for(j=x,k=y;j=s,k5) return(1); n=0 ; for(j=x,k=y;j=1;j+,k-) /*向右上方數(shù)*/ if(boxjk=flag) n+; else break ; for(j=x,k=y;j=1,k5) return(1); return(0); void main() int gdriver=VGA,gmode=VGAHI; clrscr(); attentoin(); initgraph(&gdriver,&gmode,c:tc); draw_box(); do

16、 step_x=0,step_y=0 ; judgewho(step_x-1,step_y-1); do while(bioskey(1)=0); key=bioskey(0); judgekey(); while(key!=SPACE&key!=ESC); while(key!=ESC); closegraph();_3程序的說明文件 本程序中包含一個主函數(shù)和七個子函數(shù),它們的函數(shù)名及功能分別如下:void draw_box();畫棋盤void draw_cicle(int x,int y,int color);畫棋子并確定其顏色void change();改變玩家void judgewho

17、(int x,int y);判斷誰落棋void judgekey();判斷鍵盤輸入哪個鍵按規(guī)則執(zhí)行操作int judgeresult(int x,int y);判斷贏家void attentoin();顯示游戲規(guī)則4課設(shè)總結(jié) 從1月14日開始,我們進(jìn)行了為期一周的算法課程設(shè)計(jì)。通過這次課程設(shè)計(jì),我們拓寬了知識面,鍛煉了能力,綜合素質(zhì)得到較大提高。 本次課程設(shè)計(jì),使我們對從五子棋設(shè)計(jì)方案到設(shè)計(jì)的基本過程的設(shè)計(jì)方法、步驟、思路、有一定的了解與認(rèn)識。在課程設(shè)計(jì)過程中,我們基本能按照規(guī)定的程序進(jìn)行,先針對五子棋的設(shè)計(jì)收集、調(diào)查有關(guān)資料,其間,同組成員之間進(jìn)行幾次方案的討論、修改,再討論、再修改,最后定

18、案。設(shè)計(jì)方案確定后,又在老師指導(dǎo)下進(jìn)行擴(kuò)充詳細(xì)設(shè)計(jì),最終用c語言實(shí)現(xiàn)了可視化的五子棋算法。整個過程周密有序,對我們按時高質(zhì)完成課程設(shè)計(jì)非常有利! 對我們計(jì)算機(jī)專業(yè)的本科生來說,實(shí)際能力的培養(yǎng)至關(guān)重要,而這種實(shí)際能力的培養(yǎng)單靠課堂教學(xué)是遠(yuǎn)遠(yuǎn)不夠的,必須從課堂走向?qū)嵺`。通過課程設(shè)計(jì),讓我們找出自身狀況與實(shí)際需要的差距,并在以后的學(xué)習(xí)期間及時補(bǔ)充相關(guān)知識,為求職與正式工作做好充分的知識、能力準(zhǔn)備,從而縮短從校園走向社會的心理轉(zhuǎn)型期。 課程設(shè)計(jì)達(dá)到了專業(yè)學(xué)習(xí)的預(yù)期目的。課程設(shè)計(jì)之后,我們普遍感到不僅實(shí)際動手能力有所提高,更重要的是進(jìn)一步激發(fā)了我們對專業(yè)知識的興趣,并能夠結(jié)合實(shí)際存在的問題在專業(yè)領(lǐng)域內(nèi)進(jìn)

19、行更深入的學(xué)習(xí)。 3.1概要設(shè)計(jì) 流程圖:輸出游戲規(guī)則 Error!玩家遵守?NY誰先下棋,輸入棋盤大小s畫出s*s大小的棋盤 用戶決定誰先走白棋先走?N畫紅棋 畫白棋 Y 下棋 改變玩家 下棋 橫豎斜有五個相同顏色的棋子相連? N 白棋?Y 輸出:The white win!輸出:The red win! N 3.2模塊及其功能介紹3.2.1定義全局變量int gamespeed=5000; int i,j,key; struct Sor int x; int y;/*x,y表示當(dāng)前光標(biāo)的位置*/ int yesNN;/* 0表示無棋子,1表示白色棋子,2表示黑色棋子*/ int kao;/

20、* 1表示白棋準(zhǔn)備落子,2表示黑棋落子*/ int ok;/*1表示白棋勝出,2表示黑棋勝出*/ sor; 3.2.2Main()主函數(shù)按照語法規(guī)則,首先定義使用到的常數(shù)、全局變量、函數(shù)原型說明。棋盤狀態(tài)用數(shù)組yes2020,初值為0,表示空格。函數(shù)的實(shí)體比較簡單,調(diào)用圖形驅(qū)動、畫棋盤、人人對弈等自定義函數(shù),一旦游戲結(jié)束后,關(guān)閉圖形驅(qū)動,程序結(jié)束。3.2.3drawqp()畫棋盤函數(shù)背景顏色設(shè)為黑色,從坐標(biāo)(100,100)開始每隔20個單位用綠色畫一條水平直線,一條垂直線,構(gòu)成棋盤,用循環(huán)語句實(shí)現(xiàn)。畫線函數(shù)line()的參數(shù)為線的起點(diǎn)和終點(diǎn)坐標(biāo),注意要計(jì)算正確。函數(shù)setfillstyle(

21、)可以設(shè)置填充模式和填充顏色,fillellipse(int x,int xradius,int yradius)以x和y為圓心,xradius和yradius為水平和垂直軸畫一填充橢圓,當(dāng)xradius和yradius相等時,則畫出的是圓,用它表示棋子。3.2.4win()判斷是否勝出函數(shù)本函數(shù)根據(jù)每次落子的位置,分別向上、下、左、右、左上、左下、右上、右下八個方向判斷是否有相同顏色的棋子連成五子,如果成立,游戲就結(jié)束,并顯示提示信息(如:紅方獲勝),否則繼續(xù)落子。3.2.5Gameplay()雙人對戰(zhàn)函數(shù)這是游戲進(jìn)行的函數(shù),主要是接收棋手的按鍵消息,其處理過程如下:(1) 按Esc鍵程序可

22、以隨時結(jié)束。(2) 按上下左右光標(biāo)鍵,則改變棋子移動的坐標(biāo)值。(3) 按回車鍵后判斷:(4) 如落子的位置已經(jīng)有棋則無效,繼續(xù)按鍵。(5) 如落子位置是空格,可以將棋子落入格內(nèi),調(diào)用win()函數(shù)。(6) 如果棋子變化后,棋盤已下滿了棋子,則游戲結(jié)束。顯示平局信息。(7) 重復(fù)上述步驟,直到游戲結(jié)束。3.2.6Xandy()顯示光標(biāo)縱橫坐標(biāo)函數(shù)該函數(shù)的作用是在每次移動光標(biāo)后,在屏幕左下角顯示出光標(biāo)的縱橫坐標(biāo)。3.2.7圖形功能函數(shù)以下函數(shù)原形都在graphics.h中。(1)registerbgidriver():(2)initgraph(int *driver, int *mode, cha

23、r *path):用于初始化圖形系統(tǒng),并裝入相應(yīng)的圖形驅(qū)動器。該函數(shù)把由driver所指向的圖形驅(qū)動器代碼裝入內(nèi)存。如果圖形驅(qū)動器未裝入內(nèi)存,圖形函數(shù)將不能操作。圖形函數(shù)所用的屏顯模式由mode所指向的整數(shù)值確定。最后,圖形驅(qū)動器的路徑是由path所指向的字符串給出。如果沒有指定路徑,就在當(dāng)前工作路徑上尋找。(3)rectangle(int left,int top,int right,int bottom):函數(shù)rectangle()用當(dāng)前畫出由坐標(biāo)left,top及right,bottom所定義的矩形。(4)setcolor(int color):把當(dāng)前畫線顏色設(shè)置為color所指定的顏色

24、。每個圖形顯示卡的有效顏色由setpalette()提供。(5)closegraph():該函數(shù)使圖形狀態(tài)失效,并且釋放用于保存圖形驅(qū)動器和字體的系統(tǒng)內(nèi)存。當(dāng)你的程序既用到圖形輸出又用到非圖形輸出時,應(yīng)該用此函數(shù)。該函數(shù)還把系統(tǒng)屏顯模式返回到調(diào)用initgragh()前的狀態(tài)。4 調(diào)試分析 該程序運(yùn)行后就會在電腦屏幕上顯示下面所示圖象。該界面上邊顯示了兩個玩家的控制鍵盤,和下棋方法。所以程序運(yùn)行之后我們就夠完成人和人的對戰(zhàn)了,其結(jié)果如下圖所示: 總結(jié)為期一周的算法課程設(shè)計(jì)到這里就要結(jié)束了,這次課程設(shè)計(jì)由于我本人對游戲的興趣,我選擇了五子棋游戲。在這為期一周的時間里,我不斷的向同學(xué)和老師尋求幫助

25、,不斷的在網(wǎng)上和圖書館查閱資料,感覺收獲很大。這個程序是對編程基本功的一個訓(xùn)練,將分支、循環(huán)、數(shù)組、函數(shù)綜合應(yīng)用,而不僅限于編制獨(dú)立的小程序,通過游戲過程增加編程的興趣,提高編程水平。編制該程序我對以下的知識點(diǎn)進(jìn)行的鞏固和掌握:1.數(shù)組元素為結(jié)構(gòu)體的數(shù)組應(yīng)用。2.全局變量應(yīng)用。3.按鍵的處理。4.數(shù)組元素圖形坐標(biāo)的對應(yīng)。5.圖形方式等等。雖然該程序是一個普通而又簡單的程序,但是對于一C語言初級階段的學(xué)生來說,是一個很好的鍛煉甚至可以說是一個很好的提高。由于個人能力的限制該程序還有許多的缺陷,若要進(jìn)一步的完善還需要對C語言更深一步的學(xué)習(xí)。該五子棋游戲由于要實(shí)現(xiàn)在屏幕上的可視化顯示,所以要用到C語

26、言里面的圖象函數(shù),在圖象函數(shù)這一快,以前學(xué)習(xí)C語言的時候就沒有接觸過,所以在編制這個程序的時候我遇到了很多困難。但是在老師和同學(xué)的幫助下我還是粗略的完成這次任務(wù),所以我在這里我要感謝在這個過程中一直幫助我的老師和同學(xué)。參考文獻(xiàn)1數(shù)據(jù)結(jié)構(gòu)(C語言版),嚴(yán)蔚敏,清華大學(xué)出版社,20052算法設(shè)計(jì)與分析,王曉東主編,清華大學(xué)出版社,20053汪詩林等譯,數(shù)據(jù)結(jié)構(gòu)、算法與應(yīng)用,(美)Sartaj Sahni著,機(jī)械工業(yè)出版社, 19994數(shù)據(jù)結(jié)構(gòu)與算法分析,CLIFFORD A. SHAFFER著,張銘、劉曉丹譯,電子工業(yè)出版社,19985 C語言完全手冊,楊峰編著,科學(xué)出版社,20086 C語言程序

27、設(shè)計(jì)應(yīng)用教程,劉玲,西南師范大學(xué)出版社,2006 附 錄: 源程序#include#include#include#include#include#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b#define SPACE 0x3920#define BILI 20#define JZ 4#define JS 3#define N 19int boxNN,s; /*落子點(diǎn)*/int step_x,step_y ;int key ;int flag,i,j ;v

28、oid draw_box();void draw_cicle(int x,int y,int color);void change();void judgewho(int x,int y);void judgekey();int judgeresult(int x,int y);void attentoin();void attentoin() /*游戲規(guī)則*/ char ch ; printf(Play attentoins:nn); printf(1. Press Left,Right,Up,Down Key to move Piecenn);/*方向鍵移動棋子*/ printf(2. P

29、ress Space to place the Piecenn);/*空格鍵確定棋子落點(diǎn)*/ printf(3. DO NOT press Space outside of the draw_boxnn);/*棋盤外不能落棋*/ printf(Do you accept the above Playing attentoins? Y/Other:);/*是否遵守*/ while(1) ch=getche(); if(ch=Y|ch=y) break ; else exit(0); printf(nnwhat size of the draw_box:); scanf(%d,&s); /*輸出棋

30、盤大小*/ printf(nnwho is the frist:1 or 2? ); /*誰先落子*/ while(1) scanf(%d,&flag); if(flag!=1&flag!=2) printf(Error!n); else break; void draw_box() /*畫出棋盤*/ int x1,x2,y1,y2 ; setbkcolor(LIGHTBLUE); /*背景色*/ setcolor(YELLOW); /*文本色*/ gotoxy(7,2); printf(Left, Right, Up, Down KEY to move, Space to put, ESC-

31、quit.); for(x1=1,y1=1,y2=s;x1=s;x1+) line(x1+JZ)*BILI,(y1+JS)*BILI,(x1+JZ)*BILI,(y2+JS)*BILI);/*畫豎線*/ for(x1=1,y1=1,x2=s;y1=s;y1+) line(x1+JZ)*BILI,(y1+JS)*BILI,(x2+JZ)*BILI,(y1+JS)*BILI); /*畫橫線*/ for(x1=1;x1=s;x1+) for(y1=1;y1=s;y1+) boxx1y1=0 ; /*棋盤初始化*/void draw_cicle(int x,int y,int color) /*棋子*

32、/ setcolor(color); /*棋子顏色*/ setlinestyle(SOLID_LINE,0,1); /*線條類型*/ x=(x+JZ)*BILI ; y=(y+JS)*BILI ; circle(x,y,8); /*畫半徑為8的棋子*/void judgekey() switch(key) case LEFT : /*左鍵控制棋子左移*/ if(step_x-1=1;i-) if(boxij=0) draw_cicle(step_x,step_y,LIGHTBLUE); break ; if(is) break ; else for(i=step_x+1,j=step_y;is

33、)break ; step_x=i ; judgewho(step_x,step_y); break ; case DOWN : /*下鍵控制棋子下移*/ if(step_y+1s) break ; else for(i=step_x,j=step_y+1;js)break ; step_y=j ; judgewho(step_x,step_y); break ; case UP : /*上鍵控制棋子上移*/ if(step_y-1=1;j-) if(boxij=0) draw_cicle(step_x,step_y,LIGHTBLUE); break ; if(j=1&step_x=1&st

34、ep_y=s) if(boxstep_xstep_y=0) boxstep_xstep_y=flag ; if(judgeresult(step_x,step_y)=1) sound(1000); delay(1000); nosound(); gotoxy(30,4); cleardevice(); if(flag=1) settextstyle(3,0,5); outtextxy(120,120,The White Win !); /*顯示白棋贏*/ setcolor(14); if(flag=2) settextstyle(3,0,5); outtextxy(120,120,The Re

35、d Win !); /*顯示紅棋贏*/ setcolor(15); settextstyle(3,0,5); getch(); exit(0); change(); break ; else break ; void change() /*改變玩家*/ if(flag=1) flag=2 ; else flag=1 ;void judgewho(int x,int y) if(flag=1) draw_cicle(x,y,15); /*畫白棋*/ if(flag=2) draw_cicle(x,y,4); /*畫紅棋*/int judgeresult(int x,int y) int j,k,n; while(1) n

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!