日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【小游戏】俄罗斯方块(C++版)

發布時間:2025/3/15 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【小游戏】俄罗斯方块(C++版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
大一作品,留念#include<stdio.h> #include<time.h> #include<conio.h>//kbhit #include<stdlib.h>//rand,srand #include<windows.h> #define wide 15 #define hight 18 #define period 500 typedef struct point {int h;int w; }point;/* 1 ■■■■ 1*4 -> 4*1■ ■2■■■ 3 ■■■ 2*3 -> 3*2■■ ■■ 2*3 -> 3*24 ■■ 5 ■■■■ ■6 ■■ 2*2 7 ■■■ 2*3->3*2最大面積為4*41234 ■■■■1234 ■■■■1234 ■■■■1234 ■■■■按W鍵旋轉九十度*/char map[hight][wide]={0};//1:□ 2:■ 其余的都是空格 char類型節約空間 char stay[hight][wide]={0};//殘留方塊 struct point size;//活動方塊的大小 前一個代表 高度 后一個代表 寬度 ,主要用于觸碰處理 char sqr[4][4];//活動方塊數組 struct point posi={1,wide/2-2};//方塊頂點坐標 char situ=0;//旋轉狀況0 正常 1 順時針90度 2:180 3:270 int grade=0,line=0; //char sqr[4][4]; //point newspr={1,wide/2}; //------------函數聲明void showmap();void setmap();int keypre(char k);//按下某鍵int getrand(int,int);//取一個范圍內的隨機數int setini(int type);//初始化方塊,類型,看表吧void turn90();int isagain();//判斷活動區是否與stay區重復int exsqr(char row);//判斷stay區某一行是否存在方塊,存在返回1,不存在返回0void judge();//層滿處理 int main() {int last=0,t;int i;srand(time(NULL));//隨機圖形setini(getrand(1,7));//屏幕渲染do{t=clock();if(t-last>=period){//周期性刷新last=t;system("cls");if(keypre('s')==0)break;setmap();printf("-----------當前分數:%d,已消除行:%d-----------\n",grade,line);showmap();}if(kbhit()==1){system("cls");if(keypre(getch())==0)break;setmap();printf("-----------當前分數:%d,已消除行:%d-----------\n",grade,line);showmap();}}while(1);system("cls");printf("----------------得分:%d 消除:%d-------------------\n",grade,line);setmap();showmap();printf("----------------游戲結束!謝謝玩耍!----------------\n");printf("按回車鍵退出!\n");while(getchar()!='\n');return 0; }int keypre(char k)//按下某鍵 {int i,j,real=0;char top[wide];if(k=='s'){posi.h++;if(isagain())//下一步是否會重合real=1;//那么下一步不能走了//留在當前位置if(real){grade+=18;//留步加分posi.h--;//留在上一步for(i=0;i<size.h ;i++)//就留下來了{for(j=0;j<size.w;j++){if(sqr[i][j]==2)//只記錄實體stay[i+posi.h][j+posi.w ]=2;}}//出新的judge();//層滿判斷return (setini(getrand(1,7)));}}else if(k=='a'||k=='A'){posi.w --;if(isagain())posi.w ++;//移動取消}else if(k=='d'||k=='D'){posi.w ++;if(isagain())posi.w --;//移動取消}else if(k=='w'||k=='W')turn90();else if(k=='s'||k=='S'){posi.h++;if(isagain())posi.h --;//移動取消}//左右分界判斷if(posi.w+size.w>wide-1)posi.w=wide-1-size.w;if(posi.w <1)posi.w=1;return 1;} void setmap()//初始化地圖,并置 {int i,j;//畫地圖區域for(i=0;i<hight;i++){for(j=0;j<wide;j++){if(i==0||i==hight-1||j==0||j==wide-1)map[i][j]=1;//邊界elsemap[i][j]=0;//空白}}//畫活動方塊for(i=0;i<size.h ;i++){for(j=0;j<size.w ;j++){map[posi.h+i][posi.w+j]=sqr[i][j];}}//畫殘留for(i=0;i<hight;i++){for(j=0;j<wide;j++){if(stay[i][j]==2)map[i][j]=2;}} } //將數組轉換為圖形 void showmap() {int i,j;for(i=0;i<hight;i++){for(j=0;j<wide;j++){if(map[i][j]==1)printf("□");else if(map[i][j]==2)printf("■");elseprintf(" ");}printf("\n");} }int getrand(int min,int max)//取一個范圍內的隨機數 {return (min+rand()%(max-min+1)); }void turn90()//活動方塊順時針旋轉九十度 {int i,j;char a[4][4];//臨時變量char temp[4][4];//方塊備份for(i=0;i<4;i++)for(j=0;j<4;j++)temp[i][j]=sqr[i][j];for(i=0;i<4;i++)for(j=0;j<4;j++)a[j][i]=sqr[i][j];//斜線對稱//左右對稱,即是轉動九十度i=size.h ;size.h =size.w;size.w =i;for(i=0;i<size.h ;i++)for(j=0;j<size.w ;j++)sqr[i][size.w-1-j]=a[i][j];if(isagain())for(i=0;i<4;i++)for(j=0;j<4;j++)sqr[i][j]=temp[i][j];}int setini(int type)//初始化方塊,類型,看表吧 {int i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)sqr[i][j]=0;//歸零switch(type){case 1:size.h =1;size.w =4;sqr[0][0]=2;sqr[0][1]=2;sqr[0][2]=2;sqr[0][3]=2;break;case 2:size.h =2;size.w =3;sqr[0][0]=2;sqr[1][0]=2;sqr[1][1]=2;sqr[1][2]=2;break;case 3:size.h =2;size.w =3;sqr[0][2]=2;sqr[1][0]=2;sqr[1][1]=2;sqr[1][2]=2;break;case 4:size.h =2;size.w =3;sqr[0][1]=2;sqr[0][2]=2;sqr[1][0]=2;sqr[1][1]=2;break;case 5:size.h =2;size.w =3;sqr[0][0]=2;sqr[0][1]=2;sqr[1][1]=2;sqr[1][2]=2;break;case 6:size.h =2;size.w =2;sqr[0][0]=2;sqr[0][1]=2;sqr[1][0]=2;sqr[1][1]=2;break;case 7:size.h =2;size.w =3;sqr[0][1]=2;sqr[1][0]=2;sqr[1][1]=2;sqr[1][2]=2;break;}posi.h =1;posi.w =(wide-size.w )/2;if(isagain())//剛剛初始化你就重合了,你說你是不是掛了?return 0;return 1;/* 1 ■■■■ 1*4 -> 4*1■ ■2■■■ 3 ■■■ 2*3 -> 3*2■■ ■■ 2*3 -> 3*24 ■■ 5 ■■■■ ■6 ■■ 2*2 7 ■■■ 2*3->3*2*/ } void judge()//層滿處理 {int i,j,full,k,esqr;for(i=1;i<hight-1;i++)//除掉邊界{full=1;for(j=1;j<wide-1;j++)//除掉邊界{if(stay[i][j]!=2)//存在不為方塊的full=0;//假空}if(full)//真空{line++;//已消除grade+=90;//消除加五倍分數for(j=1;j<wide-1;j++)//除掉邊界stay[i][j]=0;//置零}}//全部除完之后for(i=hight-2;i>=2;i--){int s=i;if(exsqr(i)==0)//本層為空{//上層下移while(s>=1 && exsqr(--s)==0)//該層不存在方塊//繼續向上尋找;for(j=1;j<wide-1;j++){stay[i][j]=stay[s][j];//上層下移stay[s][j]=0;//上層清空}}} }int isagain()//判斷活動區是否與stay區重復 {int i,j;for(i=0;i<size.h ;i++){for(j=0;j<size.w ;j++){if(sqr[i][j]==2)//是實體,i,j是框內代號{if(posi.h +i >hight-2)return 1;else if(stay[posi.h +i][posi.w +j]==2)//框內位置轉換為map位置return 1;}}}return 0;//未重復}int exsqr(char row)//判斷stay區某一行是否存在方塊,存在返回1,不存在返回0 {int j;for(j=1;j<wide-1;j++)//出掉邊界if(stay[row][j]==2)return 1;return 0; }

轉載于:https://www.cnblogs.com/tinyjian/p/6550718.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的【小游戏】俄罗斯方块(C++版)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产情侣在线视频 | 人人妻人人澡人人爽 | 亚洲色成人网站www永久四虎 | 国产真实伦对白全集 | 欧美高清一区二区三区四区 | 网友自拍av| 在线 日本 制服 中文 欧美 | 亚洲国产剧情在线观看 | 欧洲精品码一区二区三区免费看 | 中文久久乱码一区二区 | 欧美激情三区 | 国产精品美女网站 | 久久夜夜操妹子 | 中文字幕不卡在线观看 | 国内毛片毛片毛片毛片 | 天堂资源最新在线 | 91久久精品国产 | 少妇资源 | 看一级黄色片 | 欧美黄片一区二区三区 | 亚洲国产精品成人综合色在线婷婷 | 高清人妖shemale japan | 亚洲爱爱视频 | 曰本无码人妻丰满熟妇啪啪 | 亚洲欧美在线观看 | 无码内射中文字幕岛国片 | 色噜噜成人 | 欧美日韩一区二区在线 | 夜夜高潮夜夜爽 | 国产一区二区自拍 | 亚洲av永久无码国产精品久久 | 欧美女人天堂 | 亚洲一区二区在线视频 | 亚洲精品人妻无码 | 午夜性生活片 | 91jk制服白丝超短裙大长腿 | 国产精品无码av在线有声小说 | 国产精品一区二区三区四区五区 | 日本一区二区视频在线观看 | 久久久性色精品国产免费观看 | 中文字幕――色哟哟 | 二十四小时在线更新观看 | 奇米第四色7777| 天堂在线日本 | 国产片自拍 | 手机av在线播放 | 日本xxxx色| 国产精品久久一区二区三区动 | 国产精品无码久久久久 | 天天躁日日躁狠狠躁 | 波多野结衣中文字幕一区二区 | 人妻熟女一区二区aⅴ水野 91在线观看视频 | 国产欧美视频一区 | 国产裸体永久免费视频网站 | 国产小视频你懂的 | 色a视频 | 日韩一级高清 | 色图社区 | 免费成人美女在线观看. | 想要视频在线 | xxxx黄色片| 欧美久久久精品 | 欧美大黄视频 | 国产99999 | 国产综合图片 | 91影院在线播放 | 亚洲免费视频大全 | 亚洲久久一区二区 | 亚洲黄色片在线观看 | 亚洲自拍小视频 | 午夜影院男女 | cao久久| 老司机狠狠爱 | 久久黄色网 | 成人羞羞在线观看网站 | 国产99自拍 | 中文字幕免费在线播放 | 男人的影院 | 一级在线毛片 | 日b在线观看 | 怡红院av亚洲一区二区三区h | www.com亚洲 | 亚洲v在线观看 | 精品美女久久久 | 亚洲男人天堂电影 | 美女色黄网站 | 国产成人精品视频 | 国产天堂av | 午夜欧美精品 | 日韩69视频| 操批网站 | 韩国伦理中文字幕 | 医生强烈淫药h调教小说视频 | 亚洲精品传媒 | 天使色吧| 欧美色图在线视频 | 五月天婷婷在线视频 | 久久精品二区 | 波多野结衣在线视频免费观看 |