1568俄罗斯方块

原创 2013年12月01日 20:15:30

题目描述

这个游戏大家太熟悉了,应该没有人没玩过吧,相当有创意的一个小游戏,成为了人们心中的经典。

玩这个游戏时,我们最关注的是下面已经垒起的部分,正在下降的图形,以及下一个要出现的图形,目标是想方设法将一行或几行填满,从而可以消掉,避免垒的太高而导致游戏结束。

今天我们想要处理的问题要简单一些:我们用数组表示下面已经垒起来的部分,1表示有小方块,0表示该位置是空的。问题是,我们所面临的可能是消掉之前的状态,就是说可能某些行已经满了,但是还没有消掉。我们需要做的是把那些满了的行消掉,同时让上面的行落下来(注意不是某个单独的小方块落下来,而是上面的整行会因为下面的行被消掉而下落),最终得到稳定后的状态(稳定的状态即不存在还能消掉的行的状态,见样例)。
 

 

 

 

输入

    输入的第一行是两个正整数rc (3 < r,c < 20),分别表示存放已经垒起小方块的矩阵的行数和列数。然后是r行数据,每行c01,中间没有空格.

输出

    根据题目要求输出消掉满行后得到的稳定状态,还是一个r*c0-1矩阵,若没有可以消的行则原样输出。

示例输入

6 6
000000
001100
111111
101010
111111
101011

示例输出

000000
000000
000000
001100
101010
101011

  1. #include<stdio.h>  
  2. struct sdut  
  3. {  
  4.     char s[22];  
  5. }hang[21];  
  6. int main()  
  7. {  
  8.     int m, n, i, j, x, a[21], b = 0;  
  9.     scanf("%d%d", &m, &n);  
  10.     for(i = 0; i <= m - 1; i++)  
  11.     {  
  12.         scanf("%s", &hang[i].s);  
  13.     }  
  14.     for(i = 0; i <= m - 1; i++)  
  15.     {  
  16.         x = 0;  
  17.         for(j = 0; j <= n - 1; j++)  
  18.         {  
  19.             if(hang[i].s[j] == '1')  
  20.                 x++;  
  21.         }  
  22.         if(x != n)  
  23.         {  
  24.             a[i] = 0;  
  25.         }  
  26.         else  
  27.         {  
  28.             a[i] = 1;  
  29.             b++;  
  30.         }  
  31.     }  
  32.     for(i = 0; i <= b - 1; i++)  
  33.     {  
  34.         for(j = 0; j <= n - 1; j++)  
  35.         {  
  36.             if(j == n - 1)  
  37.                 printf("0\n");  
  38.             else  
  39.                 printf("0");  
  40.         }  
  41.     }  
  42.     for(i = 0; i <= m - 1; i++)  
  43.     {  
  44.         if(a[i] == 0)  
  45.             puts(hang[i].s);  
  46.     }  
  47.     return 0;  
  48. }  
版权声明:本文为博主原创文章,未经博主允许不得转载。

1568俄罗斯方块

题目描述 这个游戏大家太熟悉了,应该没有人没玩过吧,相当有创意的一个小游戏,成为了人们心中的经典。 玩这个游戏时,我们最关注的是下面已经垒起的部分,正在下降的图形,以及下一个要出现的图...
  • u013087645
  • u013087645
  • 2013年12月21日 00:21
  • 498

1568 俄罗斯方块

题目描述 这个游戏大家太熟悉了,应该没有人没玩过吧,相当有创意的一个小游戏,成为了人们心中的经典。 玩这个游戏时,我们最关注的是下面已经垒起的部分,正在下降的图形,以及下一个要出现的图...
  • u012943138
  • u012943138
  • 2013年12月01日 20:33
  • 628

SDUTOJ 1568 俄罗斯方块

俄罗斯方块 Time Limit: 1000MS Memory limit: 32768K 题目描述 这个游戏大家太熟悉了,应该没有人没玩过吧,相当有创意的一个小游戏,成为了...
  • kingkap
  • kingkap
  • 2013年01月28日 19:28
  • 284

新手向!超详细!Java俄罗斯方块程序面向对象编程全记录

零、写在开始之前 新人,Java学习中,文章中遗漏错误之处,欢迎斧正 个人博客,完全原创 转载请注明出处。 项目全代码地址:GitHub 一、从面向对象的开始,将对象抽象成类面对...
  • sinat_32660629
  • sinat_32660629
  • 2016年10月22日 13:43
  • 17933

shell脚本实现俄罗斯方块

draw  是画出图形界面   keytest是获取键盘  tetris是整个游戏 tetris.sh #!/bin/bash APP_NAME="${0##*[\\/]}" APP_VERSION...
  • u013467442
  • u013467442
  • 2015年05月14日 22:27
  • 2154

Microsoft visual Studio 2015 下的俄罗斯方块源程序以及修改过程

项目名称:贪吃蛇 项目语言:C++ 项目软件: Microsoft visual Studio 2015  错误1. 错误提要:错误使用标识符 错误定位: clrscr()  错误提示: 未定义标识符...
  • spiderxy
  • spiderxy
  • 2017年05月22日 16:54
  • 369

VC++ 6.0 C语言实现俄罗斯方块教程

今天把我之前写的大作业分享一下吧,并教你们如何实现,希望你们看了前面的教程也能自己写一个。 1.要先下载一个 graphics.h 的头文件来绘图。 2.初始化窗口:initgraph(x...
  • jinxinliu1
  • jinxinliu1
  • 2016年10月26日 21:27
  • 2220

cocos2d-x俄罗斯方块--基于简单工厂的程序重构

1 前言 前些天看了一个Cocos2D写的俄罗斯方块代码(下载网址为:http://www.okbase.net/file/item/27944),代码逻辑很清晰。 2 讨论 俄罗斯方块游戏逻辑...
  • XIANG__jiangsu
  • XIANG__jiangsu
  • 2015年11月26日 21:32
  • 1570

C语言图形编程--俄罗斯方块制作(二)源代码

所有源代码文件,此为本人2年前所作,设计上还有些缺陷。希望大家不吝指正。 /************************ (C) COPYRIGHT 2013 yang_yulei *******...
  • yang_yulei
  • yang_yulei
  • 2013年12月29日 22:39
  • 32571

C#实现俄罗斯方块

C#实现俄罗斯方块
  • Qian_F
  • Qian_F
  • 2014年02月23日 19:24
  • 10332
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1568俄罗斯方块
举报原因:
原因补充:

(最多只允许输入30个字)