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