C語言十大實例編程_第1頁
C語言十大實例編程_第2頁
C語言十大實例編程_第3頁
C語言十大實例編程_第4頁
C語言十大實例編程_第5頁
已閱讀5頁,還剩94頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、案例一 貪吃蛇游戲#define N 200#include <graphics.h>#include <stdlib.h>#include <dos.h>#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;/*得分*/int gamespeed=50000;/*游戲速度自己調(diào)整*/struct Food int x;/*食物的橫坐標(biāo)*/ int y;/*食物的縱坐標(biāo)*/ int y

2、es;/*判斷是否要出現(xiàn)食物的變量*/food;/*食物的結(jié)構(gòu)體*/struct Snake int xN; int yN; int node;/*蛇的節(jié)數(shù)*/ int direction;/*蛇移動方向*/ int life;/* 蛇的生命,0活著,1死亡*/snake;void Init(void);/*圖形驅(qū)動*/void Close(void);/*圖形結(jié)束*/void DrawK(void);/*開始畫面*/void GameOver(void);/*結(jié)束游戲*/void GamePlay(void);/*玩游戲具體過程*/void PrScore(void);/*輸出成績*/*主函

3、數(shù)*/void main(void) Init();/*圖形驅(qū)動*/ DrawK();/*開始畫面*/ GamePlay();/*玩游戲具體過程*/ Close();/*圖形結(jié)束*/*圖形驅(qū)動*/void Init(void) int gd=DETECT,gm; initgraph(&gd,&gm,"c:tc"); cleardevice();/*開始畫面,左上角坐標(biāo)為(50,40),右下角坐標(biāo)為(610,460)的圍墻*/void DrawK(void)/*setbkcolor(LIGHTGREEN);*/ setcolor(11); setlinesty

