版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> C語言程序設(shè)計(jì) 課程設(shè)計(jì)</p><p> 題目: 黑白棋 </p><p> 課程設(shè)計(jì)(報(bào)告)任務(wù)及評語</p><p> 學(xué) 號學(xué)生姓名專業(yè)班級</p><p> 程序設(shè)計(jì)(報(bào)告)題目黑白棋</p><p> 程序設(shè)計(jì)(報(bào)告)任務(wù)程序設(shè)計(jì)的任務(wù)與要求:(1)掌握C
2、語言編程的基礎(chǔ)知識。(2)較熟練地編寫C語言應(yīng)用程序。(3)了解C語言的常用標(biāo)準(zhǔn)函數(shù)、編程技巧、異常處理。(5)聯(lián)系已學(xué)過的內(nèi)容,鞏固所學(xué)的理論,增強(qiáng)獨(dú)立工作能力。(6)通過設(shè)計(jì)主要使學(xué)生有一個(gè)獨(dú)立編寫程序的過程,對理論學(xué)習(xí)及動(dòng)手能力都有一個(gè)很大的提高。(7)通過本次設(shè)計(jì),進(jìn)一步培養(yǎng)學(xué)生熱愛專業(yè)的思想,同時(shí)對本專業(yè)綜合素質(zhì)的提高起一個(gè)積極的推動(dòng)作用。課程設(shè)計(jì)過程中,要嚴(yán)格遵守實(shí)踐環(huán)節(jié)的時(shí)間安排,聽從指導(dǎo)教師的指導(dǎo)。正確地完成上述內(nèi)容,記
3、錄實(shí)習(xí)日記,規(guī)范完整地撰寫出課程設(shè)計(jì)報(bào)告。</p><p> 指導(dǎo)教師評語及成績成績: 指導(dǎo)教師簽字: 年 月 日</p><p><b> 目 錄</b></p><p> 第1章 課程設(shè)計(jì)的目的與要求1</p><p>
4、 1.1 課程設(shè)計(jì)目的1</p><p> 1.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境1</p><p> 1.3 課程設(shè)計(jì)的預(yù)備知識1</p><p> 1.4 課程設(shè)計(jì)要求1</p><p> 第2章 課程設(shè)計(jì)內(nèi)容2</p><p> 2.1程序功能介紹2</p><p> 2.2
5、程序整體設(shè)計(jì)說明2</p><p> 2.2.1設(shè)計(jì)思路2</p><p> 2.2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及用法說明3</p><p> 2.2.3程序結(jié)構(gòu)(流程圖)4</p><p> 2.2.4各模塊的功能及程序說明6</p><p> 2.2.5程序結(jié)果6</p><p>
6、 2.3程序源代碼及注釋6</p><p> 第3章 課程設(shè)計(jì)總結(jié)15</p><p><b> 參考資料 16</b></p><p> 第1章 課程設(shè)計(jì)的目的與要求</p><p> 1.1 課程設(shè)計(jì)目的</p><p> 本課程設(shè)計(jì)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)重要的實(shí)踐性環(huán)節(jié)之
7、一,是在學(xué)生學(xué)習(xí)完《程序設(shè)計(jì)語言(C)》課程后進(jìn)行的一次全面的綜合練習(xí)。本課程設(shè)計(jì)的目的和任務(wù): </p><p> 1. 鞏固和加深學(xué)生對C語言課程的基本知識的理解和掌握 </p><p> 2. 掌握C語言編程和程序調(diào)試的基本技能 </p><p> 3. 利用C語言進(jìn)行基本的軟件設(shè)計(jì)</p><p> 4. 掌握書寫程序設(shè)計(jì)說明
8、文檔的能力</p><p> 5. 提高運(yùn)用C語言解決實(shí)際問題的能力</p><p> 1.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境</p><p> 硬件要求能運(yùn)行Windows 2000/XP操作系統(tǒng)的微機(jī)系統(tǒng)。C語言程序設(shè)計(jì)及相應(yīng)的開發(fā)環(huán)境。</p><p> 1.3 課程設(shè)計(jì)的預(yù)備知識</p><p> 熟悉C語言及C
9、語言開發(fā)工具。</p><p> 1.4 課程設(shè)計(jì)要求</p><p> 1. 分析課程設(shè)計(jì)題目的要求2. 寫出詳細(xì)設(shè)計(jì)說明3. 編寫程序代碼,調(diào)試程序使其能正確運(yùn)行4. 設(shè)計(jì)完成的軟件要便于操作和使用5. 設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告</p><p> 第2章 課程設(shè)計(jì)內(nèi)容</p><p><b> 2.1程序功
10、能介紹</b></p><p> 本游戲只有在可以吃到對方棋子的方格里落子</p><p> 吃子規(guī)則:采用夾吃的原則,左圖用紅色標(biāo)記的是黑方可落子的位置。當(dāng)黑方落子之后,則夾在兩黑子中間的白子都將變?yōu)楹谧?。右圖是落子后的棋盤布局,藍(lán)色標(biāo)記的是白方可落子的位置。夾子的方向包含:水平、豎直、斜對角。</p><p> 1.點(diǎn)擊“新游戲”,將從新初始化
11、棋局。</p><p> 2. 打開游戲存檔,默認(rèn)是.bwc文件</p><p> 3. 保存當(dāng)前游戲,默認(rèn)擴(kuò)展名為.bwc</p><p> 4. 后退一步,即悔棋</p><p> 5. 前進(jìn)一步,只有在前面的操作存在后退的基礎(chǔ)上,該按鈕才有效。</p>
12、<p> 6.“與或圖”按鈕,當(dāng)選擇與或法與電腦博弈時(shí)會顯示與或圖。</p><p> 7.點(diǎn)擊設(shè)置按鈕后,會出現(xiàn)以下對話框,可以修改設(shè)置,點(diǎn)擊確定按鈕后生效。</p><p> 2.2程序整體設(shè)計(jì)說明</p><p> 本程序設(shè)計(jì)為人與人對弈,一方執(zhí)黑棋,一方執(zhí)白棋,輪流走。棋盤為8乘8格,初始狀態(tài)在棋盤中央交叉排放黑白棋子各兩枚,為統(tǒng)計(jì)棋子
13、個(gè)數(shù),走一個(gè)棋子計(jì)一分,白棋先走。每個(gè)棋手下棋時(shí),擺子的位置必須是以自己的棋子能包圍住對方一個(gè)或多個(gè)棋子,被包圍的對方棋子將變成自己的棋子。包圍的方向可以是上下左右以及左右斜線共8個(gè)方向,只要能連成一條線即可。當(dāng)輪到一個(gè)棋手?jǐn)[子,而他沒有可以包圍對方棋子的位置時(shí),他必須停步,讓對方走棋,直到他可以走為止。當(dāng)棋盤上有一方的棋子為0或下滿64格,游戲結(jié)束,棋子少者輸。</p><p><b> 2.2.1
14、設(shè)計(jì)思路</b></p><p> 從程序表面看,這是一個(gè)二維平面圖,所以數(shù)據(jù)用二維數(shù)組來表示,數(shù)組兩個(gè)下標(biāo)可以表示棋盤上的位置,數(shù)組元素的值代表棋格上的狀態(tài),共有三種情況,分別是0代表空格,1代表白棋,2代表黑棋。這樣程序的主要工作是接收棋手按鍵操作,棋手用Up、Down、Left、Right控制光標(biāo)移動(dòng),回車鍵表示落子。如果無棋可走則顯示停步信息。一旦接收到回車鍵或空格鍵,說明棋手落子,先判斷是
15、否是有效位置,也就是說已經(jīng)有棋子的位置不能重疊落子,然后再判斷該位置能否吃掉對方的棋子(根據(jù)黑白棋的游戲規(guī)則,只能將棋子落子能吃掉對方棋子的位置上),如果條件滿足則在該位置落子,落子時(shí)執(zhí)行這樣幾個(gè)步驟,先調(diào)用畫棋子函數(shù),將棋盤的相應(yīng)位置上畫上棋子,再調(diào)用吃棋子函數(shù),將對手的棋子變成自己顏色的棋子,然后根據(jù)吃掉對手棋子的個(gè)數(shù),給自己加上相應(yīng)的分?jǐn)?shù)和給對手減去相應(yīng)的分?jǐn)?shù),再將數(shù)組中的相應(yīng)元素賦值,標(biāo)志該位置已經(jīng)落子,最后將落子的權(quán)限交給對手
16、。</p><p> 2.2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及用法說明 </p><p> 在主函數(shù)中,通過調(diào)用繪制棋盤、棋手對戰(zhàn),判斷棋盤變化、改變棋子顏色等函數(shù)的調(diào)用來實(shí)現(xiàn)主函數(shù)的相應(yīng)的功能。 </p><p><b> 繪制棋盤和初始棋子</b></p><p><b> rawQp</b></
17、p><p> 棋手對戰(zhàn) playtoplay</p><p> 判斷棋盤變化(能否分出勝負(fù))</p><p> <QpChange></p><p><b> 計(jì)算棋手的成績</b></p><p><b> 輸出勝利者信息</b></p&g
18、t;<p><b> Y</b></p><p><b> 1</b></p><p><b> <DrawQp></b></p><p><b> 繪制棋盤和初始棋子</b></p><p> 在界面上繪制320*32
19、0的棋盤,并在棋盤中繪制8*8的格子,初始棋子</p><p><b> 2</b></p><p><b> <SetPlay></b></p><p> 設(shè)置棋子第一次的顏色</p><p> 先走棋者持白子,后走棋黑子,每次交替</p><p>&l
20、t;b> 3</b></p><p> <Playtoplay></p><p><b> 人人對戰(zhàn)函數(shù)</b></p><p> 倆棋手交替走棋,定義鍵盤操作等</p><p><b> 4</b></p><p> <Mov
21、eColor></p><p><b> 恢復(fù)原來棋盤狀態(tài)</b></p><p> 棋子由初始位置到落子位置的路徑不改變顏色</p><p><b> 5</b></p><p> <QpChange></p><p><b> 判斷棋
22、盤的變化</b></p><p><b> 改變棋子的顏色</b></p><p> 走棋后判斷棋盤的變化情況,根據(jù)變化情況判斷是否可以輸出分?jǐn)?shù)</p><p><b> 6</b></p><p><b> <DoScore></b></
23、p><p><b> 處理分?jǐn)?shù)</b></p><p> 根據(jù)棋盤上旗子的多少進(jìn)行分?jǐn)?shù)的處理</p><p> 2.2.3程序結(jié)構(gòu)(流程圖)</p><p> (1)落棋位置判斷:</p><p><b> ?。?)輸出成績:</b></p><p&g
24、t; ?。?)輸出最后的勝利者結(jié)果:</p><p> 2.2.4各模塊的功能及程序說明</p><p> 落棋位置的判斷模塊:判斷落子后棋盤的變化,判斷棋手的落棋位置和次數(shù),兩方交換走棋。</p><p> 成績輸出模塊:判斷輸出哪個(gè)棋手的分,在不同的位置輸出,清空成績,判斷哪方勝利。</p><p> 輸出勝利者信息模塊:開始判斷
25、最后的結(jié)果,將兩人分?jǐn)?shù)分別輸出。</p><p><b> 2.2.5程序結(jié)果</b></p><p> 一方執(zhí)黑棋,一方執(zhí)白棋,輪流走棋,每方都試圖在游戲結(jié)束前讓自己棋子的數(shù)目多于對方。按鍵盤上的方向鍵可以上下左右移動(dòng)棋子,按回車鍵可以擺放棋子。下到最后誰的棋子多,誰贏。</p><p> 2.3程序源代碼及注釋</p>
26、<p> [size=12px]#include "graphics.h" /*圖形系統(tǒng)頭文件*/ </p><p> #define LEFT 0x4b00 /*光標(biāo)左鍵值*/ </p><p> #define RIGHT 0x4d00 /*光標(biāo)右鍵值*/ </p><p> #define DOWN 0x5000 /*光標(biāo)
27、下鍵值*/ </p><p> #define UP 0x4800 /*光標(biāo)上鍵值*/ </p><p> #define ESC 0x011b /* ESC鍵值*/ </p><p> #define ENTER 0x1c0d /* 回車鍵值*/ </p><p> int a[8][8]={0},key,score1,score2
28、;/*具體分?jǐn)?shù)以及按鍵與存放棋子的變量*/ </p><p> char playone[3],playtwo[3];/*兩個(gè)人的得分轉(zhuǎn)換成字符串輸出*/ </p><p> void playtoplay(void);/*人人對戰(zhàn)函數(shù)*/ </p><p> void DrawQp(void);/*畫棋盤函數(shù)*/ </p><p>
29、 void SetPlayColor(int x);/*設(shè)置棋子第一次的顏色*/ </p><p> void MoveColor(int x,int y);/*恢復(fù)原來棋盤狀態(tài)*/ </p><p> int QpChange(int x,int y,int z);/*判斷棋盤的變化*/ </p><p> void DoScore(void);/*處理分?jǐn)?shù)
30、*/ </p><p> void PrintScore(int n);/*輸出成績*/</p><p> void playWin(void);/*輸出勝利者信息*/ </p><p> /******主函數(shù)*********/ </p><p> void main(void) </p><p> {In
31、t00wq1 </p><p> initgraph(&gd,&gr,"c:\\tc"); /*初始化圖形系統(tǒng)*/ </p><p> Dra]p]();/*畫棋盤*/ </p><p> playtoplay();/*人人對戰(zhàn)*/ </p><p><b> getch(); <
32、;/b></p><p> closegraph();}/*關(guān)閉圖形系統(tǒng)*/ </p><p> void DrawQp()/*畫棋盤*/ </p><p> {int i,j; </p><p> score1=score2=0;/*棋手一開始得分都為0*/ </p><p> setbkcolor(
33、BLUE); </p><p> for(i=100;i<=420;i+=40) </p><p> {line(100,i,420,i);/*畫水平線*/ </p><p> line(i,100,i,420);} /*畫垂直線*/ </p><p> setcolor(0);/*取消圓周圍的一圈東西*/ </p>
34、<p> setfillstyle(SOLID_FILL,15);/*白色實(shí)體填充模式*/ </p><p> fillellipse(500,200,15,15); /*在顯示得分的位置畫棋*/ </p><p> setfillstyle(SOLID_FILL,8); /*黑色實(shí)體填充模式*/ </p><p> fillellipse(5
35、00,300,15,15); </p><p> a[3][3]=a[4][4]=1;/*初始兩個(gè)黑棋*/ </p><p> a[3][4]=a[4][3]=2;/*初始兩個(gè)白棋*/ </p><p> setfillstyle(SOLID_FILL,WHITE); </p><p> fillellipse(120+3*40,12
36、0+3*40,15,15); </p><p> fillellipse(120+4*40,120+4*40,15,15); </p><p> setfillstyle(SOLID_FILL,8); </p><p> fillellipse(120+3*40,120+4*40,15,15); </p><p> fillellip
37、se(120+4*40,120+3*40,15,15); </p><p> score1=score2=2; /*有棋后改變分?jǐn)?shù)*/ </p><p> DoScore();}/*輸出開始分?jǐn)?shù)*/ </p><p> void playtoplay()/*人人對戰(zhàn)*/ </p><p> {int x,y,t=1,i,j,cc=0;
38、 </p><p> while(1)/*換棋手走棋*/ </p><p> {x=120,y=80;/*每次棋子一開始出來的坐標(biāo),x為行坐標(biāo),y為列坐標(biāo)*/ </p><p> while(1) /*具體一個(gè)棋手走棋的過程*/ </p><p> {PrintScore(1);/*輸出棋手1的成績*/ </p><
39、;p> PrintScore(2);/*輸出棋手2的成績*/ </p><p> SetPlayColor(t);/*t變量是用來判斷棋手所執(zhí)棋子的顏色*/ </p><p> fillellipse(x,y,15,15); </p><p> key=bioskey(0);/*接收按鍵*/ </p><p> if(key=
40、=ESC)/*跳出游戲*/ </p><p><b> break; </b></p><p><b> else </b></p><p> if(key==ENTER)/*如果按鍵確定就可以跳出循環(huán)*/ </p><p> {if(y!=80&&a[(x-120)/40]
41、[(y-120)/40]!=1 </p><p> &&a[(x-120)/40][(y-120)/40]!=2)/*如果落子位置沒有棋子*/ </p><p> {if(t%2==1)/*如果是棋手1移動(dòng)*/ </p><p> a[(x-120)/40][(y-120)/40]=1; </p><p> else/
42、*否則棋手2移動(dòng)*/ </p><p> a[(x-120)/40][(y-120)/40]=2; </p><p> if(!QpChange(x,y,t))/*落子后判斷棋盤的變化*/ </p><p> {a[(x-120)/40][(y-120)/40]=0;/*恢復(fù)空格狀態(tài)*/ </p><p> cc++;/*開始統(tǒng)計(jì)嘗試
43、次數(shù)*/ </p><p> if(cc>=64-score1-score2) /*如果嘗試超過空格數(shù)則停步*/ </p><p> {MoveColor(x,y); </p><p> fillellipse(x,y,15,15); </p><p><b> break;} </b></p>
44、<p><b> else </b></p><p> continue;}/*如果按鍵無效*/ </p><p> DoScore();/*分?jǐn)?shù)的改變*/ </p><p> break;}/*棋盤變化了,則輪對方走棋*/ </p><p> else/*已經(jīng)有棋子就繼續(xù)按鍵*/ </p&
45、gt;<p> continue;} </p><p> else /*四個(gè)方向按鍵的判斷*/ </p><p> if(key==LEFT&&x>120)/*左方向鍵*/ </p><p> {MoveColor(x,y); </p><p> fillellipse(x,y,15,15); &
46、lt;/p><p> SetPlayColor(t); </p><p><b> x-=40; </b></p><p> fillellipse(x,y,15,15);} </p><p><b> else </b></p><p> if(key==RIGHT&
47、amp;&x<400&&y>80)/*右方向鍵*/ </p><p> {MoveColor(x,y); </p><p> fillellipse(x,y,15,15); </p><p> SetPlayColor(t); </p><p><b> x+=40; </b>
48、</p><p> fillellipse(x,y,15,15);} </p><p><b> else </b></p><p> if(key==UP&&y>120)/*上方向鍵*/ </p><p> {MoveColor(x,y); </p><p> f
49、illellipse(x,y,15,15); </p><p> SetPlayColor(t); </p><p><b> y-=40; </b></p><p> fillellipse(x,y,15,15);} </p><p><b> else </b></p>&
50、lt;p> if(key==DOWN&&y<400)/*下方向鍵*/ </p><p> {MoveColor(x,y); </p><p> fillellipse(x,y,15,15); </p><p> SetPlayColor(t); </p><p><b> y+=40; <
51、/b></p><p> fillellipse(x,y,15,15);}} </p><p> if(key==ESC)/*結(jié)束游戲*/ </p><p><b> break; </b></p><p> if((score1+score2)==64||score1==0||score2==0)/*格子
52、已經(jīng)占滿或一方棋子為0判斷勝負(fù)*/ </p><p> {playWin();/*輸出最后結(jié)果*/ </p><p><b> break;} </b></p><p> t=t%2+1; /*一方走后,改變棋子顏色即輪對方走*/ </p><p> cc=0;}}/*計(jì)數(shù)值恢復(fù)為0*/ </p>
53、<p> /*endwhile*/ </p><p> void SetPlayColor(int t)/*設(shè)置棋子顏色*/ </p><p> {if(t%2==1) </p><p> setfillstyle(SOLID_FILL,15);/*白色*/ </p><p><b> else </b&g
54、t;</p><p> setfillstyle(SOLID_FILL,8);}/*灰色*/ </p><p> void MoveColor(int x,int y)/*走了一步后恢復(fù)原來格子的狀態(tài)*/ </p><p> {if(y<100)/*如果是從起點(diǎn)出發(fā)就恢復(fù)藍(lán)色*/ </p><p> setfillstyle(S
55、OLID_FILL,BLUE); </p><p> else/*其他情況如果是1就恢復(fù)白色棋子,2恢復(fù)黑色棋子,或恢復(fù)藍(lán)色棋盤*/ </p><p> switch(a[(x-120)/40][(y-120)/40]) </p><p><b> {case 1: </b></p><p> setfillst
56、yle(SOLID_FILL,15);break; /*白色*/ </p><p><b> case 2: </b></p><p> setfillstyle(SOLID_FILL,8);break; /*黑色*/ </p><p><b> default: </b></p><p>
57、 setfillstyle(SOLID_FILL,BLUE);}}/*藍(lán)色*/ </p><p> int QpChange(int x,int y,int t)/*判斷棋盤的變化*/ </p><p> {int i,j,k,kk,ii,jj,yes; </p><p><b> yes=0; </b></p><p
58、> i=(x-120)/40; /*計(jì)算數(shù)組元素的行下標(biāo)*/ </p><p> j=(y-120)/40; /*計(jì)算數(shù)組元素的列下標(biāo)*/ </p><p> SetPlayColor(t);/*設(shè)置棋子變化的顏色*/ </p><p> /*開始往8個(gè)方向判斷變化*/ </p><p> if(j<6)/*往右邊*/
59、</p><p> {for(k=j+1;k<8;k++) </p><p> if(a[k]==a[j]||a[k]==0)/*遇到自己的棋子或空格結(jié)束*/ </p><p><b> break; </b></p><p> if(a[k]!=0&&k<8) </p>
60、<p> {for(kk=j+1;kk<K&&K</p><p> {a[kk]=a[j]; /*改變棋子顏色*/ </p><p> fillellipse(120+i*40,120+kk*40,15,15);} </p><p> if(kk!=j+1) /*條件成立則有棋子改變過顏色*/ </p><
61、;p><b> yes=1;}} </b></p><p> if(j>1)/*判斷左邊*/ </p><p> {for(k=j-1;k>=0;k--) </p><p> if(a[k]==a[j]||!a[k]) </p><p><b> break; </b>&
62、lt;/p><p> if(a[k]!=0&&k>=0) </p><p> {for(kk=j-1;kk>k&&k>=0;kk--) </p><p> {a[kk]=a[j]; </p><p> fillellipse(120+i*40,120+kk*40,15,15);} <
63、/p><p> if(kk!=j-1) </p><p><b> yes=1;}} </b></p><p> if(i<6)/*判斷下邊*/ </p><p> {for(k=i+1;k<8;k++) </p><p> if(a[k][j]==a[j]||!a[k][j])
64、 </p><p><b> break; </b></p><p> if(a[k][j]!=0&&k<8) </p><p> {for(kk=i+1;kk<K&&K</p><p> {a[kk][j]=a[j]; </p><p> f
65、illellipse(120+kk*40,120+j*40,15,15);} </p><p> if(kk!=i+1) </p><p><b> yes=1;}} </b></p><p> if(i>1)/*判斷上邊*/ </p><p> {for(k=i-1;k>=0;k--) </p
66、><p> if(a[k][j]==a[j]||!a[k][j]) </p><p><b> break; </b></p><p> if(a[k][j]!=0&&k>=0) </p><p> {for(kk=i-1;kk>k&&k>=0;kk--) </
67、p><p> {a[kk][j]=a[j]; </p><p> fillellipse(120+kk*40,120+j*40,15,15);} </p><p> if(kk!=i-1) </p><p><b> yes=1;}} </b></p><p> if(i>1&
68、&j<6)/*右上*/ </p><p> {for(k=i-1,kk=j+1;k>=0&&kk<8;k--,kk++) </p><p> if(a[k][kk]==a[j]||!a[k][kk]) </p><p><b> break; </b></p><p>
69、if(a[k][kk]&&k>=0&&kk<8) </p><p> {for(ii=i-1,jj=j+1;ii>k&&k>=0;ii--,jj++) </p><p> {a[ii][jj]=a[j]; </p><p> fillellipse(120+ii*40,120+jj*40,
70、15,15);} </p><p> if(ii!=i-1) </p><p><b> yes=1;}} </b></p><p> if(i<6&&j>1)/*左下*/ </p><p> {for(k=i+1,kk=j-1;k<8&&kk>=0;k++
71、,kk--) </p><p> if(a[k][kk]==a[j]||!a[k][kk]) </p><p><b> break; </b></p><p> if(a[k][kk]!=0&&k<8&&kk>=0) </p><p> {for(ii=i+1,jj=
72、j-1;ii<K&&K</p><p> {a[ii][jj]=a[j]; </p><p> fillellipse(120+ii*40,120+jj*40,15,15);} </p><p> if(ii!=i+1) </p><p><b> yes=1;}} </b></p&g
73、t;<p> if(i>1&&j>1)/*左上*/ </p><p> {for(k=i-1,kk=j-1;k>=0&&kk>=0;k--,kk--) </p><p> if(a[k][kk]==a[j]||!a[k][kk]) </p><p><b> break; <
74、;/b></p><p> if(a[k][kk]!=0&&k>=0&&kk>=0) </p><p> {for(ii=i-1,jj=j-1;ii>k&&k>=0;ii--,jj--) </p><p> {a[ii][jj]=a[j]; </p><p>
75、 fillellipse(120+ii*40,120+jj*40,15,15);} </p><p> if(ii!=i-1) </p><p><b> yes=1;}} </b></p><p> if(i<6&&j<6)/* 右下*/ </p><p> {for(k=i+1,
76、kk=j+1;kk<8&&kk<8;k++,kk++) </p><p> if(a[k][kk]==a[j]||!a[k][kk]) </p><p><b> break; </b></p><p> if(a[k][kk]!=0&&kk<8&&k<8) <
77、/p><p> {for(ii=i+1,jj=j+1;ii<K&&K</p><p> {a[ii][jj]=a[j]; </p><p> fillellipse(120+ii*40,120+jj*40,15,15);} </p><p> if(ii!=i+1) </p><p><
78、b> yes=1;}} </b></p><p> return yes;}/*返回是否改變過棋子顏色的標(biāo)記*/ </p><p> void DoScore()/*處理分?jǐn)?shù)*/ </p><p> {int i,j; </p><p> score1=score2=0;/*重新開始計(jì)分?jǐn)?shù)*/ </p>
79、<p> for(i=0;i<8;i++) </p><p> for(j=0;j<8;j++) </p><p> if(a[j]==1)/*分別統(tǒng)計(jì)兩個(gè)人的分?jǐn)?shù)*/ </p><p> score1++; </p><p><b> else </b></p><
80、;p> if(a[j]==2) </p><p> score2++;} </p><p> void PrintScore(int playnum)/*輸出成績*/ </p><p> {if(playnum==1)/*清除以前的成績*/ </p><p> {setfillstyle(SOLID_FILL,BLUE); &
81、lt;/p><p> bar(550,100,640,400);} </p><p> setcolor(RED); </p><p> settextstyle(0,0,4);/*設(shè)置文本輸出樣式*/ </p><p> if(playnum==1)/*判斷輸出哪個(gè)棋手的分,在不同的位置輸出*/ </p><p>
82、; {sprintf(playone,"%d",score1); </p><p> outtextxy(550,200,playone);} </p><p><b> else </b></p><p> {sprintf(playtwo,"%d",score2); </p>&
83、lt;p> outtextxy(550,300,playtwo);} </p><p> setcolor(0);} </p><p> void playWin()/*輸出最后的勝利者結(jié)果*/ </p><p> {settextstyle(0,0,4); </p><p> setcolor(12); </p>
84、<p> if(score2>score1)/*開始判斷最后的結(jié)果*/ </p><p> outtextxy(100,50,"black win!"); </p><p><b> else </b></p><p><b> if(score2</b></p>
85、<p> outtextxy(100,50,"white win!"); </p><p><b> else </b></p><p> outtextxy(60,50,"you all win!");}</p><p> 第3章 課程設(shè)計(jì)總結(jié)</p><p&g
86、t; 通過本次C語言課程設(shè)計(jì),我覺得對自己提高很大,克服了偷懶的毛病,這在我以后的學(xué)習(xí)和工作中的心理定位與調(diào)節(jié)有很大的幫助。我感受到了編程是一項(xiàng)非常繁瑣周密的活動(dòng),它不但需要一個(gè)人周密思考問題的能力、處理問題的能力,還需要有足夠的耐心和嚴(yán)謹(jǐn)治學(xué)的作風(fēng),來不得半點(diǎn)馬虎。</p><p> 通過本次論文設(shè)計(jì),我初步學(xué)會了論文設(shè)計(jì)的基本方法,學(xué)會了怎樣去借鑒別人的方法</p><p> 和
87、經(jīng)驗(yàn),知道如何去查找資料和整合處理這些資料的能力,這為以后的大學(xué)畢業(yè)設(shè)計(jì)論文打下了一個(gè)初步的基礎(chǔ)使我受益最大的是享受到了一種成功的喜悅,在這兩個(gè)星期之中從開始的確定論文題目,然后是上網(wǎng)和上圖書館查找資料,編寫C語言原程序,然后是進(jìn)行編譯,這個(gè)環(huán)節(jié)是一個(gè)非常痛苦和艱難的,常常會因?yàn)橐恍↑c(diǎn)的錯(cuò)誤而在編譯失敗與再次修改的漫漫循環(huán)之路中苦惱,但失敗的越多,對人的考驗(yàn)就越多,在編譯運(yùn)行成功之后,享受成功的喜悅也就越多,另外在調(diào)試程序的過程中不斷的
88、思考和運(yùn)用已經(jīng)學(xué)到的知識,這對于自己是有很大的提高的。</p><p> 這個(gè)黑白棋游戲原程序的最大特點(diǎn)是采用了在主函數(shù)中調(diào)用子函數(shù)思想,每一種功能都</p><p> 是用子函數(shù)的辦法來進(jìn)行處理,簡潔,清晰,方便,不容易出現(xiàn)錯(cuò)誤。 在輸入錯(cuò)誤時(shí)本</p><p> 來想用一種警告的鈴聲來提醒用戶,由于所學(xué)的知識不多,自己的編程經(jīng)驗(yàn)不足,按現(xiàn)</p>
89、;<p> 有的知識水平有些東西暫時(shí)還無法解決,還有待于在以后的學(xué)習(xí)中不斷提高和改進(jìn)!</p><p> 在課程設(shè)計(jì)過程中,我學(xué)到了很多人生的哲理,懂得怎么樣去制定計(jì)劃,怎么樣去實(shí)現(xiàn)這個(gè)計(jì)劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒,黑夜過去了,我們收獲的是黎明。在本次實(shí)踐中,給我印象最為深刻的是在文件刪除程序的編譯過程中,先有我的各個(gè)子程序都已經(jīng)編輯成功,那么這最后的程序就將是我成功的
90、關(guān)鍵。老天不會讓我太過順利,他在這最后的時(shí)刻設(shè)置的障礙,是要考驗(yàn)我的能力,他要置我于死地?在這個(gè)問題的解決上,我打了退堂鼓,我不能忍受長時(shí)間的無功而反,時(shí)間正在消磨我的意志。但是最后在同學(xué)和老師的鼓勵(lì)下,我克服了這個(gè)最大的困難!完成了我的課程設(shè)計(jì)!</p><p><b> 參考資料</b></p><p> [1] 鄭影.網(wǎng)絡(luò)設(shè)備與管理實(shí)用實(shí)訓(xùn)教程.北京:清華大
91、學(xué)出版社,2002</p><p> [2] 郝與明.多媒體電腦計(jì)算機(jī)網(wǎng)絡(luò)設(shè)備與管理實(shí)訓(xùn)教程.北京:清華大學(xué)出版社,2002</p><p> [3] 文光斌. 網(wǎng)絡(luò)設(shè)備與管理.北京:中國電子工業(yè)出版社,2010</p><p> [4] 辛再甫. 新電腦課堂?網(wǎng)絡(luò)設(shè)備與管理篇.吉林: 電子工業(yè)出版社,2000</p><p> [5
92、] Simon Robinson, K.Scott Allen等.C#高級編程.北京:清華大學(xué)出版社,2008</p><p> [6] [英]夏普. Visual C# 2005從入門到精通.北京:清華大學(xué)出版社,2006</p><p> [7] 劉基誠. C++精髓.北京:中國電力出版社, 2001</p><p> [8] 薩師煊,王珊.數(shù)據(jù)庫系統(tǒng)概論
93、(第三版).北京:高等教育出版社,2000</p><p> [9] 鄭阿齊,劉啟芬等. SQL Server2000實(shí)用教程.北京:電子工業(yè)出版社, 2009</p><p> [10] 劉浩,陳曙東主編. C#編程實(shí)例與技巧.北京:清華大學(xué)出版社,2009</p><p> [11] 譚桂華,魏亮等主編. Visual C# 高級編程范例.北京:清華大學(xué)出
94、版社,2004:</p><p> [12] 劉超,張莉編著.可視化面向?qū)ο蠹夹g(shù).北京:北京航空航天大學(xué)出版社,2001</p><p> [13] Karli Watson Christian Nagel 等. C#入門經(jīng)典.北京:清華大學(xué)出版社,2010</p><p> [14] 張奇,李律松,衛(wèi)建偉等編著. Visual C# 數(shù)據(jù)庫項(xiàng)目案例導(dǎo)航.北京
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計(jì)---黑白棋游戲
- c語言課程設(shè)計(jì)--黑白棋游戲
- c語言程序設(shè)計(jì)課程設(shè)計(jì)(論文)-黑白棋
- 黑白棋游戲課程設(shè)計(jì)
- vb黑白棋游戲課程設(shè)計(jì)報(bào)告
- 嵌入式wince課程設(shè)計(jì)報(bào)告(黑白棋)
- 黑白棋游戲數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 黑白棋畢業(yè)論文---黑白棋游戲設(shè)計(jì)與開發(fā)(含外文翻譯)
- 黑白棋游戲畢業(yè)設(shè)計(jì)
- 計(jì)算機(jī)技術(shù)基礎(chǔ)課程設(shè)計(jì)---黑白棋
- 基于qt的黑白棋游戲
- 黑白棋游戲畢業(yè)論文
- 黑白棋游戲設(shè)計(jì)與開發(fā)畢業(yè)論文
- 基于qt的黑白棋游戲開發(fā)(論文)
- 基于Qt的黑白棋游戲(終稿).doc
- 基于java me的黑白棋游戲設(shè)計(jì)及實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 基于java me的黑白棋游戲設(shè)計(jì)及實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----黑白棋子的識別與分揀輸送裝置的設(shè)計(jì)
- 黑白棋盤網(wǎng)格中的直線檢測方法研究.pdf
- c語言課程設(shè)計(jì)報(bào)告
評論
0/150
提交評論