怎么用c语言写俄罗斯方块( 五 )

< 0) { if (trsCopy(gt.tmap[gt.s][gt.st], gt.x, gt.y+1, 0))++gt.y,gt.t=50; else { trsCopy(gt.tmap[gt.s][gt.st], gt.x, gt.y, 1); for (--y; y > 0; --y) { for (x = 0; gt.pool[x][y] > 0; ++x); if (gt.pool[x][y] < 0) for (k = y++; k > 0; --k) for (x = 0; gt.pool[x][0] >= 0; ++x) gt.pool[x][k] = gt.pool[x][k-1]; } return 1; } } trsCopy(gt.tmap[gt.s][gt.st], gt.x, gt.y, 1); for (x = 0; gt.pool[x][0] >= 0; ++x) { for (y = 1; gt.pool[x][y] >= 0; ++y) { setfillstyle(1, gcColor[gt.pool[x][y]]); bar(201 + x*gcW, 1 + y*gcW, 200 + gcW + x*gcW, gcW + y*gcW); } } trsCopy(gt.tmap[gt.s][gt.st], gt.x, gt.y, 2); }}int main() { int g = DETECT, m = 0; initgraph(&g, &m, ""); randomize(); trsInit(); while (trsScene()); return 0;} 。
6.用c语言写俄罗斯方块要学哪些东西首先要学习C语言 , 这个是基础 。
【怎么用c语言写俄罗斯方块】然后如果必须用C的话 , 还要学习C语言的图形界面编程 。
网上资料做多 , 而且容易得到的就是Turbo C的 , 因为Turbo C可以写图形的程序 。
如果你不想限制在Turbo C , 想用其他编译器也可以编译的程序的话 , 你可以学习SDL 。SDL的教程里 , 也可以找到俄罗斯方块 。当然 , 你也可以学习OpenGL的俄罗斯方块 。你百度 SDL 俄罗斯方块或者 OpenGL 俄罗斯方块都很容易找到例程 。
总之 , 
第一 , 你必须先学好C语言;
然后 , 你要学习一种C语言的图形库;
最后 , 你要学习俄罗斯方块的程序设计方法 。
这样 , 你就可以编写一个自己的 , 有声有色的俄罗斯方块了 。
7.用c语言写俄罗斯方块要学哪些东西首先要学习C语言 , 这个是基础 。
然后如果必须用C的话 , 还要学习C语言的图形界面编程 。网上资料做多 , 而且容易得到的就是Turbo C的 , 因为Turbo C可以写图形的程序 。
如果你不想限制在Turbo C , 想用其他编译器也可以编译的程序的话 , 你可以学习SDL 。SDL的教程里 , 也可以找到俄罗斯方块 。
当然 , 你也可以学习OpenGL的俄罗斯方块 。你百度 SDL 俄罗斯方块或者 OpenGL 俄罗斯方块都很容易找到例程 。
总之 , 第一 , 你必须先学好C语言;然后 , 你要学习一种C语言的图形库;最后 , 你要学习俄罗斯方块的程序设计方法 。这样 , 你就可以编写一个自己的 , 有声有色的俄罗斯方块了 。
8.一个简单的c语言写的俄罗斯方块程序1、考虑怎么存储俄罗斯方块俄罗斯方块的形状一共有19种类型 , 如果拿数组来表示的话 , 可能会比较会浪费空间(网上有很多实现代码)考虑到每种方块形状的范围是4 *4的小方块 , 用 字模点阵的方式来存储 , 即设置一个4行4列的数组 , 元素置1即代表这个位置有小 方块 , 元素置0即代表这个位置无小方块 , 这个整个的4*4的数组组成俄罗斯方块的形状 。
1000 1000 1100 0000 上述4*4来表示L形状的方块 。4*4 =16 bit 正好为short类型 , 所以每一个方块可以用一个short类型的数据来表示 。
我们把俄罗斯方块点阵的数位存在rockArray中 , 我们可以事先把这19种方块的字模点阵自己转化成十六进制 , 然后在rockArray数组的初始化时赋值进去 。但是这种方式扩展性不好 , 每当有一种新方块时需要改动 ,  所以可以写一个配置文件来表示19种方块 。
(RockShape.ini)@###@###@@######1234从配置文件中读取方块的类型的代码在(Init.h的ReadRock函数中)在下面3中解释下代码如何实现2如何画出方块可以使用EasyX库来画出简单的图形 ,  EasyX库是在VC下实现TC的简单绘图功能的一个库 , 这个库很容易学会(直接 百度EasyX库 , 里面有详细的教程)那么如何画出方块 , 方块已经存储到一个short类型中了 从short中读取出 , 可以用一个掩码mask = 1来与short的每个bit位相与 , 结果为1 , 则画出一个小方块; 函数声明:void DisplayRock(int rockIdx, RockLocation_t* LocatePtr, bool displayed)1参数1:表示在数组中的下标 , 取出short类型的方块表示数据 参数2:表示当前坐标 , 即画出方块的左上角的坐标x,y 参数3:true表示画出该方块 , false 表示擦除该方块 。//方块在图形窗口中的位置(即定位4*4大块的左上角坐标) typedef struct LOCATE{ int left; int top;} RockLocation_t;1234563如何实现同一种类型方块的翻转 , 在按‘↑’时应该翻转同一种类型的方块 ,  比如下面的横杆和竖杆@###@###@###@###@@@@############****1234567891011可以假想成静态循环链表来实现这种方式 使同一种类型的方块循环起来 , 用一个struct结构来表示一种方块typedef struct ROCK{ //用来表示方块的形状(每一个字节是8位 , 用每4位表示方块中的一行)unsigned short rockShapeBits; int nextRockIndex; //下一个方块 , 在数组中的下标 } RockType;123456定义一个RockType类型的数组来存储19种方块 RockType RockArray[19] = { (0, 0) };当我们按“↑”时 , 把传入画方块函数DrawRock中的rockIndex变为当前方块结构体中的nextRockIndex即可 。