




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
實驗報告課程名稱:C語言課程設(shè)計實驗項目:五子棋游戲設(shè)計專業(yè)班級:計專1502Iy7姓名:孫奇學(xué)號:JTJ|'■-——I''重實驗室號:實驗組號:實驗時間:批閱時間:rI?指導(dǎo)教師:成績:根源網(wǎng)絡(luò)沈陽工業(yè)大學(xué)實驗報告(合用計算機(jī)程序設(shè)計類)專業(yè)班級:計專1502學(xué)號:姓名:孫奇實驗名稱:五子棋游戲設(shè)計1?實驗內(nèi)容:1)掌握C語言的基本語法構(gòu)造、程序設(shè)計方法和一些常有的算法;2)掌握對程序排查錯誤的能力。2?實驗內(nèi)容:1)實現(xiàn)雙人對戰(zhàn)的簡單步驟和規(guī)則,能夠判斷勝敗;2)兩方輪番使用鍵盤的“T””鍵控制棋子在屏幕上的地點,按“空格”鍵擱置棋子,判斷棋子應(yīng)擱置在棋盤范圍內(nèi)且不可以已經(jīng)有棋子,不然使用揚聲器提示不可以擱置;(3)當(dāng)一方的棋子數(shù)內(nèi)行、列或?qū)蔷€上連續(xù)達(dá)到5個(無禁手判斷),則為勝方,在屏幕上顯示成功一方,按隨意鍵退出程序。3?實驗方案(程序設(shè)計說明)(1)算法設(shè)計思路棋盤設(shè)計為19X格,初始狀態(tài)光標(biāo)在棋盤的左上,黑棋先走,輪漂泊子,當(dāng)一方19連成五子或下滿棋盤時,游戲結(jié)束。當(dāng)游戲一方成功后顯示成功信息。從程序表面看,這是一個二維平面圖,因此數(shù)據(jù)用二維數(shù)組來表示,數(shù)組兩個下標(biāo)I.■_■■.能夠表示棋盤上的地點,數(shù)組元素的值代表棋格上的狀態(tài),共有三種狀況,分別是0代表無棋子,1代表黑棋,2代表白棋。這樣程序的主要工作是接收棋手按鍵操作,兩方輪流使用鍵盤的、、“?”、鍵控制光標(biāo)挪動,“T”“J”空格鍵表示落子。一旦接收到空格鍵,說明棋手落子,先判斷是不是有效地點,也就是說棋子應(yīng)在棋盤內(nèi)或棋盤的空地點上,無效地點時利用揚聲器發(fā)聲警告。落子成功后,立刻判斷以該地點為中心的八個方向相鄰的能否有同樣顏色的棋子連成五子,假如連成五子,貝掰戲結(jié)束,輸出成功一方的信息。假如想在棋戰(zhàn)的過程中退出游戲,能夠按Esc鍵。(2)程序功能流程圖根源網(wǎng)絡(luò)程序運轉(zhuǎn)結(jié)果(1)規(guī)則界面(2)棋戰(zhàn)界面獲勝界面出現(xiàn)的問題及解決方法(1)游戲開始時,棋子本來初始在棋盤中央,一旦中央落子后,初始棋子與已有棋子重疊,為認(rèn)識決問題將初始棋子挪動到棋盤左上方棋盤之外。棋子都為空心圓,在棋盤不好劃分正在控制的棋子,改為已確立落子的棋子為實心圓,正在控制的棋子為空心圓。附件A沈陽工業(yè)大學(xué)實驗報告(合用計算機(jī)程序設(shè)計類)專業(yè)班級:計專1502學(xué)號:姓名:孫奇實驗程序:本程序在WindowsXPSP3操作系統(tǒng)及TurboC2.0開發(fā)環(huán)境下調(diào)試經(jīng)過#include<stdio.h>#include<stdlib.h>#include<graphics.h>#include<bios.h>#include<conio.h>#defineLEFT0x4b00#defineRIGHT0x4d00#defineDOWN0x5000#defineUP0x4800:■■<■■■,#defineESC0x011b#defineSPACE0x3920■'.I#defineBILI20#defineJZ4#defineJS3#defineSIZE19intbox[SIZE][SIZE];intstep_x,step_y;intkey;intflag=1;voidattentoin( );voiddraw_box( );voiddraw_cicle(intx,inty,intcolor);voiddraw_slice(intx,inty,intcolor);根源網(wǎng)絡(luò)voidchange( );voidjudgewho(intx,inty);voidjudgekey( );intjudgeresult(intx,inty);voidattention( ){charch;window(1,1,80,25);textbackground(LIGHTBLUE);textcolor(YELLOW);clrscr( );gotoxy(15,4);printf("PlayRules:");gotoxy(15,8);printf("1.PressLeft,Right,Up,DownKeytomovePiece");gotoxy(15,12);printf("2.PressSpacetoplacethePiece");gotoxy(15,16);printf("3.DONOTpressSpaceoutsideofthechessboard");gotoxy(15,20);printf("DoyouaccepttheabovePlayingRules?[Y/N]:");while(1){m'gotoxy(60,20);ch=getche( );if(ch=='Y'||ch=='y')break;elseif(ch=='N'||ch=='n'){window(1,1,80,25);textbackground(BLACK);textcolor(LIGHTGRAY);clrscr( );exit(0);}'gotoxy(51,12);printf("");}}voiddraw_box( ){intx1,x2,y1,y2;setbkcolor(LIGHTBLUE);setcolor(YELLOW);gotoxy(7,2);printf("Left,Right,Up,DownKEYtomove,Spacetoput,ESC-quit.");for(x1=1,y1=1,y2=18;x1<=18;x1++)line((x1+JZ)*BILI,(y1+JS)*BILI,(x1+JZ)*BILI,(y2+JS)*BILI);for(x1=1,y1=1,x2=18;y1<=18;y1++)line((x1+JZ)*BILI,(y1+JS)*BILI,(x2+JZ)*BILI,(y1+JS)*BILI);for(x1=1;x1<=18;x1++)for(y1=1;y1<=18;y1++)box[x1][y1]=0;根源網(wǎng)絡(luò)}voiddraw_circle(intx,inty,intcolor)_{setcolor(color);setlinestyle(SOLID_LINE,0,1);x=(x+JZ)*BILI;y=(y+JS)*BILI;circle(x,y,8);}voiddraw_slice(intx,inty,intcolor)_{x=(x+JZ)*BILI;y=(y+JS)*BILI;setcolor(color);setfillstyle(SOLID_FILL,color);circle(x,y,8);,jfloodfill(x,y,color);setcolor(color);setfillstyle(SOLID_FILL,color);pieslice(x,y,0,360,8);setcolor(color);}voidjudgekey( ){inti;intj;switch(key){caseLEFT:if(step_x-1<0)break;else{for(i=step_x-1,j=step_y;i>=1;i--)if(box[i][j]==0){draw_circle(step_x,step_y,LIGHTBLUE);break;}if(i<1)break;step_x=i;judgewho(step_x,step_y);break;}caseRIGHT:if(step_x+1>18)break;else{for(i=step_x+1,j=step_y;i<=18;i++)if(box[i][j]==0){draw_circle(step_x,step_y,LIGHTBLUE);break;}if(i>18)break;step_x=i;judgewho(step_x,step_y);break;根源網(wǎng)絡(luò)}caseDOWN:if((step_y+1)>18)break;else{for(i=step_x,j=step_y+1;jv=18;j++)if(box[i][j]==0){draw_circle(step_x,step_y,LIGHTBLUE);break;}if(j>18)break;step_y=j;judgewho(step_x,step_y);break;}caseUP:if((step_y-1)<0)break;else{for(i=step_x,j=step_y-1;j>=1;j--)if(box[i][j]==0){draw_circle(step_x,step_y,LIGHTBLUE);break;}if(j<1)break;step_y=j;judgewho(step_x,step_y);break;}caseESC:break;caseSPACE:if(step_x>=1&&step_x<=18&&step_y>=1&&step_y<=18)一{一一if(box[step_x][step_y]==0){box[step_x][step_y]=flag;if(flag==1){draw_slice(step_x,step_y,BLUE);一}一1J}Xy■IX*嚴(yán)else{draw_slice(step_x,step_y,WHITE);「J}T-if(judgeresult(step_x,step_y)==1){~一sound(1000);|delay(1000);nosound( );gotoxy(30,4);if(flag==1)根源網(wǎng)絡(luò){setbkcolor(BLUE);cleardevice( );setviewport(100,100,540,380,1);setfillstyle(1,2);setcolor(YELLOW);rectangle(0,0,439,279);floodfill(50,50,14);setcolor(12);settextstyle(1,0,5);outtextxy(20,20,"TheBlackWin!");setcolor(14);settextstyle(3,0,5);outtextxy(120,120,"TheBlackWin!");setcolor(14);settextstyle(2,0,8);getch( );closegraph( );exit(0);}if(flag==2){setbkcolor(BLUE);cleardevice( );setviewport(100,100,540,380,1);setfillstyle(1,2);setcolor(YELLOW);rectangle(0,0,439,279);floodfill(50,50,14);setcolor(12);settextstyle(1,0,8);outtextxy(20,20,"TheWhiteWin!");setcolor(14);settextstyle(3,0,5);outtextxy(120,120,"TheWhiteWin!");"■setcolor(14);settextstyle(2,0,8);getch( );closegraph( );exit(0);}}change( );break;}}elsebreak;}}voidchange( ){if(flag==1)flag=2;elseflag=1;}voidjudgewho(intx,inty){if(flag==1)draw_circle(x,y,BLUE);根源網(wǎng)絡(luò)if(flag==2)draw_circle(x,y,WHITE);_}intjudgeresult(intx,inty){intj,k,n1,n2;while(1){n仁0;n2=0;/*水平向左數(shù)*/for(j=x,k=y;j>=1;j--){if(box[j][k]==flag)n1++;elsebreak;}x”T「/*水平向右數(shù)*/for(j=x,k=y;jv=18;j++){if(box[j][k]==flag)n2++;elsebreak;}if(n1+n2-1>=5){return(1);break;}/*垂直向上數(shù)*/n仁0;n2=0;for(j=x,k=y;k>=1;k--){if(box[j][k]==flag)n1++;elsebreak;}/*垂直向下數(shù)*/for(j=x,k=y;k<=18;k++){if(box[j][k]==flag)n2++;elsebreak;}if(n1+n2-1>=5){return(1);break;根源網(wǎng)絡(luò)}/*向左上方數(shù)*/n仁0;n2=0;for(j=x,k=y;j>=1,k>=1;j--,k--){if(box[j][k]==flag)n1++;elsebreak;}/*向右下方數(shù)*/for(j=x,k=y;j<=18,k<=18;j++,k++){if(box[j][k]==flag)2++;elsebreak;}if(n1+n2-1>=5){return(1);break;}/*向右上方數(shù)*/n仁0;n2=0;for(j=x,k=y;jv=18,k>=1;j++,k--){if(box[j][k]==flag)n1++;elsebreak;}/*向左下方數(shù)*/for(j=x,k=y;j>=1,k<=18;j--,k++){if(box[j][k]==flag)n2++;elsebreak;}if(n1+n2-1>=5)1I..{return(1);break;}】「打'return(0);break
溫馨提示
- 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)于合同事務(wù)往來的文書范例
- 智慧校園建設(shè)及運營合作協(xié)議
- 職工愛崗敬業(yè)責(zé)任協(xié)議書
- 股權(quán)投資合作協(xié)議書
- 建房承包施工合同
- 特殊教育機(jī)構(gòu)教育服務(wù)安全免責(zé)協(xié)議書
- 田徑體育場館租賃合同書
- 股份制組織架構(gòu)優(yōu)化方案
- 全國滇人版初中信息技術(shù)七年級上冊第三單元第14課《數(shù)據(jù)的計算-用函數(shù)計算數(shù)據(jù)》教學(xué)設(shè)計
- 殘疾人無障礙改造協(xié)議
- 2024年一年級數(shù)學(xué)下冊教學(xué)計劃15篇
- 嶺南版六年級美術(shù)下冊教學(xué)工作計劃
- 《電力系統(tǒng)自動化運維綜合實》課件-2M 同軸電纜制作
- 《會計學(xué)原理》習(xí)題及答案
- 門診常見疾病護(hù)理常規(guī)課件
- 數(shù)字化時代的智慧課堂建設(shè)與應(yīng)用
- 會議禮儀頒獎培訓(xùn)課件
- 保衛(wèi)管理員培訓(xùn)課件
- 違停抓拍方案
- 2024年部編版一年級下冊語文期末專項復(fù)習(xí)-非連續(xù)性文本閱讀
- 藥品經(jīng)營質(zhì)量管理制度樣本
評論
0/150
提交評論