⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blocks.cs

📁 这个程序是基于c#平台的俄罗斯方框游戏。拿来共享。要求加分哦!
💻 CS
字号:
using System;
using System.Drawing;

namespace AnotherBlock
{
	/// <summary>
	/// Summary description for Blocks.
	/// </summary>
	public class Blocks
	{
		private short width;
		private short height;
		private bool[,] shape;
		private short top;
		private short left;
		private BlockTypes blockType = BlockTypes.undefined;

		Image basicBlockImage = Image.FromFile("images/block.gif");

		private const int blockImageWidth = 10;
		private const int blockImageHeight = 10;

		public Blocks(BlockTypes blockType)
		{
			this.BlockType = blockType;
		}

		public Blocks()
		{
			Random randomGenerator = new Random();
			BlockTypes randomBlockType = (BlockTypes)(randomGenerator.Next(1, 8));

			this.BlockType = randomBlockType;
		}

		public short Top
		{
			get
			{
				return top;
			}

			set
			{
				if ((value > -1) && (value < 21))
				{
					top = value;
					if (top == 0)
					{
						top = 1;
					}
				}
				else
				{
					throw new ArgumentException("Property Top must be between 1 and 20.");
				}
			}
		}

		public short Left
		{
			get
			{
				return left;
			}

			set
			{
				if ((value > -1) && (value < 10))
				{
					left = value;
				}
				else
				{
					throw new ArgumentException("Property Left must be between 0 and 9.");
				}
			}
		}

		public short Width
		{
			get
			{
				return width;
			}

			set
			{
				if ((value > 0) && (value < 5))
				{
					width = value;
				}
				else
				{
					throw new ArgumentException("Propert Width must be between 1 and 4.");
				}
			}
		}

		public short Height
		{
			get
			{
				return height;
			}

			set
			{
				if ((value > 0) && (value < 5))
				{
					height = value;
				}
				else
				{
					throw new ArgumentException("Property Height must be between 1 and 4.");
				}
			}
		}

		public bool[,] Shape
		{
			get
			{
				return shape;
			}

			set
			{
				if (value.Length == width * height)
				{
					shape = value;
				}
				else
				{
					throw new InvalidOperationException("Specified index length does not match block dimensions.");
				}
			}
		}

		public BlockTypes BlockType
		{
			get
			{
				return blockType;
			}

			set
			{
				bool[,] shape;

				if (blockType == BlockTypes.undefined)
				{
					blockType = value;

					switch(blockType)
					{
						case BlockTypes.straight:
							this.Width = 1;
							this.Height = 4;
							this.Top = 0;
							this.Left = 5;
							shape = new bool[this.Width, this.Height];
							shape[0, 0] = true;
							shape[0, 1] = true;
							shape[0, 2] = true;
							shape[0, 3] = true;
							this.Shape = shape;
							break;

						case BlockTypes.rectangle:
							this.Width = 2;
							this.Height = 2;
							this.Top = 0;
							this.Left = 4;
							shape = new bool[this.Width, this.Height];
							shape[0, 0] = true;
							shape[0, 1] = true;
							shape[1, 0] = true;
							shape[1, 1] = true;
							this.Shape = shape;
							break;

						case BlockTypes.cornerleft:
							this.Width = 3;
							this.Height = 2;
							this.Top = 0;
							this.Left = 4;
							shape = new bool[this.Width, this.Height];
							shape[0, 0] = true;
							shape[1, 0] = true;
							shape[2, 0] = true;
							shape[0, 1] = true;
							shape[1, 1] = false;
							shape[2, 1] = false;
							this.Shape = shape;
							break;

						case BlockTypes.cornerright:
							this.Width = 3;
							this.Height = 2;
							this.Top = 0;
							this.Left = 4;
							shape = new bool[this.Width, this.Height];
							shape[0, 0] = true;
							shape[1, 0] = true;
							shape[2, 0] = true;
							shape[0, 1] = false;
							shape[1, 1] = false;
							shape[2, 1] = true;
							this.Shape = shape;
							break;

						case BlockTypes.cross:
							this.Width = 3;
							this.Height = 2;
							this.Top = 0;
							this.Left = 4;
							shape = new bool[this.Width, this.Height];
							shape[0, 0] = true;
							shape[1, 0] = true;
							shape[2, 0] = true;
							shape[0, 1] = false;
							shape[1, 1] = true;
							shape[2, 1] = false;
							this.Shape = shape;
							break;

						case BlockTypes.zigzag1:
							this.Width = 2;
							this.Height = 3;
							this.Top = 0;
							this.Left = 4;
							shape = new bool[this.Width, this.Height];
							shape[0, 0] = false;
							shape[1, 0] = true;
							shape[0, 1] = true;
							shape[1, 1] = true;
							shape[0, 2] = true;
							shape[1, 2] = false;
							this.Shape = shape;
							break;

						case BlockTypes.zigzag2:
							this.Width = 2;
							this.Height = 3;
							this.Top = 0;
							this.Left = 4;
							shape = new bool[this.Width, this.Height];
							shape[0, 0] = true;
							shape[1, 0] = false;
							shape[0, 1] = true;
							shape[1, 1] = true;
							shape[0, 2] = false;
							shape[1, 2] = true;
							this.Shape = shape;
							break;
					}
				}
				else
				{
					throw new InvalidOperationException("The property BlockType can't be changed once defined the first time.");
				}
			}
		}

		public void Draw(Graphics drawingSurface)
		{
			for(int i = 0; i < this.Width; i++)
			{
				for(int j = 0; j < this.Height; j++)
				{
					if (this.Shape[i, j] == true)
					{
						Rectangle rect = new Rectangle((this.Left + i) * blockImageWidth, (this.Top + j) * blockImageHeight, blockImageWidth, blockImageHeight);
						drawingSurface.DrawImage(basicBlockImage, rect);
					}
				}
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -