[c++]代码库
// 俄罗斯方块代码.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) 回复
不错
回复评论