问题:
让电脑自动下俄罗斯方块游戏。
解法:
对当前的积木块,枚举它旋转后的每一个形状从每一列落下的棋盘,将该棋盘和前一个棋盘进行对比,并打分,最后取得分最高的那个形状和那一列作为电脑的当前操作。(由于程序的输入数据比较多,我将其和代码打包放在资源下载中,需要的读者可以去下载http://download.csdn.net/detail/linyunzju/4389102,鉴于有读者不会用这个程序,在此说明下,运行这个程序需要加上文件重定向<1_17.txt,或者把程序中的控制台输入scanf改成文件输入FILE* fin=fopen("1_17.txt"); fscanf(fin,"%d",...);)
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <ctime>
using namespace std;
// 积木块的信息
#define BLOCK_SIZE 7
#define ROTATE_SIZE 4
#define SIDE_LEN 4
const int BLOCK_AREA = SIDE_LEN*SIDE_LEN;
// 棋盘的信息
#define HORIZ_LEN 12
#define VERT_LEN 15
const int CHESS_AREA = HORIZ_LEN*VERT_LEN;
// 其它信息
#define TOP_STEP 25
#define inf 10000
// 计分信息
const int clearLineScore[] = {0, 1, 3, 7, 13};
struct Block // 积木块
{
void init