4、le(SOLID_LINE,0,THICK_WIDTH);/*設(shè)置線型*/ for(i=50;i<=600;i+=10)/*畫圍墻*/ rectangle(i,40,i+10,49); /*上邊*/ rectangle(i,451,i+10,460);/*下邊*/ for(i=40;i<=450;i+=10) rectangle(50,i,59,i+10); /*左邊*/ rectangle(601,i,610,i+10);/*右邊*/ /*玩游戲具體過程*/void GamePlay(void) randomize();/*隨機(jī)數(shù)發(fā)生器*/ food.yes=1;/*1表示需要出

5、現(xiàn)新食物,0表示已經(jīng)存在食物*/ snake.life=0;/*活著*/ snake.direction=1;/*方向往右*/ snake.x0=100;snake.y0=100;/*蛇頭*/ snake.x1=110;snake.y1=100; snake.node=2;/*節(jié)數(shù)*/ PrScore();/*輸出得分*/ while(1)/*可以重復(fù)玩游戲,壓ESC鍵結(jié)束*/ while(!kbhit()/*在沒有按鍵的情況下,蛇自己移動身體*/ if(food.yes=1)/*需要出現(xiàn)新食物*/ food.x=rand()%400+60; food.y=rand()%350+60; whi

6、le(food.x%10!=0)/*食物隨機(jī)出現(xiàn)后必須讓食物能夠在整格內(nèi),這樣才可以讓蛇吃到*/food.x+; while(food.y%10!=0)food.y+;food.yes=0;/*畫面上有食物了*/ if(food.yes=0)/*畫面上有食物了就要顯示*/ setcolor(GREEN); rectangle(food.x,food.y,food.x+10,food.y-10); for(i=snake.node-1;i>0;i-)/*蛇的每個環(huán)節(jié)往前移動,也就是貪吃蛇的關(guān)鍵算法*/ snake.xi=snake.xi-1; snake.yi=snake.yi-1; /*

7、1,2,3,4表示右,左,上,下四個方向,通過這個判斷來移動蛇頭*/ switch(snake.direction) case 1:snake.x0+=10;break; case 2: snake.x0-=10;break; case 3: snake.y0-=10;break; case 4: snake.y0+=10;break; for(i=3;i<snake.node;i+)/*從蛇的第四節(jié)開始判斷是否撞到自己了,因為蛇頭為兩節(jié),第三節(jié)不可能拐過來*/ if(snake.xi=snake.x0&&snake.yi=snake.y0) GameOver();/*顯

8、示失敗*/ snake.life=1; break; if(snake.x0<55|snake.x0>595|snake.y0<55| snake.y0>455)/*蛇是否撞到墻壁*/ GameOver();/*本次游戲結(jié)束*/ snake.life=1; /*蛇死*/if(snake.life=1)/*以上兩種判斷以后,如果蛇死就跳出內(nèi)循環(huán),重新開始*/ break;if(snake.x0=food.x&&snake.y0=food.y)/*吃到食物以后*/ setcolor(0);/*把畫面上的食物東西去掉*/ rectangle(food.x,fo

9、od.y,food.x+10,food.y-10); snake.xsnake.node=-20;snake.ysnake.node=-20; /*新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置*/ snake.node+;/*蛇的身體長一節(jié)*/ food.yes=1;/*畫面上需要出現(xiàn)新的食物*/ score+=10; PrScore();/*輸出新得分*/setcolor(4);/*畫出蛇*/for(i=0;i<snake.node;i+) rectangle(snake.xi,snake.yi,snake.xi+10, snake.yi-10);delay(gamespeed

10、);setcolor(0);/*用黑色去除蛇的的最后一節(jié)*/rectangle(snake.xsnake.node-1,snake.ysnake.node-1,snake.xsnake.node-1+10,snake.ysnake.node-1-10); /*endwhile(!kbhit)*/ if(snake.life=1)/*如果蛇死就跳出循環(huán)*/ break; key=bioskey(0);/*接收按鍵*/ if(key=ESC)/*按ESC鍵退出*/ break; else if(key=UP&&snake.direction!=4)/*判斷是否往相反的方向移動*/

11、snake.direction=3; else if(key=RIGHT&&snake.direction!=2) snake.direction=1; else if(key=LEFT&&snake.direction!=1)snake.direction=2; elseif(key=DOWN&&snake.direction!=3) snake.direction=4; /*endwhile(1)*/*游戲結(jié)束*/void GameOver(void) cleardevice(); PrScore(); setcolor(RED); sett

12、extstyle(0,0,4); outtextxy(200,200,"GAME OVER"); getch();/*輸出成績*/void PrScore(void) char str10; setfillstyle(SOLID_FILL,YELLOW); bar(50,15,220,35); setcolor(6); settextstyle(0,0,2); sprintf(str,"score:%d",score); outtextxy(55,20,str);/*圖形結(jié)束*/void Close(void) getch(); closegraph()

13、;案例二 計算器#include <dos.h> /*DOS接口函數(shù)*/#include <math.h> /*數(shù)學(xué)函數(shù)的定義*/#include <conio.h> /*屏幕操作函數(shù)*/#include <stdio.h> /*I/O函數(shù)*/#include <stdlib.h> /*庫函數(shù)*/#include <stdarg.h> /*變量長度參數(shù)表*/#include <graphics.h> /*圖形函數(shù)*/#include <string.h> /*字符串函數(shù)*/#include <

14、ctype.h> /*字符操作函數(shù)*/#define UP 0x48 /*光標(biāo)上移鍵*/#define DOWN 0x50 /*光標(biāo)下移鍵*/#define LEFT 0x4b /*光標(biāo)左移鍵*/#define RIGHT 0x4d /*光標(biāo)右移鍵*/#define ENTER 0x0d /*回車鍵*/void *rar; /*全局變量,保存光標(biāo)圖象*/struct palettetype palette; /*使用調(diào)色板信息*/int GraphDriver;/* 圖形設(shè)備驅(qū)動*/int GraphMode;/* 圖形模式值*/int ErrorCode;/* 錯誤代碼*/int Ma

15、xColors;/* 可用顏色的最大數(shù)值*/int MaxX, MaxY;/* 屏幕的最大分辨率*/double AspectRatio;/* 屏幕的像素比*/void drawboder(void); /*畫邊框函數(shù)*/void initialize(void); /*初始化函數(shù)*/void computer(void); /*計算器計算函數(shù)*/void changetextstyle(int font, int direction, int charsize); /*改變文本樣式函數(shù)*/void mwindow(char *header); /*窗口函數(shù)*/int specialkey(v

16、oid) ; /*獲取特殊鍵函數(shù)*/int arrow(); /*設(shè)置箭頭光標(biāo)函數(shù)*/*主函數(shù)*/int main() initialize();/* 設(shè)置系統(tǒng)進(jìn)入圖形模式*/ computer();/*運行計算器*/ closegraph();/*系統(tǒng)關(guān)閉圖形模式返回文本模式*/ return(0); /*結(jié)束程序*/* 設(shè)置系統(tǒng)進(jìn)入圖形模式*/void initialize(void) int xasp, yasp;/* 用于讀x和y方向縱橫比*/ GraphDriver = DETECT; /* 自動檢測顯示器*/ initgraph( &GraphDriver, &Gr

17、aphMode, "" );/*初始化圖形系統(tǒng)*/ ErrorCode = graphresult();/*讀初始化結(jié)果*/ if( ErrorCode != grOk ) /*如果初始化時出現(xiàn)錯誤*/ printf("Graphics System Error: %sn", grapherrormsg( ErrorCode ) ); /*顯示錯誤代碼*/ exit( 1 ); /*退出*/ getpalette( &palette );/* 讀面板信息*/ MaxColors = getmaxcolor() + 1;/* 讀取顏色的最大值*/

18、MaxX = getmaxx(); /* 讀屏幕尺寸*/ MaxY = getmaxy(); /* 讀屏幕尺寸*/ getaspectratio( &xasp, &yasp );/* 拷貝縱橫比到變量中*/ AspectRatio = (double)xasp/(double)yasp;/* 計算縱橫比值*/*計算器函數(shù)*/void computer(void) struct viewporttype vp; /*定義視口類型變量*/ int color, height, width; int x, y,x0,y0, i, j,v,m,n,act,flag=1; float n

19、um1=0,num2=0,result; /*操作數(shù)和計算結(jié)果變量*/ char cnum5,str220="",c,temp20="" char str1="1230.456+-789*/Qc=%"/* 定義字符串在按鈕圖形上顯示的符號 */ mwindow( "Calculator" ); /* 顯示主窗口 */ color = 7; /*設(shè)置灰顏色值*/ getviewsettings( &vp ); /* 讀取當(dāng)前窗口的大小*/ width=(vp.right+1)/10; /* 設(shè)置按鈕寬度 */

20、 height=(vp.bottom-10)/10 ; /*設(shè)置按鈕高度 */ x = width /2; /*設(shè)置x的坐標(biāo)值*/ y = height/2;/*設(shè)置y的坐標(biāo)值*/ setfillstyle(SOLID_FILL, color+3); bar( x+width*2, y, x+7*width, y+height ); /*畫一個二維矩形條顯示運算數(shù)和結(jié)果*/ setcolor( color+3 ); /*設(shè)置淡綠顏色邊框線*/ rectangle( x+width*2, y, x+7*width, y+height ); /*畫一個矩形邊框線*/ setcolor(RED);

21、/*設(shè)置顏色為紅色*/ outtextxy(x+3*width,y+height/2,"0."); /*輸出字符串"0."*/ x =2*width-width/2; /*設(shè)置x的坐標(biāo)值*/ y =2*height+height/2; /*設(shè)置y的坐標(biāo)值*/ for( j=0 ; j<4 ; +j ) /*畫按鈕*/ for( i=0 ; i<5 ; +i ) setfillstyle(SOLID_FILL, color); setcolor(RED); bar( x, y, x+width, y+height ); /*畫一個矩形條*/ r

22、ectangle( x, y, x+width, y+height ); sprintf(str2,"%c",str1j*5+i); /*將字符保存到str2中*/ outtextxy( x+(width/2), y+height/2, str2); x =x+width+ (width / 2) ;/*移動列坐標(biāo)*/ y +=(height/2)*3;/* 移動行坐標(biāo)*/ x =2*width-width/2; /*復(fù)位列坐標(biāo)*/ x0=2*width; y0=3*height; x=x0; y=y0; gotoxy(x,y); /*移動光標(biāo)到x,y位置*/ arrow(

23、); /*顯示光標(biāo)*/ putimage(x,y,rar,XOR_PUT); m=0; n=0; strcpy(str2,""); /*設(shè)置str2為空串*/ while(v=specialkey()!=45) /*當(dāng)壓下Alt+x鍵結(jié)束程序,否則執(zhí)行下面的循環(huán)*/ while(v=specialkey()!=ENTER) /*當(dāng)壓下鍵不是回車時*/ putimage(x,y,rar,XOR_PUT); /*顯示光標(biāo)圖象*/ if(v=RIGHT) /*右移箭頭時新位置計算*/ if(x>=x0+6*width) /*如果右移,移到尾,則移動到最左邊字符位置*/ x=

24、x0; m=0; else x=x+width+width/2; m+; /*否則,右移到下一個字符位置*/ if(v=LEFT) /*左移箭頭時新位置計算*/ if(x<=x0) x=x0+6*width; m=4; /*如果移到頭,再左移,則移動到最右邊字符位置*/ else x=x-width-width/2;m-; /*否則,左移到前一個字符位置*/ if(v=UP) /*上移箭頭時新位置計算*/ if(y<=y0) y=y0+4*height+height/2;n=3; /*如果移到頭,再上移,則移動到最下邊字符位置*/ else y=y-height-height/2;

25、 n-; /*否則,移到上邊一個字符位置*/ if(v=DOWN) /*下移箭頭時新位置計算*/ if(y>=7*height) y=y0; n=0; /*如果移到尾,再下移,則移動到最上邊字符位置*/ else y=y+height+height/2;n+; /*否則,移到下邊一個字符位置*/ putimage(x,y,rar,XOR_PUT); /*在新的位置顯示光標(biāo)箭頭*/ c=str1n*5+m; /*將字符保存到變量c中*/ if(isdigit(c)|c='.') /*判斷是否是數(shù)字或小數(shù)點*/ if(flag=-1) /*如果標(biāo)志為-1,表明為負(fù)數(shù)*/ st

26、rcpy(str2,"-"); /*將負(fù)號連接到字符串中*/ flag=1; /*將標(biāo)志值恢復(fù)為1*/ sprintf(temp,"%c",c); /*將字符保存到字符串變量temp中*/ strcat(str2,temp); /*將temp中的字符串連接到str2中*/ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); outtextxy(5*width,height,str2); /*顯示字符串*/ if(c='+

27、9;) num1=atof(str2); /*將第一個操作數(shù)轉(zhuǎn)換為浮點數(shù)*/ strcpy(str2,""); /*將str2清空*/ act=1; /*做計算加法標(biāo)志值*/ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); outtextxy(5*width,height,"0."); /*顯示字符串*/ if(c='-') if(strcmp(str2,"")=0) /*如果str2為空,說明

28、是負(fù)號,而不是減號*/ flag=-1; /*設(shè)置負(fù)數(shù)標(biāo)志*/ else num1=atof(str2); /*將第二個操作數(shù)轉(zhuǎn)換為浮點數(shù)*/ strcpy(str2,""); /*將str2清空*/ act=2; /*做計算減法標(biāo)志值*/ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); /*畫矩形*/ outtextxy(5*width,height,"0."); /*顯示字符串*/ if(c='*') num1

