[闲聊] 陨石术

楼主: laechan (挥泪斩马云)   2023-08-08 19:47:55
假设 pic = 陨石, 在 m x n 的大小内, 我希望乱数塞三颗
陨石。
mixed pics=explode(read_file(__DIR__+"meteor"),"\n");
mixed pos=({});
mixed canvas=({});
int a,b,i,j,m=40,n=23,ps,p;
string pic;
ps=sizeof(pics);
for(i=0;i<n;i++)
{
canvas+=({({})});
for(j=0;j<m*2;j=j+2)
canvas[i]+=({" "});
}
// 起始位置
a=random(m);
b=random(n);
p=0;
for(i=b;i<b+ps;i++)
{
if(i>=n) break;
for(j=a*2;j<a*2+strlen(pics[p]);j=j+2)
{
if(j>=m*2) break;
canvas[i][j]=pics[p][(j-a*2)/2];
}
p++;
if(p>=ps) break;
}
pic="";
for(i=0;i<n;i++)
for(j=0;j<m;j++)
pic+=canvas[i][j];
write(pic);

Links booklink

Contact Us: admin [ a t ] ucptt.com