include stdio h include stdlib h include graphics
程式碼及程式註解 #include <stdio. h> #include <stdlib. h> #include <graphics. h> #include <time. h> #include <conio. h> #include <windows. h> #include <mmsystem. h> #pragma comment(lib, “winmm. lib”) main() { int x, y, rx, ry, r, step. Y, step. X, ch 2, jump_temp, down_floor_times, down _floor_start, floor; int X[15], Y[15], i, j, k, X_old[15], Y_old[15], quick; jump_temp=3; jump=0; down_floor_times=10; down_floor=down_floor_times; down_floor_start=0; floor=0; quick=0; srand(time(NULL)); int frame[8]= {10, 0, 10, 450, 300, 0 }; initwindow(600, 460, "frame"); char message_s[]="START(Enter) END(Esc)"; char message_t[]="Thank you for playing the game. "; char message_ex[]="遊戲說明-壓空白鍵使球球往上跳"; r=10; /*半徑*/ rx=20; /*圓心座標*/ ry=440; step. X=10; step. Y=120/jump_temp; y=0; i=0; j=0; k=0;
if(kbhit) //起始畫面 { outtextxy(175, 220, message_s); } ch 2=getch(); if(ch 2==13) { outtextxy(175, 220, message_ex); } if(ch 2==27) { outtextxy(175, 220, message_t); closegraph(); return(0); } Play. Sound("C: \Users\Fanny\Desktop\程式設計\期末專題 \BGM. wav", NULL, SND_FILENAME|SND_ASYNC|SND_LOOP); Sleep(2000); while(1) { clearviewport(); /*階梯*/ while(i!=15) { X[i]=(rand()%220) +20; i=i+1; } while(j!=15) { y=y+30; Y[j]=y; j=j+1; } line(X[0], Y[0], X[0]+50, Y[0]); line(X[1], Y[1], X[1]+50, Y[1]); line(X[2], Y[2], X[2]+50, Y[2]); line(X[3], Y[3], X[3]+50, Y[3]); line(X[4], Y[4], X[4]+50, Y[4]); line(X[5], Y[5], X[5]+50, Y[5]); line(X[6], Y[6], X[6]+50, Y[6]); line(X[7], Y[7], X[7]+50, Y[7]); line(X[8], Y[8], X[8]+50, Y[8]); line(X[9], Y[9], X[9]+50, Y[9]); line(X[10], Y[10], X[10]+50, Y[10]); line(X[11], Y[11], X[11]+50, Y[11]); line(X[12], Y[12], X[12]+50, Y[12]); line(X[13], Y[13], X[13]+50, Y[13]); line(X[14], Y[14], X[14]+50, Y[14]); drawpoly(4, frame); /*框框*/ circle(rx, ry, r); /*球*/
Sleep(100); /*左右跑的速度*/ if(rx <= 20) /*球太靠近左邊框時使球不要跑出去*/ { step. X=10; } else if(rx >= 300 -r) /*球太靠近右邊框時使球不要跑出去*/ { step. X=-10; } rx=rx+step. X; /*球自動左右跑*/ if(kbhit()) { ch=getch(); if(ch==32) //按空白鍵往上跳 30格 { if((ry+r)==450&&jump==0) { jump=jump_temp; } else if(((rx+r)>=X[13])&&((ry+r)==Y[13])&&((rx-r)<=X[13]+50)&&jump==0) { jump=jump_temp; } else if(((rx+r)>=X[12])&&((ry+r)==Y[12])&&((rx-r)<=X[12]+50)&&jump==0) { jump=jump_temp; } else if(((rx+r)>=X[11])&&((ry+r)==Y[11])&&((rx-r)<=X[11]+50)&&jump==0) { jump=jump_temp; } else if(((rx+r)>=X[10])&&((ry+r)==Y[10])&&((rx-r)<=X[10]+50)&&jump==0) { jump=jump_temp; } else if(((rx+r)>=X[9])&&((ry+r)==Y[9])&&((rxr)<=X[9]+50)&&jump==0) { jump=jump_temp; } else if(((rx+r)>=X[8])&&((ry+r)==Y[8])&&((rxr)<=X[8]+50)&&jump==0) { jump=jump_temp; } else if(((rx+r)>=X[7])&&((ry+r)==Y[7])&&((rx-r)<=X[7]+50)&&jump==0) { jump=jump_temp; } else if(((rx+r)>=X[6])&&((ry+r)==Y[6])&&((rxr)<=X[6]+50)&&jump==0) { jump=jump_temp; } else if(((rx+r)>=X[5])&&((ry+r)==Y[5])&&((rxr)<=X[5]+50)&&jump==0) { jump=jump_temp; } else if(((rx+r)>=X[4])&&((ry+r)==Y[4])&&((rxr)<=X[4]+50)&&jump==0) { jump=jump_temp; }
else if(((rx+r)>=X[3])&&((ry+r)==Y[3])&&((rx-r)<=X[3]+50)&&jump==0) { jump=jump_temp; } else if(((rx+r)>=X[2])&&((ry+r)==Y[2])&&((rx-r)<=X[2]+50)&&jump==0) { jump=jump_temp; } else if(((rx+r)>=X[1])&&((ry+r)==Y[1])&&((rx-r)<=X[1]+50)&&jump==0) { jump=jump_temp; } else if(((rx+r)>=X[0])&&((ry+r)==Y[0])&&((rx-r)<=X[0]+50)&&jump==0) { jump=jump_temp; } } else { jump=jump; } } if(jump>0) { ry=ry-step. Y; jump=jump-1; } else { if(ry<440)/*判斷有沒有在樓梯上*/ { if(((rx+r)>=X[13])&&((ry+r)==Y[13])&&((rx-r)<=X[13]+50)) { ry=ry; } else if(((rx+r)>=X[12])&&((ry+r)==Y[12])&&((rx-r)<=X[12]+50)) { ry=ry; } else if(((rx+r)>=X[11])&&((ry+r)==Y[11])&&((rx-r)<=X[11]+50)) { ry=ry; } else if(((rx+r)>=X[10])&&((ry+r)==Y[10])&&((rx-r)<=X[10]+50)) { ry=ry; down_floor_start=1; } else if(((rx+r)>=X[9])&&((ry+r)==Y[9])&&((rx-r)<=X[9]+50)) { ry=ry; down_floor_start=1; } else if(((rx+r)>=X[8])&&((ry+r)==Y[8])&&((rx-r)<=X[8]+50)) { ry=ry; down_floor_start=1; }
else if(((rx+r)>=X[7])&&((ry+r)==Y[7])&&((rx-r)<=X[7]+50)) { ry=ry; down_floor_start=1; } else if(((rx+r)>=X[6])&&((ry+r)==Y[6])&&((rx-r)<=X[6]+50)) { ry=ry; down_floor_start=1; } else if(((rx+r)>=X[5])&&((ry+r)==Y[5])&&((rx-r)<=X[5]+50)) { ry=ry; down_floor_start=1; } else if(((rx+r)>=X[4])&&((ry+r)==Y[4])&&((rx-r)<=X[4]+50)) { ry=ry; down_floor_start=1; } else if(((rx+r)>=X[3])&&((ry+r)==Y[3])&&((rx-r)<=X[3]+50)) { ry=ry; down_floor_start=1; } else if(((rx+r)>=X[2])&&((ry+r)==Y[2])&&((rx-r)<=X[2]+50)) { ry=ry; down_floor_start=1; } else if(((rx+r)>=X[1])&&((ry+r)==Y[1])&&((rx-r)<=X[1]+50)) { ry=ry; down_floor_start=1; } else if(((rx+r)>=X[0])&&((ry+r)==Y[0])&&((rx-r)<=X[0]+50)) { ry=ry; down_floor_start=1; } else { ry=ry+30; clearviewport(); } } } if((ry+r)>=450 && (down_floor_start==1))/*判斷GAME OVER*/ { printf("floor=%dn", floor); //顯示樓層分數 break; } if(down_floor_start==1) /*判斷樓梯該不該開始下降*/ { if(down_floor==down_floor_times) { for(i=0; i<15; i++) { X_old[i]=X[i]; }
//新樓梯 for(i=0; i<15; i++) { if (i==0) { X[i]=(rand()%220)+20; } else { X[i]=X_old[i-1]; } } down_floor=0; floor=floor+1; } down_floor=down_floor+1; } if(quick==10)/*每 10層樓梯下降速度變快 最快到down_floor_times=5*/ { down_floor_times=down_floor_times-1; if(down_floor_times==3) { down_floor_times=3; } quick=0; } } Play. Sound("C: \Users\Fanny\Desktop\程式設計\期末專題 \END. wav", NULL, SND_FILENAME|SND_ASYNC); setfillstyle(SOLID_FILL, YELLOW); // rectangle(30, 170, 546, 265); bar(546, 260, 30, 170); setcolor(MAGENTA); setlinestyle(1, 0, 2); /*G*/ arc(78, 217, 90, 360, 40); line(78, 216, 118, 216); /*A*/ line(148, 177, 118, 256); line(148, 177, 168, 256); line(133, 216, 157, 216); /*M*/ line(180, 177, 180, 256); line(180, 177, 202. 5, 256); line(202. 5, 256, 225, 177); line(225, 177, 225, 256); /*E*/ line(241, 177, 271, 177); line(241, 216, 271, 216); line(241, 256, 271, 256); line(241, 177, 241, 256);
/*O*/ ellipse(370, 216, 0, 360, 25, 40); /*V*/ line(400, 177, 420, 256); line(420, 256, 440, 177); /*E*/ line(455, 177, 485, 177); line(455, 216, 485, 216); line(455, 256, 485, 256); line(455, 177, 455, 256); /*R*/ arc(520, 196. 5, 270, 90, 19. 5); line(500, 177, 520, 177); line(500, 214, 520, 214); line(500, 177, 500, 256); line(500, 214, 539. 5, 256); } getch(); closegraph();
- Slides: 19