29、=atof(str2); /*將第二個操作數(shù)轉(zhuǎn)換為浮點數(shù)*/ strcpy(str2,""); /*將str2清空*/ act=3; /*做計算乘法標(biāo)志值*/ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); outtextxy(5*width,height,"0."); /*顯示字符串*/ if(c='/') num1=atof(str2); /*將第二個操作數(shù)轉(zhuǎn)換為浮點數(shù)*/ strcpy(str2,"

30、"); /*將str2清空*/ act=4; /*做計算除法標(biāo)志值*/ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); outtextxy(5*width,height,"0."); /*顯示字符串*/ if(c='') num1=atof(str2); /*將第二個操作數(shù)轉(zhuǎn)換為浮點數(shù)*/ strcpy(str2,""); /*將str2清空*/ act=5; /*做計算乘方標(biāo)志值*/ setfillst

31、yle(SOLID_FILL,color+3); /*設(shè)置用淡綠色實體填充*/ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*畫矩形*/ outtextxy(5*width,height,"0."); /*顯示字符串*/ if(c='%') num1=atof(str2); /*將第二個操作數(shù)轉(zhuǎn)換為浮點數(shù)*/ strcpy(str2,""); /*將str2清空*/ act=6; /*做計算模運算乘方標(biāo)志值*/ setfillstyle(SOLID_FILL,color+3)

32、; /*設(shè)置用淡綠色實體填充*/ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*畫矩形*/ outtextxy(5*width,height,"0."); /*顯示字符串*/ if(c='=') num2=atof(str2); /*將第二個操作數(shù)轉(zhuǎn)換為浮點數(shù)*/ switch(act) /*根據(jù)運算符號計算*/ case 1:result=num1+num2;break; /*做加法*/ case 2:result=num1-num2;break; /*做減法*/ case 3:result=

33、num1*num2;break; /*做乘法*/ case 4:result=num1/num2;break; /*做除法*/ case 5:result=pow(num1,num2);break; /*做x的y次方*/ case 6:result=fmod(num1,num2);break; /*做模運算*/ setfillstyle(SOLID_FILL,color+3); /*設(shè)置用淡綠色實體填充*/ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*覆蓋結(jié)果區(qū)*/ sprintf(temp,"%f",res

34、ult); /*將結(jié)果保存到temp中*/ outtextxy(5*width,height,temp); /*顯示結(jié)果*/ if(c='c') num1=0; /*將兩個操作數(shù)復(fù)位0,符號標(biāo)志為1*/ num2=0; flag=1; strcpy(str2,""); /*將str2清空*/ setfillstyle(SOLID_FILL,color+3); /*設(shè)置用淡綠色實體填充*/ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*覆蓋結(jié)果區(qū)*/ outtextxy(5*width,heigh

35、t,"0."); /*顯示字符串*/ if(c='Q')exit(0); /*如果選擇了q回車,結(jié)束計算程序*/ putimage(x,y,rar,XOR_PUT); /*在退出之前消去光標(biāo)箭頭*/ return; /*返回*/*窗口函數(shù)*/void mwindow( char *header ) int height; cleardevice();/* 清除圖形屏幕*/ setcolor( MaxColors - 1 );/* 設(shè)置當(dāng)前顏色為白色*/ setviewport( 20, 20, MaxX/2, MaxY/2, 1 );/* 設(shè)置視口大小*/

36、height = textheight( "H" ); /* 讀取基本文本大小 */ settextstyle( DEFAULT_FONT, HORIZ_DIR, 1 );/*設(shè)置文本樣式*/ settextjustify( CENTER_TEXT, TOP_TEXT );/*設(shè)置字符排列方式*/ outtextxy( MaxX/4, 2, header ); /*輸出標(biāo)題*/ setviewport( 20,20+height+4, MaxX/2+4, MaxY/2+20, 1 ); /*設(shè)置視口大小*/ drawboder(); /*畫邊框*/void drawbode

37、r(void) /*畫邊框*/ struct viewporttype vp; /*定義視口類型變量*/ setcolor( MaxColors - 1 );/*設(shè)置當(dāng)前顏色為白色*/ setlinestyle( SOLID_LINE, 0, NORM_WIDTH );/*設(shè)置畫線方式*/ getviewsettings( &vp );/*將當(dāng)前視口信息裝入vp所指的結(jié)構(gòu)中*/ rectangle( 0, 0, vp.right-vp.left, vp.bottom-vp.top ); /*畫矩形邊框*/*設(shè)計鼠標(biāo)圖形函數(shù)*/int arrow() int size; int raw=

38、4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4; /*定義多邊形坐標(biāo)*/ setfillstyle(SOLID_FILL,2); /*設(shè)置填充模式*/ fillpoly(8,raw); /*畫出一光標(biāo)箭頭*/ size=imagesize(4,4,16,16); /*測試圖象大小*/ rar=malloc(size); /*分配內(nèi)存區(qū)域*/ getimage(4,4,16,16,rar); /*存放光標(biāo)箭頭圖象*/ putimage(4,4,rar,XOR_PUT); /*消去光標(biāo)箭頭圖象*/ return 0;/*按鍵函數(shù)*/int specialkey(void)

39、int key; while(bioskey(1)=0); /*等待鍵盤輸入*/ key=bioskey(0); /*鍵盤輸入*/ key=key&0xff? key&0xff:key>>8; /*只取特殊鍵的掃描值,其余為0*/ return(key); /*返回鍵值*/案例三 黑白棋游戲/*3.3.4 源程序*/#include "graphics.h" /*圖形系統(tǒng)頭文件*/#define LEFT 0x4b00 /*光標(biāo)左鍵值*/#define RIGHT 0x4d00 /*光標(biāo)右鍵值*/#define DOWN 0x5000 /*光標(biāo)下

40、鍵值*/#define UP 0x4800 /*光標(biāo)上鍵值*/#define ESC 0x011b /* ESC鍵值*/#define ENTER 0x1c0d /* 回車鍵值*/int a88=0,key,score1,score2;/*具體分?jǐn)?shù)以及按鍵與存放棋子的變量*/char playone3,playtwo3;/*兩個人的得分轉(zhuǎn)換成字符串輸出*/void playtoplay(void);/*人人對戰(zhàn)函數(shù)*/void DrawQp(void);/*畫棋盤函數(shù)*/void SetPlayColor(int x);/*設(shè)置棋子第一次的顏色*/void MoveColor(int x,in

41、t y);/*恢復(fù)原來棋盤狀態(tài)*/int QpChange(int x,int y,int z);/*判斷棋盤的變化*/void DoScore(void);/*處理分?jǐn)?shù)*/void PrintScore(int n);/*輸出成績*/void playWin(void);/*輸出勝利者信息*/*主函數(shù)*/void main(void) int gd=DETECT,gr; initgraph(&gd,&gr,"c:tc"); /*初始化圖形系統(tǒng)*/ DrawQp();/*畫棋盤*/ playtoplay();/*人人對戰(zhàn)*/ getch(); closegr

