|

20精币
写了一个模拟雷达的小东西,但是使用画板卡顿严重,换成了动画框,好了一点,但不多,50毫秒下也是卡顿严重,10个目标都卡顿严重了,我还想搞一个1000个目标10毫秒不卡顿的。 窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_启动窗口 | | | | 变量名 | 类 型 | 数组 | 备 注 | 当前角度 | 整数型 | | 敌人列表 | 敌人信息 | 0 | 上次扫描方向 | 整数型 | | 颜色表 | 整数型 | 0 | |
敌人信息 | | |
角度 | 整数型 | | | 半径 | 整数型 | | | 颜色 | 整数型 | | | 轨迹点 | 轨迹点信息 | | 2 | _启动窗口.宽度 = 700 _启动窗口.高度 = 600 动画框1.宽度 = 600 动画框1.高度 = 600 初始化颜色表 ()绘制雷达背景图 ()初始化敌人 ()颜色表 = { #红色, #绿色, #蓝色, #黄色, #紫色, #青绿, #粉红 }动画框1. 清除背景 (, , , )动画框1.画笔颜色 = #白色 动画框1.画笔粗细 = 2 动画框1.刷子颜色 = #浅灰 绘制扇形 (0, 500, 600, 600, 315, 405 )绘制角度刻度线 ()重定义数组 (敌人列表, 假, 3 ) 计次循环首 (3, i ) 敌人列表 [i ].角度 = 取随机数 (-45, 45 ) 敌人列表 [i ].半径 = 取随机数 (50, 300 ) 敌人列表 [i ].颜色 = 颜色表 [i % 取数组成员数 (颜色表 ) + 1 ] 重定义数组 (敌人列表 [i ].轨迹点, 假, 0 ) 计次循环尾 ()|
绘制扇形 | | | |
左边 | 整数型 | | | | 顶边 | 整数型 | | | | 右边 | 整数型 | | | | 底边 | 整数型 | | | | 起始角度 | 整数型 | | | | 终止角度 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 圆心X | 整数型 | | | 圆心Y | 整数型 | | | 半径 | 整数型 | | | 点数组 | 整数型 | | 2 | 点索引 | 整数型 | | |
圆心X = (左边 + 右边 ) ÷ 2 圆心Y = (顶边 + 底边 ) ÷ 2 半径 = (右边 - 左边 ) ÷ 2 点索引 = 1 重定义数组 (点数组, 假, (终止角度 - 起始角度 + 2 ) × 2 )点数组 [点索引 ] = 圆心X 点索引 = 点索引 + 1 点数组 [点索引 ] = 圆心Y 点索引 = 点索引 + 1 计次循环首 (终止角度 - 起始角度 + 1, 当前角度 ) 当前角度 = 当前角度 + 起始角度 - 1  点数组 [点索引 ] = 圆心X + 半径 × 求正弦 (当前角度 × 3.14159 ÷ 180 ) 点索引 = 点索引 + 1  点数组 [点索引 ] = 圆心Y - 半径 × 求余弦 (当前角度 × 3.14159 ÷ 180 ) 点索引 = 点索引 + 1 计次循环尾 ()动画框1. 画多边形 (点数组, )变量名 | 类 型 | 静态 | 数组 | 备 注 | 角度 | 整数型 | | | 圆心X | 整数型 | | | 圆心Y | 整数型 | | | 半径 | 整数型 | | | 起点X | 整数型 | | | 起点Y | 整数型 | | | 终点X | 整数型 | | | 终点Y | 整数型 | | | 角度文本坐标X | 整数型 | | | 角度文本坐标Y | 整数型 | | | 角度文本半径 | 整数型 | | |
圆心X = 300 圆心Y = 550 半径 = 300 角度文本半径 = 400 计次循环首 (90, 角度 ) 当前角度 = 315 + 角度  起点X = 圆心X + 半径 × 0.9 × 求正弦 (当前角度 × 3.14159 ÷ 180 ) 起点Y = 圆心Y - 半径 × 0.9 × 求余弦 (当前角度 × 3.14159 ÷ 180 ) 角度文本坐标X = 圆心X + 角度文本半径 × 0.9 × 求正弦 (当前角度 × 3.14159 ÷ 180 ) 角度文本坐标Y = 圆心Y - 角度文本半径 × 0.9 × 求余弦 (当前角度 × 3.14159 ÷ 180 ) 终点X = 圆心X + 半径 × 求正弦 (当前角度 × 3.14159 ÷ 180 ) 终点Y = 圆心Y - 半径 × 求余弦 (当前角度 × 3.14159 ÷ 180 ) 动画框1. 画直线 (起点X, 起点Y, 终点X, 终点Y ) 如果真 (角度 % 4 = 1 )  动画框1.文本颜色 = #蓝灰   如果真 (角度 - 45 < 0 )   动画框1. 定位写出 (角度文本坐标X, 角度文本坐标Y, 到文本 (角度 - 45 ) + “°”)  如果真 (角度 > 45 )   动画框1. 定位写出 (角度文本坐标X, 角度文本坐标Y, “+” + 到文本 (角度 - 45 ) + “°”)     计次循环尾 ()变量名 | 类 型 | 静态 | 数组 | 备 注 | 圆心X | 整数型 | | | 圆心Y | 整数型 | | | 半径 | 整数型 | | | 终点X | 整数型 | | | 终点Y | 整数型 | | | 扫描角度 | 整数型 | | | 扫描方向 | 整数型 | | | i | 整数型 | | | 新轨迹点 | 轨迹点信息 | | |
如果真 (扫描方向 = 0 ) 扫描方向 = 1  动画框1. 清除背景 (, , , )绘制雷达背景图 ()动画框1.画笔颜色 = #红色 动画框1.画笔粗细 = 2 圆心X = 300 圆心Y = 550 半径 = 300 扫描角度 = 扫描角度 + 扫描方向 计次循环首 (取数组成员数 (敌人列表 ), i ) 如果真 (敌人列表 [i ].角度 + 45 = 扫描角度 )   新轨迹点.角度 = 敌人列表 [i ].角度   新轨迹点.半径 = 敌人列表 [i ].半径  加入成员 (敌人列表 [i ].轨迹点, 新轨迹点 )   如果真 (取数组成员数 (敌人列表 [i ].轨迹点 ) > 4 )  删除成员 (敌人列表 [i ].轨迹点, 1, 1 )
  敌人列表 [i ].角度 = 取随机数 (-45, 45 )  敌人列表 [i ].半径 = 取随机数 (50, 300 )  计次循环尾 () 如果 (扫描角度 > 90 ) 扫描角度 = 90  扫描方向 = -1  如果 (扫描角度 < 0 )  扫描角度 = 0   扫描方向 = 1        当前角度 = 315 + 扫描角度 透明标签1.标题 = “当前角度:” + 到文本 (扫描角度 - 45 ) + “°” 终点X = 圆心X + 半径 × 求正弦 (当前角度 × 3.14159 ÷ 180 )终点Y = 圆心Y - 半径 × 求余弦 (当前角度 × 3.14159 ÷ 180 )动画框1. 画直线 (圆心X, 圆心Y, 终点X, 终点Y )绘制敌人 ()变量名 | 类 型 | 静态 | 数组 | 备 注 | i | 整数型 | | | j | 整数型 | | | 圆心X | 整数型 | | | 圆心Y | 整数型 | | | 原角度 | 整数型 | | | x1 | 整数型 | | | y1 | 整数型 | | | x2 | 整数型 | | | y2 | 整数型 | | | 当前轨迹点 | 轨迹点信息 | | |
圆心X = 300 圆心Y = 550 计次循环首 (取数组成员数 (敌人列表 ), i )  如果真 (取数组成员数 (敌人列表 [i ].轨迹点 ) ≥ 2 )  动画框1.画笔颜色 = 敌人列表 [i ].颜色   动画框1.画笔粗细 = 1   计次循环首 (取数组成员数 (敌人列表 [i ].轨迹点 ) - 1, j )   当前轨迹点 = 敌人列表 [i ].轨迹点 [j ]   原角度 = 315 + 当前轨迹点.角度 + 45    x1 = 圆心X + 当前轨迹点.半径 × 求正弦 (原角度 × #pi ÷ 180 )   y1 = 圆心Y - 当前轨迹点.半径 × 求余弦 (原角度 × #pi ÷ 180 )   当前轨迹点 = 敌人列表 [i ].轨迹点 [j + 1 ]   原角度 = 315 + 当前轨迹点.角度 + 45    x2 = 圆心X + 当前轨迹点.半径 × 求正弦 (原角度 × #pi ÷ 180 )   y2 = 圆心Y - 当前轨迹点.半径 × 求余弦 (原角度 × #pi ÷ 180 )  画虚线 (x1, y1, x2, y2 )  计次循环尾 ()   计次循环首 (取数组成员数 (敌人列表 [i ].轨迹点 ), j )  当前轨迹点 = 敌人列表 [i ].轨迹点 [j ]  原角度 = 315 + 当前轨迹点.角度 + 45   x1 = 圆心X + 当前轨迹点.半径 × 求正弦 (原角度 × #pi ÷ 180 )  y1 = 圆心Y - 当前轨迹点.半径 × 求余弦 (原角度 × #pi ÷ 180 )  动画框1.刷子颜色 = 敌人列表 [i ].颜色   动画框1. 画椭圆 (x1 - 3, y1 - 3, x1 + 3, y1 + 3 ) 计次循环尾 ()  原角度 = 315 + 敌人列表 [i ].角度 + 45  x1 = 圆心X + 敌人列表 [i ].半径 × 求正弦 (原角度 × #pi ÷ 180 ) y1 = 圆心Y - 敌人列表 [i ].半径 × 求余弦 (原角度 × #pi ÷ 180 ) 动画框1.刷子颜色 = 敌人列表 [i ].颜色  动画框1. 画椭圆 (x1 - 5, y1 - 5, x1 + 5, y1 + 5 ) 计次循环尾 ()变量名 | 类 型 | 静态 | 数组 | 备 注 | 步长 | 整数型 | | | dx | 整数型 | | | dy | 整数型 | | | 总步数 | 整数型 | | | i | 整数型 | | |
dx = x2 - x1 dy = y2 - y1 总步数 = 求平方根 (dx × dx + dy × dy ) ÷ 10 如果真 (总步数 < 1 ) 总步数 = 1  计次循环首 (总步数, i ) 如果 (i % 2 = 1 )   动画框1. 画直线 (x1 + dx (i - 1 ) ÷ 总步数, y1 + dy (i - 1 ) ÷ 总步数, x1 + dx × i ÷ 总步数, y1 + dy × i ÷ 总步数 )      计次循环尾 () 计次循环首 (取数组成员数 (敌人列表 ), i ) 敌人列表 [i ].角度 = 取随机数 (-45, 45 ) 敌人列表 [i ].半径 = 取随机数 (50, 300 ) 计次循环尾 ()时钟1.时钟周期 = hk条1.位置 透明标签2.标题 = “扫描速度:” + 到文本 (hk条1.位置 ) + “ 毫秒”时钟1.时钟周期 = 0 hk条1.禁止 = 真 hk条1.禁止 = 假 时钟1.时钟周期 = hk条1.位置
|
-
最佳答案
查看完整内容
不是画板的问题 是你算法的问题没有源码所以跑步起来 不方便测试
[e=4].版本 2
.子程序 画虚线
.参数 x1, 整数型
.参数 y1, 整数型
.参数 x2, 整数型
.参数 y2, 整数型
.局部变量 步数, 整数型
.局部变量 计次, 整数型
步数 = 10 ' 控制虚线密度
置入代码 ({ 54, 139, 69, 8, 54, 43, 69, 16, 15, 175, 192, 54, 139, 93, 12, 54, 43, 93, 20, 15, 175, 219, 1, 216, 242, 15, 42, 192, 242, 15, 81, 192, ...
|