新四季網

編程遊戲代碼大全簡單,遊戲代碼怎麼編寫

2023-04-02 05:02:13 2

  本文主要詳細介紹了C語言的俄羅斯方塊遊戲,有一定的參考價值,感興趣的朋友可以參考一下。

   1.先下載一個graphics.h的頭文件來畫。

   2.初始化窗口:initgraph(x,y);這是先創建一個窗口的功能,左上角為(0,0),右軸為X軸,下軸為Y軸,其中X代表X單位的長度,Y代表Y單位的寬度。

   3.關閉圖像窗口:close graph;這是用來結尾的。

   4.按任意鍵繼續:getch;這與getchar相同;差不多,為了防止它運行後被關閉,讓它暫停,他的頭文件是:conio.h

   5.畫一條線:line(x1,y1,x2,y2);在您創建的窗口中,以(x1,y1)和(x2,y2)為兩個端點畫一條線。

   6.畫一個矩形:rectangle(x1,y1,x2,y2);畫一個以(x1,y1)和(x2,y2)為對角的矩形。

   7.畫一個圓:circle(x,y,r);以(x,y)為點,r為半徑,畫一個圓。

   8.顏色:set color(x);用於設置顏色,其中X是要設置的顏色。可以填這16種:黑色黑色、藍色藍色、綠色、青色、紅色、紫色品紅色、棕色、淺灰色、深灰色、亮藍色淺藍色、亮綠色淺綠色、亮綠色淺青色、亮紅色淺紅色、亮紫色淺品紅色、黃色、黃色。當然,你也可以根據光線的三原色來調整自己喜歡的顏色。方法是:setcolor(RGB(x,y,z));RGB分別代表紅、綠、藍,對應的x、Y、z Y、Z就是你選擇了多少種顏色,範圍是[0,255]。

   #包含stdio.h

   #包含windows.h

   #包含conio.h

   #包含時間. h

   //遊戲窗口

   #定義FrameX 4 //遊戲窗口左上角的X軸坐標

   #定義FrameY 4 //遊戲窗口左上角的Y軸坐標

   #define Frame_height 20 //遊戲窗口的高度

   #define Frame_width 18 //遊戲窗口的寬度

   //定義全局變量

   int i,j,temp,temp1,temp 2;//temp,temp1,temp2用於記憶和轉換square變量的值。

   int a[80][80]={ 0 };//標記遊戲畫面的圖案:2、1、0分別表示位置為遊戲框、正方形、無圖案;初始化為無模式。

   int b[4];//標記4個「打開」的方塊:1表示有方塊,0表示沒有方塊。

   //聲明俄羅斯方塊的結構

  結構俄羅斯方塊

   {

   int x;//中心正方形的x軸坐標

   int y;//中心正方形的Y軸坐標

   int標誌;//標記框類型的序列號

   int next//下一個俄羅斯方塊類型的序列號

   int速度;//俄羅斯方塊移動的速度

   int計數;//生成俄羅斯方塊的數量

   int分數;//比賽的比分

   int級別;//遊戲的水平

   };

   //函數原型聲明

   //將光標移動到指定位置

   void gotoxy(HANDLE hOut,int x,int y);

   //製作遊戲窗口

   void make _ frame;

   //隨機生成塊類型的序列號

   void get_flag(結構俄羅斯方塊*);

   //製作俄羅斯方塊

   void make _俄羅斯方塊(struct Tetris *);

   //列印俄羅斯方塊

   void print_tetris(HANDLE hOut,struct Tetris *);

   //清除俄羅斯方塊的痕跡

   void clear_tetris(HANDLE hOut,struct Tetris *);

   //判斷是否可以移動,返回值為1,如果可以移動,否則不移動。

   int if _ moveable(struct Tetris *);

   //確定行是否滿,刪除俄羅斯方塊的整行。

   void del_full(HANDLE hOut,struct Tetris *);

   //開始遊戲

   void start _ game;

   void main

   {

   //製作遊戲窗口

   make _ frame;

   //開始遊戲

   start_game。

   }

   /* * * * * *將光標移動到指定位置* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

  void gotoxy(HANDLE hOut, int x, int y)

  {

  COORD pos;

  pos.X = x; //橫坐標

  pos.Y = y; //縱坐標

  SetConsoleCursorPosition(hOut, pos);

  }

  /******製作遊戲窗口******************************************************************/

  void make_frame

  {

  HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); //定義顯示器句柄變量

  gotoxy(hOut,FrameX+Frame_width-5,FrameY-2); //列印遊戲名稱

  printf(「俄羅斯方塊」);

  gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+7); //列印選擇菜單

  printf(「**********下一個方塊:」);

  gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+13);

  printf(「**********」);

  gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+17);

  printf(「↑鍵:變體」);

  gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+19);

  printf(「空格:暫停遊戲」);

  gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+15);

  printf(「Esc :退出遊戲」);

  gotoxy(hOut,FrameX,FrameY); //列印框角並記住該處已有圖案

  printf(「╔」);

  gotoxy(hOut,FrameX+2*Frame_width-2,FrameY);

  printf(「╗」);

  gotoxy(hOut,FrameX,FrameY+Frame_height);

  printf(「╚」);

  gotoxy(hOut,FrameX+2*Frame_width-2,FrameY+Frame_height);

  printf(「╝」);

  a[FrameX][FrameY+Frame_height]=2;

  a[FrameX+2*Frame_width-2][FrameY+Frame_height]=2;

  for(i=2;i<2*Frame_width-2;i+=2)

  {

  gotoxy(hOut,FrameX+i,FrameY);

  printf(「═」); //列印上橫框

  }

  for(i=2;i<2*Frame_width-2;i+=2)

  {

  gotoxy(hOut,FrameX+i,FrameY+Frame_height);

  printf(「═」); //列印下橫框

  a[FrameX+i][FrameY+Frame_height]=2; //記住下橫框有圖案

  }

  for(i=1;i<Frame_height;i++)

  {

  gotoxy(hOut,FrameX,FrameY+i);

  printf(「║」); //列印左豎框

  a[FrameX][FrameY+i]=2; //記住左豎框有圖案

  }

  for(i=1;ix][tetris->y]=b[0]; //中心方塊位置的圖形狀態:1-有,0-無

  switch(tetris->flag) //共6大類,19種類型

  {

  case 1: //田字方塊

  {

  a[tetris->x][tetris->y-1]=b[1];

  a[tetris->x+2][tetris->y-1]=b[2];

  a[tetris->x+2][tetris->y]=b[3];

  break;

  }

  case 2: //直線方塊:—-

  {

  a[tetris->x-2][tetris->y]=b[1];

  a[tetris->x+2][tetris->y]=b[2];

  a[tetris->x+4][tetris->y]=b[3];

  break;

  }

  case 3: //直線方塊:

  {

  a[tetris->x][tetris->y-1]=b[1];

  a[tetris->x][tetris->y-2]=b[2];

  a[tetris->x][tetris->y+1]=b[3];

  break;

  }

  case 4: //T字方塊

  {

  a[tetris->x-2][tetris->y]=b[1];

  a[tetris->x+2][tetris->y]=b[2];

  a[tetris->x][tetris->y+1]=b[3];

  break;

  }

  case 5: //T字順時針轉90度方塊

  {

  a[tetris->x][tetris->y-1]=b[1];

  a[tetris->x][tetris->y+1]=b[2];

  a[tetris->x-2][tetris->y]=b[3];

  break;

  }

  case 6: //T字順時針轉180度方塊

  {

  a[tetris->x][tetris->y-1]=b[1];

  a[tetris->x-2][tetris->y]=b[2];

  a[tetris->x+2][tetris->y]=b[3];

  break;

  }

  case 7: //T字順時針轉270度方塊

  {

  a[tetris->x][tetris->y-1]=b[1];

  a[tetris->x][tetris->y+1]=b[2];

  a[tetris->x+2][tetris->y]=b[3];

  break;

  }

  case 8: //Z字方塊

  {

  a[tetris->x][tetris->y+1]=b[1];

  a[tetris->x-2][tetris->y]=b[2];

  a[tetris->x+2][tetris->y+1]=b[3];

  break;

  }

  case 9: //Z字順時針轉90度方塊

  {

  a[tetris->x][tetris->y-1]=b[1];

  a[tetris->x-2][tetris->y]=b[2];

  a[tetris->x-2][tetris->y+1]=b[3];

  break;

  }

  case 10: //Z字順時針轉180度方塊

  {

  a[tetris->x][tetris->y-1]=b[1];

  a[tetris->x-2][tetris->y-1]=b[2];

  a[tetris->x+2][tetris->y]=b[3];

  break;

  }

  case 11: //Z字順時針轉270度方塊

  {

  a[tetris->x][tetris->y+1]=b[1];

  a[tetris->x+2][tetris->y-1]=b[2];

  a[tetris->x+2][tetris->y]=b[3];

  break;

  }

  case 12: //7字方塊

  {

  a[tetris->x][tetris->y-1]=b[1];

  a[tetris->x][tetris->y+1]=b[2];

  a[tetris->x-2][tetris->y-1]=b[3];

  break;

  }

  case 13: //7字順時針轉90度方塊

  {

  a[tetris->x-2][tetris->y]=b[1];

  a[tetris->x-2][tetris->y+1]=b[2];

  a[tetris->x+2][tetris->y]=b[3];

  break;

  }

  case 14: //7字順時針轉180度方塊

  {

  a[tetris->x][tetris->y-1]=b[1];

  a[tetris->x][tetris->y+1]=b[2];

  a[tetris->x+2][tetris->y+1]=b[3];

  break;

  }

  case 15: //7字順時針轉270度方塊

  {

  a[tetris->x-2][tetris->y]=b[1];

  a[tetris->x+2][tetris->y-1]=b[2];

  a[tetris->x+2][tetris->y]=b[3];

  break;

  }

  case 16: //倒7字方塊

  {

  a[tetris->x][tetris->y+1]=b[1];

  a[tetris->x][tetris->y-1]=b[2];

  a[tetris->x+2][tetris->y-1]=b[3];

  break;

  }

  case 17: //倒7字順指針轉90度方塊

  {

  a[tetris->x-2][tetris->y]=b[1];

  a[tetris->x-2][tetris->y-1]=b[2];

  a[tetris->x+2][tetris->y]=b[3];

  break;

  }

  case 18: //倒7字順時針轉180度方塊

  {

  a[tetris->x][tetris->y-1]=b[1];

  a[tetris->x][tetris->y+1]=b[2];

  a[tetris->x-2][tetris->y+1]=b[3];

  break;

  }

  case 19: //倒7字順時針轉270度方塊

  {

  a[tetris->x-2][tetris->y]=b[1];

  a[tetris->x+2][tetris->y+1]=b[2];

  a[tetris->x+2][tetris->y]=b[3];

  break;

  }

  }

  }

  //******判斷是否可動*************************************************************************/

  int if_moveable(struct Tetris *tetris)

  {

  if(a[tetris->x][tetris->y]!=0)//當中心方塊位置上有圖案時,返回值為0,即不可移動

  {

  return 0;

  }

  else

  {

  if( //當為田字方塊且除中心方塊位置外,其他」口」字方塊位置上無圖案時,返回值為1,即可移動

  ( tetris->flag==1 && ( a[tetris->x][tetris->y-1]==0 &&

  a[tetris->x+2][tetris->y-1]==0 && a[tetris->x+2][tetris->y]==0 ) )

  //或為直線方塊且除中心方塊位置外,其他」口」字方塊位置上無圖案時,返回值為1,即可移動

  ( tetris->flag==2 && ( a[tetris->x-2][tetris->y]==0 &&

  a[tetris->x+2][tetris->y]==0 && a[tetris->x+4][tetris->y]==0 ) )

  ( tetris->flag==3 && ( a[tetris->x][tetris->y-1]==0 &&

  a[tetris->x][tetris->y-2]==0 && a[tetris->x][tetris->y+1]==0 ) )

  ( tetris->flag==4 && ( a[tetris->x-2][tetris->y]==0 &&

  a[tetris->x+2][tetris->y]==0 && a[tetris->x][tetris->y+1]==0 ) )

  ( tetris->flag==5 && ( a[tetris->x][tetris->y-1]==0 &&

  a[tetris->x][tetris->y+1]==0 && a[tetris->x-2][tetris->y]==0 ) )

  ( tetris->flag==6 && ( a[tetris->x][tetris->y-1]==0 &&

  a[tetris->x-2][tetris->y]==0 && a[tetris->x+2][tetris->y]==0 ) )

  ( tetris->flag==7 && ( a[tetris->x][tetris->y-1]==0 &&

  a[tetris->x][tetris->y+1]==0 && a[tetris->x+2][tetris->y]==0 ) )

  ( tetris->flag==8 && ( a[tetris->x][tetris->y+1]==0 &&

  a[tetris->x-2][tetris->y]==0 && a[tetris->x+2][tetris->y+1]==0 ) )

  ( tetris->flag==9 && ( a[tetris->x][tetris->y-1]==0 &&

  a[tetris->x-2][tetris->y]==0 && a[tetris->x-2][tetris->y+1]==0 ) )

  ( tetris->flag==10 && ( a[tetris->x][tetris->y-1]==0 &&

  a[tetris->x-2][tetris->y-1]==0 && a[tetris->x+2][tetris->y]==0 ) )

  ( tetris->flag==11 && ( a[tetris->x][tetris->y+1]==0 &&

  a[tetris->x+2][tetris->y-1]==0 && a[tetris->x+2][tetris->y]==0 ) )

  ( tetris->flag==12 && ( a[tetris->x][tetris->y-1]==0 &&

  a[tetris->x][tetris->y+1]==0 && a[tetris->x-2][tetris->y-1]==0 ) )

  ( tetris->flag==13 && ( a[tetris->x-2][tetris->y]==0 &&

  a[tetris->x-2][tetris->y+1]==0 && a[tetris->x+2][tetris->y]==0 ) )

  ( tetris->flag==14 && ( a[tetris->x][tetris->y-1]==0 &&

  a[tetris->x][tetris->y+1]==0 && a[tetris->x+2][tetris->y+1]==0 ) )

  ( tetris->flag==15 && ( a[tetris->x-2][tetris->y]==0 &&

  a[tetris->x+2][tetris->y-1]==0 && a[tetris->x+2][tetris->y]==0 ) )

  ( tetris->flag==16 && ( a[tetris->x][tetris->y+1]==0 &&

  a[tetris->x][tetris->y-1]==0 && a[tetris->x+2][tetris->y-1]==0 ) )

  ( tetris->flag==17 && ( a[tetris->x-2][tetris->y]==0 &&

  a[tetris->x-2][tetris->y-1]==0 && a[tetris->x+2][tetris->y]==0 ) )

  ( tetris->flag==18 && ( a[tetris->x][tetris->y-1]==0 &&

  a[tetris->x][tetris->y+1]==0 && a[tetris->x-2][tetris->y+1]==0 ) )

  ( tetris->flag==19 && ( a[tetris->x-2][tetris->y]==0 &&

  a[tetris->x+2][tetris->y+1]==0 && a[tetris->x+2][tetris->y]==0 ) ) )

  {

  return 1;

  }

  }

  return 0;

  }

  /******隨機產生俄羅斯方塊類型的序號**********************************************************/

  void get_flag(struct Tetris *tetris)

  {

  tetris->count++; //記住產生方塊的個數

  srand((unsigned)time(NULL)); //初始化隨機數

  if(tetris->count==1)

  {

  tetris->flag = rand%19+1; //記住第一個方塊的序號

  }

  tetris->next = rand%19+1; //記住下一個方塊的序號

  }

  /******列印俄羅斯方塊**********************************************************************/

  void print_tetris(HANDLE hOut,struct Tetris *tetris)

  {

  for(i=0;ix-2; ix+4; i+=2 )

  {

  for(j=tetris->y-2;jy+1;j++)

  {

  if( a[i][j]==1 && j>FrameY )

  {

  gotoxy(hOut,i,j);

  printf(「□」); //列印邊框內的方塊

  }

  }

  }

  //列印菜單信息

  gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+1);

  printf(「level : %d」,tetris->level);

  gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+3);

  printf(「score : %d」,tetris->score);

  gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+5);

  printf(「speed : %dms」,tetris->speed);

  }

  以上就是分享給大家的俄羅斯方塊源碼,希望對大家有幫助~

