用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c++代码库

2016关于CCF竞赛题目的俄罗斯方块的题目代码(运行环境VS2010)

2016-04-15 作者: 小维天使001举报

[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;
}


网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...