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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言---------俄罗斯方块(源代码)

發布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言---------俄罗斯方块(源代码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#include<stdio.h>
#include<windows.h>//字體顏色,窗口
#include<conio.h>
#include<stdlib.h>
#include<time.h>
#include <mmsystem.h>
#pragma comment(lib,“winmm.lib”)

#define zuobiaox 13 //游戲窗口左上角的x軸坐標
#define zuobiaoy 3 //游戲窗口左上角y軸的坐標
#define height 20 //游戲窗口的高度
#define width 20 //游戲窗口的寬度

int i, j, Temp, Temp1, Temp2;
int a[80][80] = { 0 }; //標記游戲屏幕的圖案:2表示游戲邊框,1表示方塊,0表無圖案
int b[4];//標記4個口方塊,0表示沒有方塊1表示有方塊
struct fangkuai
{
int x;
int y;
int flag;
int next;
int speed;
int number;
int score;
int level;

};
HANDLE hOUT;//控制臺句柄

int color(int c);//控制臺中的文字顏色
void gotoxy(int x, int y);//光標移動到指定位置
void drwa();//繪制游戲邊框
void falg(struct fangkuai *);//隨機產生方塊類型的序號
void makefangkuai(struct fangkuai *);//繪制俄羅斯方塊
void printffangkuai(struct fangkuai *);//打印俄羅斯方塊
void clean(struct fangkuai *);//清楚方塊的痕跡
int ifmove(struct fangkuai *);//判斷是否能移動,返回值為1能移動
void del(struct fangkuai *);//滿行刪減
void gameplay();
void regulation();//游戲規則
void explation();//按鍵說明
void welcome();//歡迎界面
void replay(struct fangkuai *);//重新開始
void title();//歡迎界面上方的標題
void flower();//裝飾
void close();//關閉游戲

//獲取光標的位置
void gotoxy(int x, int y)
{
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}

//控制文字顏色
int color(int c)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c);
return 0;

}

