根据提供的文件信息,我们可以分析并总结出以下几个关键的知识点: ### 1. 方块类的实现 #### 1.1 类的基本结构 这段代码主要涉及一个名为`Brick`的类,该类用来表示游戏中的方块。此类的实现包含了几个重要的方法:`Paint`、`Erase`以及旋转操作等。 #### 1.2 方法详解 ##### 1.2.1 `Paint`方法 `Paint`方法用于绘制方块到画布上。具体实现包括: - 遍历`m_Points`集合中的每一个`Point`对象。 - 使用`lock`关键字确保线程安全。 - 调用`PointToRect`方法将`Point`对象转换为`Rectangle`对象。 - 使用`Graphics`对象的`FillRectangle`方法填充矩形区域,其中`m_Brush`是用于绘制的颜色刷子对象。 ```csharp public void Paint(Graphics gp) { foreach (Point p in m_Points) { lock (gp) { try { Rectangle r = PointToRect(p); gp.FillRectangle(m_Brush, r); } catch (Exception ex) { Console.WriteLine(ex); } } } } ``` ##### 1.2.2 `Erase`方法 `Erase`方法用于清除方块在画布上的显示。具体实现包括: - 创建一个与背景色相同的`SolidBrush`对象。 - 遍历`m_Points`集合中的每一个`Point`对象。 - 使用`lock`关键字确保线程安全。 - 使用`Graphics`对象的`FillRectangle`方法填充矩形区域,其中`sb`是用于清除的颜色刷子对象。 ```csharp public void Erase(Graphics gp) { using (SolidBrush sb = new SolidBrush(m_BgColor)) { foreach (Point p in m_Points) { lock (gp) { try { gp.FillRectangle(sb, PointToRect(p)); } catch (Exception ex) { Console.WriteLine(ex); } } } } } ``` ##### 1.2.3 `PointToRect`方法 `PointToRect`方法用于将点对象转换为矩形对象,以便在画布上进行绘制或清除。具体实现包括: - 计算矩形的左上角坐标、宽度和高度。 - 返回一个`Rectangle`对象。 ```csharp private Rectangle PointToRect(Point p) { Rectangle r = new Rectangle((mX + p.x) * mBlockSize + 1, (mY + p.y) * mBlockSize + 1, mBlockSize - 2, mBlockSize - 2); return r; } ``` #### 1.3 旋转操作 代码中还包括了旋转操作的方法: - `DeasilRotate`:顺时针旋转方块。 - `ContraRotate`:逆时针旋转方块。 ```csharp private void button1_Click(object sender, EventArgs e) { Brick.DeasilRotate(); pictureBox1.Refresh(); } private void button2_Click(object sender, EventArgs e) { Brick.ContraRotate(); pictureBox1.Refresh(); } ``` ### 2. 游戏界面控制 #### 2.1 初始化 `Form1`类的初始化过程中创建了一个`Brick`对象,并设置了其初始位置和颜色等属性。 ```csharp public Form1() { InitializeComponent(); Point[] points = new Point[] { new Point(0, -1), new Point(1, -1), new Point(0, 0), new Point(0, 1) }; Brick = new Brick(points, Color.Red, Color.Beige, 20); } ``` #### 2.2 控件响应事件 `Form1`类还定义了几个按钮点击事件,这些事件会触发方块的移动或旋转操作。 ```csharp private void button3_Click(object sender, EventArgs e) { Brick.Y++; pictureBox1.Refresh(); } private void button4_Click(object sender, EventArgs e) { Brick.X++; pictureBox1.Refresh(); } private void button5_Click(object sender, EventArgs e) { Brick.X--; pictureBox1.Refresh(); } ``` 通过以上分析可以看出,这段代码主要实现了一个简单的方块游戏,其中包含方块的绘制、清除和基本的移动旋转功能。
{
rectangle r = new Rectangle((m X + p.x) * m BlockSize + 1,
(m_Y + p.Y) * m_BlockSize + 1,
m_BlockSize - 2,
m_BlockSize - 2);
return r;
}
public void Paint(Graphics gp)
{
foreach {Point p in m_Points}
{
lock {gp}
{
try
{ PointToRect(p),
gp.FillRectangle{m_Brush, PointTorect(p)};
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
}
}
5.擦出画布上的方块
public void Erase(Graphics gp)
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 一款出色的 Vue3 管理框架.zip
- 单片机原理与接口技术 单片机汇编程序设计基础 含习题答案.docx
- 单片机原理与接口技术 单片机课后习题解答.docx
- 单片机原理与接口技术 单片机汇编语言程序设计_练习.pdf
- 单片机原理与接口技术 单片机课后习题解答.pdf
- 单片机原理与接口技术 单片机练习题答案.pdf
- 单片机原理与接口技术 单片机练习题答案.docx
- 单片机原理与接口技术 单片机原理及接口技术试题.pdf
- 单片机原理与接口技术 单片机习题集及答案.docx
- 单片机原理与接口技术 汇编语言单片机考试试题和答案.docx
- 单片机原理与接口技术 适配-单片机原理与接口技术习题答案.docx
- 单片机原理与接口技术 中北大学C51单片机习题及答案.docx
- 单片机原理与接口技术 汇编语言单片机考试试题和答案.pdf
- 单片机原理与接口技术 中北大学C51单片机习题及答案.pdf
- 单片机原理与接口技术 单片机答案汇编.docx
- 单片机原理与接口技术 MCS-51单片机复习题总复习.docx