本帖最后由 wqstar028 于 2019-12-14 10:27 编辑
这一段时间在制作一个像素游戏,使用易语言的画板为基础,战斗方式为回合制,你砍我一刀,我捅你一剑的那种,其中的动画部分有人物跳起来攻击的,为了解决计算抛物线表达式y=ax2+bx+c的值,花了一个晚上研究出来了解三元一次方程的函数,后来索性优化了一下,目前理论以解N元一次方程,其中2<=N<正无穷大,不过,由于计算机堆栈及内存限制,N肯定是有上限的,具体是多少,我也不知道。现在我放出源码,有需要的可以自由发挥,尽情优化,发挥想像,将此函数充分利用起来。
窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_启动窗口 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 经过点 | 坐标型 | | 3 | 解集 | 双精度小数型 | | 0 | A | 双精度小数型 | | | B | 双精度小数型 | | | C | 双精度小数型 | | | X | 整数型 | | | Y | 整数型 | | |
经过点 [1 ].X = 12 经过点 [1 ].Y = 200 经过点 [2 ].X = 60 经过点 [2 ].Y = 100 经过点 [3 ].X = 330 经过点 [3 ].Y = 200 如果 (薛氏_解线性方程 (“144,12,1,200;3600,60,1,100;108900,330,1,200;”, 解集 )) A = 解集 [1 ]B = 解集 [2 ]C = 解集 [3 ]计次循环首 (画板1.宽度, X )Y = A × X × X + B × X + C 画板1. 画点 (X, Y, 取颜色值 (0, 0, 0 )) 延时 (10 )计次循环尾 ()信息框 (“抛物线绘制完毕。”, #信息图标 + #确认钮, “系统提示”, 取窗口句柄 ()) 信息框 (“此方程无解。”, #信息图标 + #确认钮, “系统提示”, 取窗口句柄 ()) |
薛氏_解线性方程 | 逻辑型 | | |
数值表达式 | 文本型 | | | | 解集 | 双精度小数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 行 | 文本型 | | 0 | 列 | 文本型 | | 0 | 值 | 双精度小数型 | | 0 | I | 整数型 | | | J | 整数型 | | | N | 整数型 | | | 过程1 | 双精度小数型 | | 0 | 过程2 | 双精度小数型 | | 0 | K | 整数型 | | | 文本1 | 文本型 | | | 文本2 | 文本型 | | | 文本3 | 文本型 | | |
行 = 分割文本 (数值表达式, “;”, )N = 取数组成员数 (行 ) 重定义数组 (值, 假, N, N + 1 )重定义数组 (过程1, 假, N + 1 )重定义数组 (过程2, 假, N + 1 )计次循环首 (取数组成员数 (行 ), I )列 = 分割文本 (行 [I ], “,”, )如果真 (取数组成员数 (列 ) ≠ N + 1 ) 返回 (假)计次循环首 (取数组成员数 (列 ), J )值 [I ] [J ] = 到数值 (列 [J ]) 计次循环尾 ()计次循环尾 () 计次循环首 (N - 1, I )变量循环首 (I + 1, N, 1, J )计次循环首 (取数组成员数 (过程1 ), K ) 过程1 [K ] = 值 [I ] [K ] × 值 [J ] [I ]过程2 [K ] = 值 [J ] [K ] × 值 [I ] [I ]计次循环尾 ()计次循环首 (取数组成员数 (过程1 ), K ) 值 [J ] [K ] = 过程1 [K ] - 过程2 [K ]计次循环尾 ()变量循环尾 ()计次循环尾 () 值 [N ] [N + 1 ] = 值 [N ] [N + 1 ] ÷ 值 [N ] [N ]值 [N ] [N ] = 1 变量循环首 (N, 2, -1, I )变量循环首 (I - 1, 1, -1, J )计次循环首 (取数组成员数 (过程1 ), K ) 过程1 [K ] = 值 [I ] [K ] × 值 [J ] [I ]过程2 [K ] = 值 [J ] [K ] × 值 [I ] [I ]计次循环尾 ()计次循环首 (取数组成员数 (过程1 ), K ) 值 [J ] [K ] = 过程1 [K ] - 过程2 [K ]计次循环尾 ()变量循环尾 ()变量循环尾 () 重定义数组 (解集, 假, N )计次循环首 (N, I )如果 (值 [I ] [I ] = 0 )返回 (假)解集 [I ] = 值 [I ] [N + 1 ] ÷ 值 [I ] [I ]计次循环尾 ()返回 (真)
|