C語言小遊戲之俄羅斯方塊

2021-10-08 07:04:03 字數 4188 閱讀 9747

#include

#include

#include

//sleep()函式的標頭檔案

#include

#include

#define mod 28

#define size_n 19

//控制邊框的高度

#define size_m 12

//控制邊框的寬度

int a[

100]=;

//定義排行榜

int cur_x,cur_y,score,mark,next,map[size_n]

[size_m]

,gamespeed=

300;

char key1,key;

int shape[28]

[6]=

,,,,

,,,,

,,,,

,,,,

,,,,

,,,,

,,,}

;void

gotoxy

(int x,

int y)

//遊戲結束的判斷函式

void

gameover()

}if(flag==1)

puts(""

);}gotoxy(7

,3);

int t;

for(j=

0;j<

3;j++

)for

(i=0

;i<

3-j;i++)if

(a[i]

)printf

("game over!");

gotoxy(8

,9);

//輸出下面一行內容的位置是9行7列

printf

(" 排行榜 \n");

for(i=

0,j=

6;i<

3;i++

,j++

)gotoxy(1

,size_n+1)

;exit(0

);//遊戲結束}}

//顯示遊戲底板的函式

void

showmap

(int id)

if(i==1)

printf

(" next:");

//表示提示下一次出現的圖形的條件

if(i==11)

printf

(" score : %d"

,score)

;//計算所得的分數

if(i==13)

printf

(" speed : %d"

,score/

100+1)

;//控制圖形下落的速度

if(i==15)

printf

(" 空格鍵: 暫停");

if(i==16)

printf

(" 左方向鍵左移-右方向鍵右移");

if(i==17)

printf

(" 上方向鍵變形-下方向鍵下降");

puts(""

);}}

else

if(i==1)

printf

(" next:");

//表示提示下一次出現的圖形的條件

if(i==11)

printf

(" score : %d"

,score)

;//計算所得的分數

if(i==13)

printf

(" speed : %d"

,score/

100+1)

;//控制圖形下落的速度

if(i==15)

printf

(" 空格鍵: 暫停");

if(i==16)

printf

(" 左方向鍵左移-右方向鍵右移");

if(i==17)

printf

(" 上方向鍵變形-下方向鍵下降");

puts(""

);}}

/*對於next 方塊的處理,先擦除再畫圖*/

for(i=

2;i<=

10;i++)}

gotoxy(29

,6);

printf

("■");

//控制下乙個圖形出現提示圖形的位置,29是列,6是行

for(i=

0;i<

6;i=i+2)

sleep

(gamespeed)

;//sleep是乙個庫函式,是表示時間的函式,這裡用來控制圖形下落的速度

}//初始化函式,cur_x,cur_y是全域性變數,標記了移動方塊的位置

void

init

(int id)

cur_x=

0; cur_y=6;

showmap

(id);}

//顏色函式

void

color

(int n_color)

//判斷是否出界,或者說是否合法的函式

intjudge_in

(int x,

int y,

int id)

return1;

}//得分,擦除行的閃爍,還有圖形的向下平移

void

fun_score()

}if(flag==0)

}//控制消除的行數

else

printf

("■");

}}sleep

(100);

//執行到sleep()函式時,程式在那裡等100毫秒

}for

(int ii=i;ii>

1;ii--

)showmap(-

1); score+=10

;//控制每次得分時所加的分數

if(score%

100==

0&& score!=

0)gamespeed-=50

;// 控制形狀下落的速度}}

}//主函式

intmain()

while(!

kbhit()

)//kbhit()在執行時,檢測是否有按鍵按下,有按下返回鍵值,

//沒有按下返回0;是非阻塞函式getch() 在執行時,檢測按下什麼鍵,如果不按鍵該函式不返回;是阻塞函式.

fun_score()

;if(mark!=1)

showmap

(id)

;//當標誌的那一行為1時,就把那一行消掉

goto here;

}//end of while(!kbhit())

key=

getch()

;if(key1==-32

&& key==72)

//控制轉換圖形變形的操作

else

if(key1==-32

&& key==

80&&

judge_in

(cur_x+

1,cur_y,id)==1

)cur_x++

;//使圖形向下移動的操作

else

if(key1==-32

&& key==

75&&

judge_in

(cur_x,cur_y-

1,id)==1

)cur_y--

;//使圖形向左移動的操作

else

if(key1==-32

&& key==

77&&

judge_in

(cur_x,cur_y+

1,id)==1

)cur_y++

;//使圖形向右移動的操作

//****************************

else

if(key==32)

//按空格鍵,暫停}}

}//*****************************

else

if(key==27)

return0;

label:

key1=key;

}return0;

}

小遊戲 俄羅斯方塊(C 版)

大一作品,留念 include include include kbhit include rand,srand include define wide 15 define hight 18 define period 500 typedef struct point point 1 1 4 4 1...

C 俄羅斯方塊遊戲

俄羅斯方塊是一款非常經典的老遊戲,相比現在的網路遊戲和大型遊戲而言,俄羅斯方塊非常小。不要看似小,要實現俄羅斯方塊的全部功能也不容易。先說說涉及的知識點 繼承 不同的方塊繼承於方塊類 多型 每種方塊都可以旋轉 初始化,但是每種方塊的旋轉都不一樣,採用抽象方法定義 簡單工廠設計模式 由工廠隨機建立方塊...

俄羅斯方塊遊戲

大二上學期前兩周的課程設計寫 更多的是借鑑 了乙個500多行的俄羅斯方塊遊戲,畢竟也是花了兩天時間把被人的看懂,然後花了兩天多的時間敲出來,又花了兩天時間寫了4000多字的專案報告,所有有必要在部落格中寫下來以留作紀念。struct block blocks 7 i 口 l 反l z 反z t 用十...