C
C 编俄罗斯方块:怎样用键盘控制上下翻转?
编俄罗斯方块:怎样用键盘控制上下翻转?
这个是没有专门的函数来控制俄罗斯方块的翻转的, 一般来讲,是通过如下的方式来实现俄罗斯方块的翻转: 首先,用3维数组来存放七种基本方块图形: 例如: int BOX[7][4][4]{ { {1,1,1,1}, // ----型 {0,0,0,0}, {0,0,0,0}, {0,0,0,0} }, { {1,1,1,0}, // ┌--型 {1,0,0,0}, {0,0,0,0}, {0,0,0,0} }, { {1,1,1,0}, // --┐型 {0,0,1,0}, {0,0,0,0}, {0,0,0,0} }, { {1,1,1,0}, // -┬-型 {0,1,0,0}, {0,0,0,0}, {0,0,0,0} }, { {1,1,0,0}, // -T_型 {0,1,1,0}, {0,0,0,0}, {0,0,0,0} }, { {0,1,1,0}, // _T-型 {1,1,0,0}, {0,0,0,0}, {0,0,0,0} }, { {1,1,0,0}, // 田型 {1,1,0,0}, {0,0,0,0}, {0,0,0,0} } } 如果希望实现用键盘控制翻转,需要做两件事情: 1.接收并响应键盘按键事件 2.在进行按键事件处理时,进行翻转 由于1比较简单,就不多说了。
对于2,其实有两种方法实现: 1.进行矩阵的转置处理(也就是右转90度),按一次键,转置一次 2.将19种变换图形也用3维数组来存放,通过数组元素的下标访问找到旋转后的形状 例如: L型: { {1,0,0,0}, // L型 {1,0,0,0}, {1,1,0,0}, {0,0,0,0} }, { {1,1,1,0}, // ┌--型 {1,0,0,0}, {0,0,0,0}, {0,0,0,0} }, { {1,1,0,0}, // ┐型 {0,1,0,0}, {0,1,0,0}, {0,0,0,0} }, { {0,0,1,0}, // --┘型 {1,1,1,0}, {0,0,0,0}, {0,0,0,0} }, 为了方便读取,减少程序中算法上的开销(比如进行4*4矩阵的转置), 我建议你采取将19种变换图形也用3维数组来存放的方式
俄罗斯方块目标和玩法?
1. 俄罗斯方块的游戏基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。
2. 游戏中使用键盘方向键←→控制移动,↑变形,↓加速下落,空格开始。
3. 由小方块组成的不同形状的板块陆续从屏幕上方落下来,玩家通过调整板块的位置和方向,使它们 在屏幕底部拼出完整的一条或几条。
4. 这些完整的横条会随即消失,给新落下来的板块腾出空间,与此同时,玩家得到分数奖励。
5. 没有被消除掉的方块不断堆积起来, 一旦堆到屏幕顶端,玩家便告输,游戏结束。