42、aph();/*關(guān)閉圖形系統(tǒng)*/void DrawQp()/*畫棋盤*/ int i,j; score1=score2=0;/*棋手一開始得分都為0*/ setbkcolor(BLUE); for(i=100;i<=420;i+=40) line(100,i,420,i);/*畫水平線*/ line(i,100,i,420); /*畫垂直線*/ setcolor(0);/*取消圓周圍的一圈東西*/ setfillstyle(SOLID_FILL,15);/*白色實體填充模式*/ fillellipse(500,200,15,15); /*在顯示得分的位置畫棋*/ setfillstyle

43、(SOLID_FILL,8); /*黑色實體填充模式*/ fillellipse(500,300,15,15); a33=a44=1;/*初始兩個黑棋*/ a34=a43=2;/*初始兩個白棋*/ setfillstyle(SOLID_FILL,WHITE); fillellipse(120+3*40,120+3*40,15,15); fillellipse(120+4*40,120+4*40,15,15); setfillstyle(SOLID_FILL,8); fillellipse(120+3*40,120+4*40,15,15); fillellipse(120+4*40,120+3*

44、40,15,15); score1=score2=2; /*有棋后改變分?jǐn)?shù)*/ DoScore();/*輸出開始分?jǐn)?shù)*/void playtoplay()/*人人對戰(zhàn)*/ int x,y,t=1,i,j,cc=0; while(1)/*換棋手走棋*/ x=120,y=80;/*每次棋子一開始出來的坐標(biāo),x為行坐標(biāo),y為列坐標(biāo)*/ while(1) /*具體一個棋手走棋的過程*/ PrintScore(1);/*輸出棋手1的成績*/ PrintScore(2);/*輸出棋手2的成績*/ SetPlayColor(t);/*t變量是用來判斷棋手所執(zhí)棋子的顏色*/ fillellipse(x,y,1

45、5,15); key=bioskey(0);/*接收按鍵*/ if(key=ESC)/*跳出游戲*/ break; else if(key=ENTER)/*如果按鍵確定就可以跳出循環(huán)*/ if(y!=80&&a(x-120)/40(y-120)/40!=1&&a(x-120)/40(y-120)/40!=2)/*如果落子位置沒有棋子*/ if(t%2=1)/*如果是棋手1移動*/ a(x-120)/40(y-120)/40=1; else/*否則棋手2移動*/ a(x-120)/40(y-120)/40=2; if(!QpChange(x,y,t)/*落子后判斷

46、棋盤的變化*/ a(x-120)/40(y-120)/40=0;/*恢復(fù)空格狀態(tài)*/ cc+;/*開始統(tǒng)計嘗試次數(shù)*/ if(cc>=64-score1-score2) /*如果嘗試超過空格數(shù)則停步*/ MoveColor(x,y); fillellipse(x,y,15,15); break; else continue;/*如果按鍵無效*/ DoScore();/*分?jǐn)?shù)的改變*/ break;/*棋盤變化了,則輪對方走棋*/ else/*已經(jīng)有棋子就繼續(xù)按鍵*/ continue; else /*四個方向按鍵的判斷*/ if(key=LEFT&&x>120)/*

47、左方向鍵*/ MoveColor(x,y); fillellipse(x,y,15,15); SetPlayColor(t); x-=40; fillellipse(x,y,15,15); else if(key=RIGHT&&x<400&&y>80)/*右方向鍵*/ MoveColor(x,y); fillellipse(x,y,15,15); SetPlayColor(t); x+=40; fillellipse(x,y,15,15); else if(key=UP&&y>120)/*上方向鍵*/ MoveColor(x,y

48、); fillellipse(x,y,15,15); SetPlayColor(t); y-=40; fillellipse(x,y,15,15); else if(key=DOWN&&y<400)/*下方向鍵*/ MoveColor(x,y); fillellipse(x,y,15,15); SetPlayColor(t); y+=40; fillellipse(x,y,15,15); if(key=ESC)/*結(jié)束游戲*/ break; if(score1+score2)=64|score1=0|score2=0)/*格子已經(jīng)占滿或一方棋子為0判斷勝負(fù)*/ playW

49、in();/*輸出最后結(jié)果*/ break; t=t%2+1; /*一方走后,改變棋子顏色即輪對方走*/ cc=0; /*計數(shù)值恢復(fù)為0*/ /*endwhile*/void SetPlayColor(int t)/*設(shè)置棋子顏色*/ if(t%2=1) setfillstyle(SOLID_FILL,15);/*白色*/ else setfillstyle(SOLID_FILL,8);/*灰色*/void MoveColor(int x,int y)/*走了一步后恢復(fù)原來格子的狀態(tài)*/ if(y<100)/*如果是從起點出發(fā)就恢復(fù)藍(lán)色*/ setfillstyle(SOLID_FILL,BLUE); else/*其他情況如果是1就恢復(fù)白色棋子,2恢復(fù)黑色棋子,或恢復(fù)藍(lá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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論