同类文章
 古代女子偷情會受什麼處罰?她們用生命在偷歡

古代女子偷情會受什麼處罰?她們用生命在偷歡

空虛了,寂寞了,感情上找不到依靠,那就幫身體找個依靠吧。在現代,偷情是道德問題,而在古代,偷情有時候就是促犯法律的問題,看到這裡,大家一定很好奇古代女子人情會受到怎麼處罰吧,下面就隨著51區未解之謎網小編一起來看看吧。古代女子偷情一般會受到七種處罰1、騎木驢一種針對女性犯人的酷刑。所謂木驢,其實就是
 美國為什麼那麼多地震?揭秘美國地震多的原因

美國為什麼那麼多地震?揭秘美國地震多的原因

地震這一自然危害,來時悄無聲息,走時遍地狼藉,危害十分的大,更讓人鬱悶的是,現代雖有地震預警系統,但當地震來臨時,人們是無力抵抗的。這其中,美國就是一個地震多發國,而且集中在過去的十年。那麼美國為什麼那麼多地震呢?下面隨著小編一起來看看下面這篇文章吧。美國為什麼那麼多地震?揭秘美國地震多的原因比如從
 這六部劇情有點黃的電影,你喜歡哪部?

這六部劇情有點黃的電影,你喜歡哪部?

