#include <windows.h> ? ? ? ? //1、這行是用用來干嘛的?、2、有沒有關(guān)聯(lián)(和其他代碼)?3、運用到了什么算法(或類型)?、4、有什么意思在里面?、#include <stdio.h> ? ? ? ? ?//1、這行是用用來干嘛的?、2、有沒有關(guān)聯(lián)(和其他代碼)?3、運用到了什么算法(或類型)?、4、有什么意思在里面?、#include <time.h> ? ? ? ? ?//1、這行是用用來干嘛的?、2、有沒有關(guān)聯(lián)(和其他代碼)?3、運用到了什么算法(或類型)?、4、有什么意思在里面?、#include <conio.h> ? ? ? ?//1、這行是用用來干嘛的?、2、有沒有關(guān)聯(lián)(和其他代碼)?3、運用到了什么算法(或類型)?、4、有什么意思在里面?、#include <stdlib.h> ? ? ?//1、這行是用用來干嘛的?、2、有沒有關(guān)聯(lián)(和其他代碼)?3、運用到了什么算法(或類型)?、4、有什么意思在里面?、/*** 俄羅斯方塊結(jié)構(gòu)體*///1、這段是用用來干嘛的?、2、有沒有關(guān)聯(lián)(和其他代碼)?3、運用到了什么算法(或類型)?、4、具體是如何運行的?、struct Tetris { int _pool[16][32]; ?// int(*pool)[32]; ? ?// 指向_pool的指針數(shù)組 int tmap[8][4][16]; // int x; ?// X坐標(biāo) int y; ?// Y坐標(biāo) int s; ?// int st; // int t; ?//};// 定義輸出字符串 ? 1、運用到了什么算法(或類型)?、char gcText[] = " #######";// 定義俄羅斯方塊程序?qū)ο?? ? 1、運用到了什么算法(或類型)?、struct Tetris tetris;// 聲明所有方法 ? ? ? ? ? ? ? 1、有沒有關(guān)聯(lián)(和其他代碼)?2、運用到了什么算法(或類型)?、3、具體是如何運行的?、void runInit();int process(int box[], int x, int y, int c);int runScene();int main() { // 初始化隨機數(shù)生成器 ? ? ? ? ? ? 1、有沒有關(guān)聯(lián)(和其他代碼)?2、運用到了什么算法(或類型)?、 srand((unsigned)time(NULL)); // 初始化界面、并運行俄羅斯方塊場景 ? ? ? ? ? ?1、有沒有關(guān)聯(lián)(和其他代碼)?2、運用到了什么算法(或類型)?、 for (runInit(); runScene(); ); return 0;}/*** 初始化方法*/void runInit() { // 初始化俄羅斯方塊的七個標(biāo)準(zhǔn)方塊 ? ? ? ? ? ? 1、這一段有沒有關(guān)聯(lián)(和其他代碼)?2、運用到了什么算法(或類型)?、3、具體是如何運行的?、 int box[8][4] = { { 15,4369,15,4369 }, { 23,785,116,547 }, { 71,275,113,802 }, { 39,305,114,562 }, { 54,561,54,561 }, { 99,306,99,306 }, { 51,51,51,51 }, { -1 } }; int i; ? ? ? ? ?//1、這一大段表示什么意思?、2、有沒有關(guān)聯(lián)(和其他代碼)?3、運用到了什么算法(或類型)?、4、具體是如何運行的?、 int j; int k; tetris.pool = &tetris._pool[4]; for (j = 0; j < 7; ++j) { for (i = 0; i < 4; ++i) { for (k = 0; k < 16; ++k) { tetris.tmap[j + 1][i][k] = (box[j][i] & 1) * (j + 1); box[j][i] >>= 1; } } } // 將_pool數(shù)組里的元素全部置為-1 ? ? ? ? ? ? ? 1、有沒有關(guān)聯(lián)(和其他代碼)?2、運用到了什么算法(或類型)?、3、具體是如何運行的?、 memset(tetris._pool, -1, sizeof(tetris._pool)); for (i = 0; i < 10; ++i) { memset(&tetris.pool[i], 0, sizeof(int[21])); } return;}/*** 方塊處理方法:c為0,判斷左移、右移、變換形態(tài)等操作是否可執(zhí)行;c為1,方塊位置確定,添入已堆積方塊中;*/int process(int box[], int x, int y, int c) { ? ? ? ? ? //1、這一大段1、這一大段表示什么意思?、2、有沒有關(guān)聯(lián)(和其他代碼)?3、運用到了什么算法(或類型)?、4、具體是如何運行的?、 int i; int cx; int cy; for (i = 0; i < 16; ++i) { if (box[i]) { cx = x + (i & 3); cy = y + (i >> 2); if (tetris.pool[cx][cy]) { if (c == 2) { tetris.pool[cx][cy] = 0; } else { return 0; } } // 方塊位置固定,將方塊添入已堆積方塊 if (c == 1) { tetris.pool[cx][cy] = box[i]; } } } return 1;}/*** 場景運行 ? ? ? ? ? ? ? //1、這一段表示什么意思?、2、有沒有關(guān)聯(lián)(和其他代碼)?3、運用到了什么算法(或類型)?、4、具體是如何運行的?、*/int runScene() { int x = 0; int y = 0; COORD pos = { 0 }; tetris.s = rand() % 7 + 1; tetris.t = 0; tetris.st = tetris.t; tetris.x = 3; tetris.y = 0; // 方塊定時下降,,每下降一次休眠1毫米 ? ? ? ? ?1、運用到了什么算法(或類型) for (--tetris.t; ; Sleep(1), --tetris.t) { int k = 0; // 監(jiān)聽鍵盤按鍵 ? ? ? ? ? 1、運用到了什么算法(或類型) while (_kbhit()) { // 獲取按鍵值 ? ? ? ? ? 1、運用到了什么算法(或類型) k = _getch(); if (k == 27) return 0; if (k == 'A' || k == 'a') { // 左移,X坐標(biāo)值減1,如果方塊已到最左邊,則不執(zhí)行左移 ? ? ? ? ? ?1、運用到了什么算法(或類型) if (process(tetris.tmap[tetris.s][tetris.st], tetris.x - 1, tetris.y, 0)) { --tetris.x; } } else if (k == 'D' || k == 'd') { // 右移,X坐標(biāo)值加1,如果方塊已到最右邊,則不執(zhí)行右移 ? ? ? ? ? ?1、運用到了什么算法(或類型) if (process(tetris.tmap[tetris.s][tetris.st], tetris.x + 1, tetris.y, 0)) { ++tetris.x; } } else if (k == 'W' || k == 'w') { // 變換形態(tài),如果方塊變形后超出左右邊邊界,或與已堆積方塊重疊,則不執(zhí)行變形操作 ? ? ? ? 1、運用到了什么算法(或類型) if (process(tetris.tmap[tetris.s][(tetris.st + 1) % 4], tetris.x, tetris.y, 0)) { tetris.st = (tetris.st + 1) % 4; } } } // 方塊下降或者加速下降 ? ? ? ? ? ?1、運用到了什么算法(或類型) if (k == 'S' || k == 's' || tetris.t < 0) { // 下降,如果方塊下降后不與已堆積方塊重疊,則下降;否則,執(zhí)行消行邏輯判斷 ? ? ? ? ? ? ? ?1、運用到了什么算法(或類型) if (process(tetris.tmap[tetris.s][tetris.st], tetris.x, tetris.y + 1, 0)) { ++tetris.y; tetris.t = 50; } else { // 方塊位置確定,添入已堆積方塊中 ? ? ? ? ? ?1、運用到了什么算法(或類型) process(tetris.tmap[tetris.s][tetris.st], tetris.x, tetris.y, 1); // 消行判斷 ? ? ? ? ? ? ?1、運用到了什么算法(或類型)、2、具體是怎么運行的?、 for (--y; y > 0; --y) { for (x = 0; tetris.pool[x][y] > 0; ++x); if (tetris.pool[x][y] < 0) { for (k = y++; k > 0; --k) { for (x = 0; tetris.pool[x][0] >= 0; ++x) { tetris.pool[x][k] = tetris.pool[x][k - 1]; } } } } return 1; } } // 方塊位置確定,添入已堆積方塊中 ? ? ? ? ? ?1、運用到了什么算法(或類型)、 process(tetris.tmap[tetris.s][tetris.st], tetris.x, tetris.y, 1); // 重新設(shè)置光標(biāo)的位置 ? ? ? ? ? ? ?1、運用到了什么算法(或類型)、 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); // 地圖打印 ? ? ? ? ?1、運用到了什么算法(或類型)、2、具體是怎么運行的?、 for (y = 1; tetris.pool[0][y] >= 0; ++y, putchar(10)) { for (x = 0; tetris.pool[x][0] >= 0; ++x) { putchar(gcText[tetris.pool[x][y]]); } } process(tetris.tmap[tetris.s][tetris.st], tetris.x, tetris.y, 2);//1、這行是用用來干嘛的?、2、有沒有關(guān)聯(lián)(和其他代碼)?3、運用到了什么算法(或類型)?、4、有什么意思在里面?、 }}
幫忙 寫一下注釋不多,很急 謝謝 要求在下面的文件里面
慕粉1401006384
2016-12-08 16:44:42