丹特丽安的书架

努力变得优秀的程序

七巧板Plus 铜牌收录

游戏介绍

鼠标左键拖动图形移动,松开时自动吸附,按下 ctrl 键的同时拖动则不进行吸附,右键单击图形顺时针旋转 45°,ESC 结束游戏。

新增内容

  1. 增加了点吸附效果,拖动图形松开后,触发边吸附的同时也会触发点吸附。

  2. 拖动图形的同时,若按下 ctrl 键,则不会进行吸附。

不定期更新,力求完善。。。

程序说明

简要介绍程序中的一些点。

属性

使用模板类和 lambda 表达式实现了属性,用于对外暴露字段,详见 C# 属性。

使用属性可以简化程序,减少繁琐的 get 函数和 set 函数,提高了程序的可读性。

因为是自行封装的属性,所以存在很大的缺陷,很大程度上增加了类的大小(因为把函数成员变成了数据成员),属性的重写以及访问控制的不完善等。

对象管理机制

使用 Tangram 类来管理程序中所有的图形。

每一个图形对象在被创建之初就被加入到 Tangram 中,由该类来统一管理。每一个图形类仅提供一些属性来供用户合法地修改一些数据。

重载所有图形类公共基类 Base 类的 new 运算符,可以得知该对象位于栈中还是堆中,便于 Tangram 处理这些对象的析构。

对线段的数学描述

使用四个参数来描述一条线段,利于距离计算。

斜率:线段所在直线的斜率,描述直线的倾斜程度。

原点距离:坐标原点到线段所在直线的距离矢量。绝对值为距离,符号代表方向,配合斜率可用于描述一条直线。

端点距离:过坐标原点引一条垂直于该线段所在直线的直线,垂足到线段的两个端点的距离矢量称为该线段的端点距离。

程序源码

【点击下载】

评论 (2) -

添加评论