很多的電影都會在劇情當中加上一些色情或是暴力的鏡頭,從而增加觀眾看片時的感官體驗。今天現編就給大家帶來幾部能夠刷新你世界觀、考驗人的心理承受能力的片子、大家一起來看看吧!一、《下水道人魚》此片給人的最大衝擊來自於視覺,骯髒的下水道、半泡在髒水中的棄嬰、成堆的蛆、腐爛的貓、長的腐-肉、流著粘稠液體的膿

下一次龍年是哪幾年,龍年的下一個年是什麼年

下一次龍年是哪幾年,龍年的下一個年是什麼年以2022年為基準,下一個龍年是2024年。另外,龍年有:1940年、1952年、1964年、1976年、1988年、2000年、2012年、2036年、2048年、2060年、2072年等。龍年龍在十二生肖中排名第五,與十二地支同屬於「辰」。一天中十二個小
 日本為什麼那麼乾淨?國人看了臉紅

日本為什麼那麼乾淨?國人看了臉紅

一次偶然的機會,我去過日本,有一句本不想說出口,但又實在忍不住,那就是日本為什麼那麼乾淨?可是反觀我國城市有一些街道就顯得非常的髒亂,這到底是什麼原因呢?經過了解,我發現日本做到了下以八個方面,下面我們就一起來看看吧。1.沒公共垃圾桶,垃圾自行帶回家丟。日本為什麼那麼乾淨相對於不少國家來說,日本街道
 日本最不容錯過的9部情色電影 這些電影你都看過嗎?

日本最不容錯過的9部情色電影 這些電影你都看過嗎?

一說到日本電影大多數人都會想到日本動作情色電影,也許你會覺得現在直來直去的日本AV實在太無趣了,那麼你可以回頭看看AV這個詞出現的前後(上世紀80年代初)的日本情色電影吧。今天51區小編就給大家介紹幾部最經典的日本情色電影,不然錯過哦!其中的經典電影,香豔自然少不了,還有對人性的深刻描寫。1、瀨瀨敬

三十四個省級行政區簡稱和行政中心地圖,三十四個省級行政區簡稱和行政中心順口溜

三十四個省級行政區簡稱和行政中心地圖,三十四個省級行政區簡稱和行政中心順口溜北京北京北京。天津,天津,天津。上海,上海,上海。重慶,重慶,重慶。河北省,河北,石家莊。河南,河南,鄭州。湖北省,湖北,武漢。湖南,湖南,長沙。江蘇,江蘇,南京。江西省,江西,南昌。遼寧,遼寧,瀋陽。吉林,吉林,長春。三十

唐朝西涼是現在的哪個省,北涼是現在的哪個省

唐朝西涼是現在的哪個省,北涼是現在的哪個省西涼,中國歷史上的「涼州」,位於中國西部,主要在甘肅省境內,故稱西涼、西州。涼州有著悠久的人類活動歷史。早在四五千年前,戎、崔、月氏、烏孫等北方民族就已雜居。涼州是西漢和唐朝時期僅次於長安的中國西北最大的古城。東晉十六國時期前涼後涼,南涼北涼,唐初的都城大良
 apa酒店老闆新書否認南京大屠殺 絕撤書日本要付出什麼代價?

apa酒店老闆新書否認南京大屠殺 絕撤書日本要付出什麼代價?

今年1月份,APA集團代表元古谷志雄的著書否認南京大屠殺成為問題起源。介紹該書的視頻在中國網上流傳後,引起了強烈中韓民眾強烈不滿,進而發起抵制該集團的行動。沒想到風波才過去短短幾個月,元古谷志雄又跳出來「生事」——宣傳新書並且聲稱從未想過要撤掉擺在酒店客房內的有關書籍,更不會因為東京奧運會而這麼做。
 2017年春節是幾月幾號?2017年春節放假安排

2017年春節是幾月幾號?2017年春節放假安排

時間匆匆轉眼又是一年,馬上又到2017年了。很多朋友都在關心2017年春節是幾月幾號?2017年春節放假時間怎麼安排的!今天51區為大家提供最新放假時間!↓↓↓2017年春節是幾月幾號?從上圖可以看到除夕是2017年1月27號,那麼春節就是2017年1月28號咯。也就是說離過年52天(從2016年1