створення порожньої картинки
for (int i=0; i lt; X; i ++)
{(int j=0; j lt; Y; j ++)
{(pole [i] [j])
{temp=new Block (i * 15, j * 15);=(Bitmap) temp.Draw ((Image) btm);// заповнення її блоками
}
}
} btm;
} void Gracia (ref int point, int n)//видалення повної лінії
{ok=true; bonus=0; (int i=0; ok amp; amp; (i lt; X); i ++)
{= ok amp; amp; pole [i] [Y-n];
}
if (ok)//якщо лінія полная- зміщення у масиві
{(int i=0; i lt; X; i ++)
{(int j=Y-n; j gt; 0; j--)
{pole [i] [j]=pole [i] [j - 1]; }
}=1000;
}=point + bonus;// нарахування очок
}
}
}
Модуль Block.cs //блок-родительSystem;System.Collections.Generic;System.Data;System.Drawing;System.Linq;System.Text;Вторая
{Block
{
public const int l=15;// довжина квадратика на зображенні
protected Point Koor;// лівий верхній кут Point [] smes;// масив зміщень квадратів від Koor
protected bool stop=false;// припинення руху фігури
public Point K () {return Koor;}//доступ до координати
public Block ()//конструктор
{= new Point (0, 0);=new Point [1]; [0]=new Point (0,0);=false;
} Block (int x, int y)//конструктор з координатами
{= new Point (x, y);=new Point [1]; [0]=new Point (0, 0);=false;
} Image Draw (Image Img)//малювання
{btm=new Bitmap (Img);// 300-375 (int i=0; i lt; smes.Length; i ++)
{[] temp=new Point [4]; [0]=new Point (Koor.X + smes [i] .X * l, Koor.Y + smes [i] .Y * l); [1]=new Point (Koor.X + smes [i] .X * l + l, Koor.Y + smes [i] .Y * l); [2]=new Point (Koor.X + smes [i] .X * l + l, Koor.Y + l + smes [i] .Y * l); [3]=new Point (Koor.X + smes [i] .X * l, Koor.Y + l + smes [i] .Y * l); g=Graphics.FromImage (btm) ;. FillPolygon (Brushes.Gray, temp) ;. DrawPolygon (new Pen (Color.Black), temp);
} btm;
} Image Del (Image Img)//стирання
{btm=new Bitmap (Img); (int i=0; i lt; smes.Length; i ++)
{[] temp=new Point [4]; [0]=new Point (Koor.X + smes [i] .X * l, Koor.Y + smes [i] .Y * l); [1]=new Point (Koor.X + smes [i] .X * l + l, Koor.Y + smes [i] .Y * l); [2]=new Point (Koor.X + smes [i] .X * l + l, Koor.Y + l + smes [i] .Y * l); [3]=new Point (Koor.X + smes [i] .X * l, Koor.Y + l + smes [i] .Y * l); g=Graphics.FromImage (btm) ;. FillPolygon (Brushes.White, temp) ;. DrawPolygon (new Pen (Color.White), temp);
} btm;
} void shag (Pole p)//переміщення на 1 крок вниз
{ok=true; (int i=0; i lt; smes.Length; i ++)
{= ok amp; amp; (! p.Zanyato (Koor.X/15 + smes [i] .X, Koor.Y/15 + 1 + smes [i] .Y, l) );
}
if (ok)//якщо можна, то чому б і ні?
{Koor.Y=Koor.Y + l; }
else stop=true;
} void left (Pole p)//переміщення блоку на 1 крок вліво
{ok=true; (Koor.X!=0)
{(int i=0; i lt; smes.Length; i ++)
{= ok amp; amp; (! p.Zanyato (Koor.X/15 + smes [i] .X - 1, Koor.Y/15 + smes [i] .Y, l));
} (ok) Koor.X=Koor.X - l;
}
} void right (Pole p)//переміщення на 1 крок вправо
{ok=true; (smes.Length gt; 3)
{((Koor.X + l * smes [3] .X) lt;=270)
{(int i=0; i lt; smes.Length; i ++)
{= ok amp; amp; (! p.Zanyato (Koor.X/15 + smes [i] .X + 1, Koor.Y/15 + smes [i] .Y, l));
} (ok) Koor.X=Koor.X + l;
}
}
{(Koor.X lt;=270) Koor.X=Koor.X + l;
}
} virtual bool Is_V (int len) {return ((! stop) amp; amp; (Koor.Y - l lt; len)); } virtual void povorot () {}
}
}
Модулі класів-нащадків:
Модуль Kub.cs //кубикSystem;System.Collections.Generic;System.Data;System.Drawing;System.Linq;System.Text;Вторая