//制作游戲窗口
void drwa()
{
gotoxy(zuobiaox + width - 7, zuobiaoy - 2);
color(11);
printf(“Welcome to the game!”);
gotoxy(zuobiaox + 2 * width + 3, zuobiaoy + 8);
color(2);
printf("***************************");
gotoxy(zuobiaox + 2 * width + 3, zuobiaoy + 7);
color(3);
printf("下一出現方塊: “);
gotoxy(zuobiaox + 2 * width + 3, zuobiaoy + 13);
color(2);
printf(”**************************");
gotoxy(zuobiaox + 2 * width + 3, zuobiaox + 17);
color(14);
printf(“↑鍵:旋轉”);
gotoxy(zuobiaox + 2 * width + 3, zuobiaox + 19);
printf(“空格:暫停游戲”);
gotoxy(zuobiaox + 2 * width + 3, zuobiaoy + 15);
printf(“Esc:退出游戲”);
gotoxy(zuobiaox, zuobiaoy);
color(12);
printf(“╔”);
gotoxy(zuobiaox + 2 * width - 2, zuobiaoy);
printf(“╗”);
gotoxy(zuobiaox, zuobiaoy + height);
printf(“╚”);
gotoxy(zuobiaox + 2 * width - 2, zuobiaoy + height);
printf(“╝”);
a[zuobiaox][zuobiaoy + height] = 2;//記住該處已有的圖案
a[zuobiaox + 2 * width - 2][zuobiaoy + height] = 2;
for (i = 2; i < 2 * width; i += 2)
{
gotoxy(zuobiaox + i, zuobiaoy);
printf(“═”);//打印橫框
}
for (i = 2; i < 2 * width - 2; i += 2)
{
gotoxy(zuobiaox + i, zuobiaoy + height);
printf(“═”);//打印下橫框
a[zuobiaox + i][ zuobiaoy + height] = 2;
}
for (i = 1; i < height; i++)
{
gotoxy(zuobiaox, zuobiaoy + i);
printf(“║”);//打印左豎框
a[zuobiaox][zuobiaoy + i] = 2;//記住左豎框有圖案
}
for (i = 1; i < height; i++)
{
gotoxy(zuobiaox + 2 * width - 2, zuobiaoy + i);
printf(“║”);//打印左豎框
a[zuobiaox+2width-2][zuobiaoy + i] = 2;//記住左豎框有圖案
}
}

void makefangkuai(struct fangkuai Fangkuai)
{
a[Fangkuai->x][Fangkuai->y] = b[0];//中心方塊位置的圖形狀態
switch (Fangkuai->flag)//共七大類,19種類型
{
case 1: //田字方塊
{
color(10);
a[Fangkuai->x][Fangkuai->y - 1] = b[1];
a[Fangkuai->x + 2][Fangkuai->y-1]=b[2];
a[Fangkuai->x + 2][Fangkuai->y] = b[3];
break;
}
case 2://直線方塊■■■
{
color(13);
a[Fangkuai->x - 2][Fangkuai->y] = b[1];
a[Fangkuai->x + 2][Fangkuai->y] = b[2];
a[Fangkuai->x + 4][Fangkuai->y] = b[3];
break;
}
case 3://直線方塊
/ ■

■*/

{color(13);a[Fangkuai->x][Fangkuai->y - 1] = b[1];a[Fangkuai->x][Fangkuai->y - 2] = b[2];a[Fangkuai->x][Fangkuai->y + 1] = b[3];break; } case 4://T字方塊/*■■■■*/ {color(11);a[Fangkuai->x - 2][Fangkuai->y] = b[1];a[Fangkuai->x + 2][Fangkuai->y] = b[2];a[Fangkuai->x][Fangkuai->y + 1] = b[3];break; } case 5://順時針90°T字方塊/*■■■■*/ {color(11);a[Fangkuai->x][Fangkuai->y - 1] = b[1];a[Fangkuai->x][Fangkuai->y + 1] = b[2];a[Fangkuai->x - 2][Fangkuai->y] = b[3];break; } case 6:/*■■■■*/ {color(11);a[Fangkuai->x][Fangkuai->y - 1] = b[1];a[Fangkuai->x - 2][Fangkuai->y] = b[2];a[Fangkuai->x + 2][Fangkuai->y] = b[3];break; } case 7://順時針270T字方塊/*■■■■*/ {color(11);a[Fangkuai->x][Fangkuai->y - 1] = b[1];a[Fangkuai->x][Fangkuai->y + 1] = b[2];a[Fangkuai->x + 2][Fangkuai->y] = b[3];break; } case 8:/*■■■■ */ {color(14);a[Fangkuai->x][Fangkuai->y + 1] = b[1];a[Fangkuai->x - 2][Fangkuai->y] = b[2];a[Fangkuai->x + 2][Fangkuai->y + 1] = b[3];break;} case 9:/*順時針Z字方塊■■■■*/ {color(14);a[Fangkuai->x][Fangkuai->y - 1] = b[1];a[Fangkuai->x - 2][Fangkuai->y] = b[2];a[Fangkuai->x - 2][Fangkuai->y + 1] = b[3];break; }case 10:/*反轉Z字方塊■■■■*/ {color(14);a[Fangkuai->x][Fangkuai->y - 1] = b[1];a[Fangkuai->x - 2][Fangkuai->y - 1] = b[2];a[Fangkuai->x + 2][Fangkuai->y] = b[3];break; }case 11:/*順時針Z字方塊■■■■*/ {color(14);a[Fangkuai->x][Fangkuai->y + 1] = b[1];a[Fangkuai->x - 2][Fangkuai->y - 1] = b[2];a[Fangkuai->x - 2][Fangkuai->y] = b[3];break; } case 12:/*7字方塊■■■■*/ {color(12);a[Fangkuai->x][Fangkuai->y - 1] = b[1];a[Fangkuai->x][Fangkuai->y + 1] = b[2];a[Fangkuai->x - 2][Fangkuai->y - 1] = b[3];break; } case 13:/*順時針90°7字方塊■■■■*/ {color(12);a[Fangkuai->x - 2][Fangkuai->y] = b[1];a[Fangkuai->x + 2][Fangkuai->y - 1] = b[2];a[Fangkuai->x + 2][Fangkuai->y] = b[3];break; }case 14:/* 順時針180°7字方塊■■■■*/ {color(12);a[Fangkuai->x][Fangkuai->y - 1] = b[1];a[Fangkuai->x][Fangkuai->y + 1] = b[2];a[Fangkuai->x + 2][Fangkuai->y + 1] = b[3];break; } case 15:/*■■■■*/ {color(12);a[Fangkuai->x - 2][Fangkuai->y] = b[1];a[Fangkuai->x - 2][Fangkuai->y + 1] = b[2];a[Fangkuai->x + 2][Fangkuai->y] = b[3];break; } case 16:/*■■■■*/ {color(12);a[Fangkuai->x][Fangkuai->y + 1] = b[1];a[Fangkuai->x][Fangkuai->y - 1] = b[2];a[Fangkuai->x + 2][Fangkuai->y - 1] = b[3];break; }case 17:/*■■■■*/ {color(12);a[Fangkuai->x - 2][Fangkuai->y] = b[1];a[Fangkuai->x + 2][Fangkuai->y + 1] = b[2];a[Fangkuai->x + 2][Fangkuai->y] = b[3];break;}case 18:/*■■■■*/ {color(12);a[Fangkuai->x][Fangkuai->y - 1] = b[1];a[Fangkuai->x][Fangkuai->y + 1] = b[2];a[Fangkuai->x - 2][Fangkuai->y + 1] = b[3];break; }case 19:/*■■■■*/ {color(12);a[Fangkuai->x - 2][Fangkuai->y] = b[1];a[Fangkuai->x - 2][Fangkuai->y - 1] = b[2];a[Fangkuai->x + 2][Fangkuai->y] = b[3]; } }

}

/打印俄羅斯方塊/
void printffangkuai(struct fangkuai *Fangkuai)
{
for (i = 0; i < 4; i++)
{
b[i] = 1;//數組b[4]的每個元素的值都是1
}
makefangkuai(Fangkuai);
for (i = Fangkuai->x - 2; i <= Fangkuai->x + 4; i += 2)
{
for (j = Fangkuai->y - 2; j <= Fangkuai->y + 1; j++)
{
if (a[i][j] == 1 && j > zuobiaoy)//j>zuobiaoy是框定圖案在框中才有
{
gotoxy(i, j);
printf(“■”);
}
}
}
//打印菜單信息
gotoxy(zuobiaox + 2 * width + 3, zuobiaoy + 1);
color(4);
printf(“level:”);
color(12);
printf("%d", Fangkuai->level);
gotoxy(zuobiaoy + 2 * width + 13, zuobiaoy + 3);
color(4);
printf(“score:”);
color(12);
printf("%d", Fangkuai->score);
gotoxy(zuobiaox + 2 * width + 3, zuobiaoy + 5);
color(4);
printf(“speed:”);
color(12);
printf("%d", Fangkuai->speed);

}

/判斷是否可移動/
int ifmove(struct fangkuai* Fangkuai)
{
if (a[Fangkuai->x][Fangkuai->y] != 0) //當中心方塊位置上有圖案時,返回值為0,既不可移動
{
return 0;
}
else
{//當為田字方塊且中心方塊位置外,其他■字方塊位置上無圖案時,說明這個位置能夠放下田字方塊,可以移動到這個位置,返回值為1,即可移動
//比如田字方塊,它的中心方塊時左下角的■,如果它的上,右,右上的位置為空,則這個位置就可以放一個田字方塊;如果有一個位置上不為空,都放不下一個田

if ((Fangkuai->flag == 1 && (a[Fangkuai->x][Fangkuai->y - 1] == 0 && a[Fangkuai->x + 2][Fangkuai->y - 1] == 0 && a[Fangkuai->x + 2][Fangkuai->y] == 0)) || (Fangkuai->flag == 2 && (a[Fangkuai->x - 2][Fangkuai->y] == 0 && a[Fangkuai->x + 2][Fangkuai->y] == 0 && a[Fangkuai->x + 4][Fangkuai->y] == 0)) || (Fangkuai->flag == 3 && (a[Fangkuai->x][Fangkuai->y - 1] == 0 && a[Fangkuai->x][Fangkuai->y - 2] == 0 && a[Fangkuai->x][Fangkuai->y + 1] == 0)) || (Fangkuai->flag == 4 && (a[Fangkuai->x - 2][Fangkuai->y] == 0 && a[Fangkuai->x + 2][Fangkuai->y] == 0 && a[Fangkuai->x][Fangkuai->y + 1] == 0)) || (Fangkuai->flag == 5 && (a[Fangkuai->x][Fangkuai->y - 1] == 0 && a[Fangkuai->x][Fangkuai->y + 1] == 0 && a[Fangkuai->x - 2][Fangkuai->y] == 0)) || (Fangkuai->flag == 6 && (a[Fangkuai->x][Fangkuai->y - 1] == 0 && a[Fangkuai->x - 2][Fangkuai->y] == 0 && a[Fangkuai->x - 2][Fangkuai->y] == 0)) || (Fangkuai->flag == 7 && (a[Fangkuai->x][Fangkuai->y - 1] == 0 && a[Fangkuai->x][Fangkuai->y + 1] == 0 && a[Fangkuai->x + 2][Fangkuai->y] == 0)) || (Fangkuai->flag == 8 && (a[Fangkuai->x][Fangkuai->y - 1] == 0 && a[Fangkuai->x - 2][Fangkuai->y] == 0 && a[Fangkuai->x + 2][Fangkuai->y + 1] == 0)) || (Fangkuai->flag == 9 && (a[Fangkuai->x][Fangkuai->y - 1] == 0 && a[Fangkuai->x - 2][Fangkuai->y] == 0 && a[Fangkuai->x - 2][Fangkuai->y + 1] == 0)) || (Fangkuai->flag == 10 && (a[Fangkuai->x][Fangkuai->y - 1] == 0 && a[Fangkuai->x - 2][Fangkuai->y - 1] == 0 && a[Fangkuai->x + 2][Fangkuai->y] == 0)) || (Fangkuai->flag == 11 && (a[Fangkuai->x][Fangkuai->y + 1] == 0 && a[Fangkuai->x - 2][Fangkuai->y - 1] == 0 && a[Fangkuai->x - 2][Fangkuai->y] == 0)) || (Fangkuai->flag == 12 && (a[Fangkuai->x][Fangkuai->y - 1] == 0 && a[Fangkuai->x][Fangkuai->y + 1] == 0 && a[Fangkuai->x - 2][Fangkuai->y - 1] == 0)) || (Fangkuai->flag == 13 && (a[Fangkuai->x - 2][Fangkuai->y] == 0 && a[Fangkuai->x + 2][Fangkuai->y - 1] == 0 && a[Fangkuai->x + 2][Fangkuai->y] == 0)) || (Fangkuai->flag == 14 && (a[Fangkuai->x][Fangkuai->y - 1] == 0 && a[Fangkuai->x][Fangkuai->y + 1] == 0 && a[Fangkuai->x + 2][Fangkuai->y + 1] == 0)) || (Fangkuai->flag == 15 && (a[Fangkuai->x - 2][Fangkuai->y] == 0 && a[Fangkuai->x - 2][Fangkuai->y + 1] == 0 && a[Fangkuai->x + 2][Fangkuai->y] == 0)) || (Fangkuai->flag == 16 && (a[Fangkuai->x][Fangkuai->y + 1] == 0 && a[Fangkuai->x][Fangkuai->y - 1] == 0 && a[Fangkuai->x + 2][Fangkuai->y - 1] == 0)) || (Fangkuai->flag == 17 && (a[Fangkuai->x - 2][Fangkuai->y] == 0 && a[Fangkuai->x + 2][Fangkuai->y + 1] == 0 && a[Fangkuai->x + 2][Fangkuai->y] == 0)) || (Fangkuai->flag == 18 && (a[Fangkuai->x][Fangkuai->y - 1] == 0 && a[Fangkuai->x][Fangkuai->y + 1] == 0 && a[Fangkuai->x - 2][Fangkuai->y + 1] == 0)) || (Fangkuai->flag == 19 && (a[Fangkuai->x - 2][Fangkuai->y] == 0 && a[Fangkuai->x - 2][Fangkuai->y - 1] == 0 && a[Fangkuai->x + 2][Fangkuai->y] == 0))){return 1;} } return 0;

}

/隨機產生俄羅斯方塊類型的序號/
void flag(struct fangkuai *Fangkuai)
{
Fangkuai->number++;//記住產生方塊的個數
srand(time(NULL));
if (Fangkuai->number == 1)
{
Fangkuai->flag = rand() % 19 + 1;//記住第一個方塊的序號
}
Fangkuai->next = rand() % 19 + 1;//記住下一個方塊的序號
}

/清除痕跡/
void clean(struct fangkuai *Fangkuai)
{
for (i = 0; i < 4; i++)
b[i] = 0;//數組b[4]的每個元素的值都為0
makefangkuai(Fangkuai);
for (i = Fangkuai->x - 2; i <= Fangkuai->x + 4; i += 2)
{
for (j = Fangkuai->y - 2; j <= Fangkuai->y + 1; j++)
{
if (a[i][j] == 0 && j > zuobiaoy)
{
gotoxy(i, j);
printf(" “);
}
}
}
}
/判斷是否滿行并刪減/
void del(struct fangkuai *Fangkuai)//當某行有width-2個方塊時,則滿行消除
{
int k=0, Del = 0;//分別用于記錄某行方塊的個數和刪除方塊的行數的變量
for (j = zuobiaoy + height ; j >= zuobiaoy + 1; j–)
{
for (i = zuobiaox + 2; i < zuobiaox + 2 * width - 2; i += 2)
{
if (a[i][j] == 1)//豎坐標依次從下往上,橫坐標依次由左至右判斷是否滿行
{
k++;//記錄此行方塊的個數
if (k == width - 2)//如果滿行
{
for (k = zuobiaox + 2; k < zuobiaox + 2 * width - 2; k += 2)//刪除滿行的方塊
{
a[k][j] = 0;
gotoxy(k, j);
printf(” “);
}
for (k = j - 1; k > zuobiaoy; k–)//如果刪除行以上的位置有方塊,則先清除,再將方塊下移一個位置
{
for (i = zuobiaox + 2; i < zuobiaox + 2 * width - 2; i += 2)
{
if (a[i][k] == 1)
{
a[i][k] = 0;
gotoxy(i, k);
printf(” ");
a[i][k + 1] = 1;
gotoxy(i, k + 1);
printf(“■”);
}
}
}
j++;//方塊下移后,重新判斷刪除行是否滿行
Del++;//記錄刪除方塊的行數
}
}
}
}
Fangkuai->score += 100 * Del;//沒刪除一行,得100分
if (Del > 0 && (Fangkuai->score % 200 == 0 || Fangkuai->score / 200 > Fangkuai->level - 1))
{

Fangkuai->speed -= 20;Fangkuai->level++; }

}

void gameplay()
{
int n;
struct fangkuai t, *Fangkuai = &t;//定義結構體的指針并指向結構體變量
char ch;//接受鍵盤輸入的變量
Fangkuai->number = 0;
Fangkuai->speed = 150;
Fangkuai->score = 0;
Fangkuai->level = 1;
while (1)
{
flag(Fangkuai);//隨機方塊序號
Temp = Fangkuai->flag;//記住當前方塊序號
Fangkuai->x = zuobiaox + 2 * width + 6;//獲得預覽界面方塊的x坐標
Fangkuai->y = zuobiaoy + 10;//獲得預覽界面方塊的y 坐標
Fangkuai->flag = Fangkuai->next;//獲得下一個序號
printffangkuai(Fangkuai);
Fangkuai->x = zuobiaox + width;//獲得游戲窗口中心方塊y的坐標
Fangkuai->y = zuobiaoy - 1;
Fangkuai->flag = Temp;//獲得當前的方塊序號
while (1)//控制方塊方向,直至方塊不再下移
{
label:printffangkuai(Fangkuai);//打印方塊
Sleep(Fangkuai->speed);
clean(Fangkuai);
Temp1 = Fangkuai->x;//記住當前中心方塊橫坐標的值
Temp2 = Fangkuai->flag;//記住當前方塊的序號
if (kbhit())
{
ch = getch();
if (ch == 75)//按←向左
{
Fangkuai->x -= 2;
}
if (ch == 77)//→
{
Fangkuai->x += 2;
}
if (ch == 80)//↓加快下落
{
if (ifmove(Fangkuai) != 0)
{
Fangkuai->y += 2;
}
if (ifmove(Fangkuai) == 0)
{
Fangkuai->y = zuobiaoy + height - 2;
}
}
if (ch == 72)//↑變形
{
if (Fangkuai->flag >= 2 && Fangkuai->flag <= 3)
{
Fangkuai->flag++;
Fangkuai->flag %= 2;
Fangkuai->flag += 2;

}if (Fangkuai->flag >= 4 && Fangkuai->flag <= 7){Fangkuai->flag++;Fangkuai->flag %= 4;Fangkuai->flag += 4;}if (Fangkuai->flag >= 8 && Fangkuai->flag <= 11){Fangkuai->flag++;Fangkuai->flag %= 4;Fangkuai->flag += 8;}if (Fangkuai->flag >= 12 && Fangkuai->flag <= 15){Fangkuai->flag++;Fangkuai->flag %= 4;Fangkuai->flag += 12;}if (Fangkuai->flag >= 16 && Fangkuai->flag <= 19){Fangkuai->flag++;Fangkuai->flag %= 4;Fangkuai->flag += 16;}}if (ch == 32) //空格暫停{printffangkuai(Fangkuai);while (1){if (kbhit())//再按空格鍵,繼續游戲{ch = getch();if (ch == 32){goto label;}}}}if (ch == 27){system("cls");memset(a, 0, 6400 * sizeof(int));//初始化數組welcome();}if (ifmove(Fangkuai) == 0)//如果不可動,上面操作無效{Fangkuai->x = Temp1;Fangkuai->flag = Temp2;}else //如果可動,執行操作goto label;}Fangkuai->y++;//如果沒有操作指令,方塊向下if (ifmove(Fangkuai) == 0)//如果向下移動且不可動,方塊放在此處{Fangkuai->y--;printffangkuai(Fangkuai);del(Fangkuai);break;}}for (i = Fangkuai->y - 2; i < Fangkuai->y + 2; i++)//游戲結束條件:方塊觸到框頂{if (i == zuobiaoy){system("cls");gotoxy(29, 7);printf(" \n");color(12);printf("\t\t\t■■■■ ■ ■ ■■ \n");printf("\t\t\t■ ■■ ■ ■ ■ \n");printf("\t\t\t■■■ ■ ■ ■ ■ ■\n");printf("\t\t\t■ ■ ■■ ■ ■ \n");printf("\t\t\t■■■■ ■ ■ ■■ \n");gotoxy(17, 18);color(14);printf("重新玩一把---1");gotoxy(44, 18);printf("不玩了---2");int n;gotoxy(32, 20);printf("選擇【1/2】:");color(11);scanf("%d", &n);switch (n){case 1:{system("cls");replay(Fangkuai);break; }case 2:{exit(0);break;}}}}Fangkuai->flag = Fangkuai->next;//清除下一個俄羅斯方塊的圖形Fangkuai->x = zuobiaox + 2 * width + 6;Fangkuai->y = zuobiaoy + 10;clean(Fangkuai); }

}

void replay(struct fangkuai*)
{
system(“cls”);
memset(a, 0, 6400 * sizeof(int));
drwa();
gameplay();
}

int main()
{
title();
mciSendString(L"open D:\饒品德作品\ConsoleApplication1\aa.mp3", NULL, 0, 0);
mciSendString(L"play D:\饒品德作品\ConsoleApplication1\aa.mp3", NULL, 0, 0);
flower();
welcome();

}

/歡迎界面/
void welcome()
{
int n;
int i, j = 1;
color(14);
for (i = 9; i <= 20; i++)//輸出上下邊框
{
for (j = 15; j <= 60; j++)//輸出左右邊框
{
gotoxy(j, i);
if (i == 9 || i == 20)
printf("=");
else if (j == 15 || j == 59)
printf("||");

} } color(12); gotoxy(25, 12); printf("1.開始游戲"); gotoxy(40, 12); printf("2.按鍵說明"); gotoxy(25, 17); printf("3.游戲規則"); gotoxy(40, 17); printf("4.退出"); gotoxy(21, 22); color(3); printf("請選擇[1 2 3 4 ]:[ ]\b\b"); color(14); scanf("%d", &n); switch (n) { case 1:system("cls");drwa();gameplay();break; case 2:explation();break; case 3:regulation();break; case 4:close();break; }

}

void title()
{
color(15);
gotoxy(16, 3);
printf(“趣 味 俄 羅 斯 方 塊\n”);
color(11);
gotoxy(18, 5);
printf(“■”);
gotoxy(18, 6);
printf(“■■”);
gotoxy(18, 7);
printf(“■”);

color(14); gotoxy(26, 6); printf("■■"); gotoxy(28, 7); printf("■■");color(10); gotoxy(36, 6); printf("■■"); gotoxy(36, 7); printf("■■");color(13); gotoxy(45, 5); printf("■"); gotoxy(45, 6); printf("■"); gotoxy(45, 7); printf("■"); gotoxy(45, 8); printf("■");color(12); gotoxy(56, 6); printf("■"); gotoxy(52, 7); printf("■■■");

}

void flower()
{
gotoxy(66, 11);
color(12);
printf("()");
gotoxy(64, 12);
printf("()");
gotoxy(66, 13);
printf("()");
gotoxy(67, 12);
color(6);
printf("@");
gotoxy(72, 10);
color(13);
printf("()");
gotoxy(76, 10);
printf("()");
gotoxy(74, 9);
printf("()");
gotoxy(74, 11);
printf("(_)");
gotoxy(75, 10);
color(6);
printf("@");
gotoxy(71, 12);
printf("|");
gotoxy(72, 11);
printf("/");
gotoxy(70, 13);
printf("\|");
gotoxy(70, 14);
printf("~|/");
gotoxy(70, 15);
printf("\|");
gotoxy(71, 16);
printf("|/");
gotoxy(71, 17);
printf("|");
gotoxy(67, 17);
color(10);
printf("///");
gotoxy(73, 17);
printf("//");
gotoxy(67, 18);
color(2);
printf("^^^^^^^");

}

void close()
{
exit(0);
}
void explation()
{
int i, j = 1;
system(“cls”);
color(13);
gotoxy(32, 3);
printf(“按鍵說明”);
color(2);
for (i = 6; i <= 16; i++)
{
for (j = 15; j <= 60; j++)
{
gotoxy(j, i);
if (i == 6 || i == 16)
printf("=");
else if (j == 15 || j == 59) printf("||");
}
}
color(3);
gotoxy(18, 7);
printf(“玩家可通過←→移動方塊”);
color(10);
gotoxy(18, 9);
printf(“↑使方塊旋轉”);
color(14);
gotoxy(18, 11);
printf(“↓加速下落”);
color(11);
gotoxy(18, 13);
printf(“空格暫停,Esc退出”);
getch();
system(“cls”);
main();
}

void regulation()
{
int i, j = 1;
system(“cls”);
color(13);
gotoxy(34, 3);
printf(“游戲規則”);
color(2);
for (i = 6; i <= 18; i++)
{
for (j = 12; j <= 70; j++)
{
gotoxy(j, i);
if (i == 6 || i == 18) printf("=");
else if (j == 12 || j == 69) printf("||");
}
}
color(12);
gotoxy(16, 7);
printf(“每消除一行,積分增加100”);
color(11);
gotoxy(16, 15);
printf(“每積累1000分提升一個等級”);
getch();
system(“cls”);
welcome();
}

//注意:
主函數中:
mciSendString(L"open D:\饒品德作品\ConsoleApplication1\aa.mp3", NULL, 0, 0);
mciSendString(L"play D:\饒品德作品\ConsoleApplication1\aa.mp3", NULL, 0, 0);
這兩句作用是添加 背景音樂,你需要下載一首歌曲,格式如上代碼所示,把歌曲路徑放入與代碼相同的文件中,aa.mp3就是XXX.mp3,歌曲名字而已,說的不詳細,這個可以百度搜。

總結

以上是生活随笔為你收集整理的C语言---------俄罗斯方块(源代码)的全部內容,希望文章能夠幫你解決所遇到的問題。

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