此题是一个大模拟,作为pj的T4,思维和代码都有一点难度(dalao勿喷)。
很容易想到一种方法,将单个方块的图案存下来,然后找到画布中每个方块的对应坐标,copy即可
关键在于两点
- ** 摆放顺序 **
显而易见,我们应当从后往前,从下往上,从左往右进行摆放,这样可以处理好遮挡的问题,因为此题的观察视角是右上方(相对于积木而言),如果本题的观察视角改变,处理的顺序也需要改变。
- ** 坐标的计算 **
分析完处理顺序后,我们就需要计算画布中方块的对应坐标了。这里不需要找出方块的所有坐标,只需找出某一特殊点(如顶点)即可。怎么计算呢,当然是观察法找规律了。
我的代码中计算的是左下角的顶点。
附代码
#include<stdio.h>
#include<iostream>
using namespace std;
const char Stick[6][8]=
{
"..+---+",
"./ /|",
"+---+ |",
"| | +",
"| |/.",
"+---+.."
};//单个方块
int a[55][55];
char Paint[550][550];//画布
inline void Draw(int x,int y)//涂鸦函数
{
int i,j;
for(i=0;i<6;i++)
for(j=0;j<7;j++)