// 俄罗斯方块代码.cpp : 定义控制台应用程序的入口点。 |
// |
#include "stdafx.h" |
#include<iostream> |
#include<cstdlib> |
#include<ctime> |
#include<iomanip> |
using namespace std; |
const int n=15,m=10; |
struct point{ //用于记录模块中为1的点 |
int x; |
int y; |
}; |
//定义的全局变量 |
struct point mo[4]; |
int u[n][m],y[4][4],l=0; |
int maxR =-1; //图案最后一行 |
int finalR; |
//函数声明 |
void input(); |
void output(); |
void start(); |
//进入main()函数 |
int _tmain( int argc, _TCHAR* argv[]) |
{ |
//随机赋值,便于测试 |
srand ((unsigned long ) time (0)); |
for ( int i=7;i<n;i++){ |
for ( int j=0;j<m;j++){ |
u[i][j]= rand ()%2; |
} |
} |
// |
output(); |
input(); |
start(); |
output(); |
return 0; |
} |
//函数定义 |
void input(){ |
int t=0; |
maxR=-1; |
for ( int i=0;i<4;i++){ |
for ( int j=0;j<4;j++){ |
cin>>y[i][j]; |
if (y[i][j]==1){ |
mo[t].x = i; |
mo[t].y = j; |
//找到最后一行 |
if (maxR<i) |
maxR=i; |
++t; |
} |
} |
} |
//对齐列数 |
cin>>l; |
l--; |
for ( int i=0;i<4;i++){ |
mo[i].y+=l; |
} |
} |
void output(){ |
//打印界面 |
for ( int i=0;i<n;i++){ |
for ( int j=0;j<m;j++){ |
cout<<u[i][j]<< " " ; |
} |
cout<<endl; |
} |
} |
void start(){ |
//开始下落 |
finalR=maxR; |
int step; |
for ( int t=maxR;t<14;t++){ |
int flag=0; |
step = finalR-maxR; |
for ( int i=0;i<4;i++) |
//if(u[finalR+1][mo[i].y]==0) |
if (u[mo[i].x+step+1][mo[i].y]==0) |
flag++; |
if (flag==4) |
finalR++; |
else |
break ; |
} |
//下落完成 |
step = finalR-maxR; |
for ( int i=0;i<4;i++) |
u[mo[i].x+step][mo[i].y]=1; |
} |
初级程序员
by: 云代码会员 发表于:2016-09-24 11:09:38 顶(0) | 踩(0) 回复
不错
回复评论