Graph3D LocalAxisX Y Z, MoveByLocal
Turtle - цвет pt4pabc.dll новая
This commit is contained in:
parent
c315db5245
commit
16b45eaa14
|
|
@ -5,7 +5,7 @@ using System.Runtime.CompilerServices;
|
|||
[assembly: AssemblyDelaySign(false)]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("PascalABC.NET Compiler")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2005-2022 by Ivan Bondarev, Stanislav Mihalkovich")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2005-2021 by Ivan Bondarev, Stanislav Mihalkovich")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: AssemblyVersion(RevisionClass.FullVersion)]
|
||||
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "8";
|
||||
public const string Build = "3";
|
||||
public const string Revision = "3181";
|
||||
public const string Revision = "3191";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%MINOR%=8
|
||||
%REVISION%=3181
|
||||
%REVISION%=3191
|
||||
%COREVERSION%=3
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -41,11 +41,15 @@
|
|||
<tr><td><code><b>function</b> Cartesian<T>(Self: <b>array</b> <b>of</b> T; n: integer): <b>sequence </b> <b>of</b> <b>array</b> <b>of</b> T;</code>
|
||||
<br> Âîçâðàùàåò n-òóþ äåêàðòîâó ñòåïåíü ìíîæåñòâà ýëåìåíòîâ, çàäàííîãî ìàññèâîì</td></tr>
|
||||
<tr><td><code><b>function</b> Cartesian<T>(Self: <b>sequence </b> <b>of</b> T; n: integer): <b>sequence </b> <b>of</b> <b>array</b> <b>of</b> T;</code>
|
||||
<br> Возвращает n-тую декартову степень множества элементов, заданного массивом</td></tr>
|
||||
<br> Âîçâðàùàåò n-òóþ äåêàðòîâó ñòåïåíü ìíîæåñòâà ýëåìåíòîâ, çàäàííîãî ïîñëåäîâàòåëüíîñòüþ</td></tr>
|
||||
<tr><td><code><b>function</b> Cartesian(Self: string; n: integer): <b>sequence </b> <b>of</b> string;</code>
|
||||
<br> Âîçâðàùàåò n-òóþ äåêàðòîâó ñòåïåíü ìíîæåñòâà ñèìâîëîâ, çàäàííîãî ñòðîêîé</td></tr>
|
||||
<tr><td><code><b>function</b> Combinations<T>(Self: <b>array</b> <b>of</b> T; m: integer): <b>sequence </b> <b>of</b> <b>array</b> <b>of</b> T;</code>
|
||||
<br> Âîçâðàùàåò âñå ñî÷åòàíèÿ ïî m ýëåìåíòîâ</td></tr>
|
||||
<tr><td><code><b>function</b> Combinations<T>(Self: <b>sequence </b> <b>of</b> T; m: integer): <b>sequence </b> <b>of</b> <b>array</b> <b>of</b> T;</code>
|
||||
<br> Âîçâðàùàåò âñå ñî÷åòàíèÿ ïî m ýëåìåíòîâ</td></tr>
|
||||
<tr><td><code><b>function</b> Combinations(Self: string; m: integer): <b>sequence </b> <b>of</b> string;</code>
|
||||
<br> Âîçâðàùàåò âñå ñî÷åòàíèÿ ïî m ýëåìåíòîâ</td></tr>
|
||||
<tr><td><code><b>function</b> ConvertAll<T, T1>(Self: <b>array</b> <b>of</b> T; converter: T->T1): <b>array</b> <b>of</b> T1;</code>
|
||||
<br> Ïðåîáðàçóåò ýëåìåíòû ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ</td></tr>
|
||||
<tr><td><code><b>function</b> ConvertAll<T, T1>(Self: <b>array</b> <b>of</b> T; converter: (T,integer)->T1): <b>array</b> <b>of</b> T1;</code>
|
||||
|
|
@ -122,6 +126,10 @@
|
|||
<br> Âîçâðàùàåò âñå ÷àñòè÷íûå ïåðåñòàíîâêè èç n ýëåìåíòîâ ïî m</td></tr>
|
||||
<tr><td><code><b>function</b> Permutations<T>(Self: <b>sequence </b> <b>of</b> T; m: integer): <b>sequence </b> <b>of</b> <b>array</b> <b>of</b> T;</code>
|
||||
<br> Âîçâðàùàåò âñå ÷àñòè÷íûå ïåðåñòàíîâêè èç n ýëåìåíòîâ ïî m</td></tr>
|
||||
<tr><td><code><b>function</b> Permutations(Self: string): <b>sequence </b> <b>of</b> string;</code>
|
||||
<br> Âîçâðàùàåò âñå ïåðåñòàíîâêè áóêâ â ñòðîêå â âèäå ïîñëåäîâàòåëüíîñòè ñòðîê</td></tr>
|
||||
<tr><td><code><b>function</b> Permutations(Self: string; m: integer): <b>sequence </b> <b>of</b> string;</code>
|
||||
<br> Âîçâðàùàåò âñå ÷àñòè÷íûå ïåðåñòàíîâêè áóêâ ñòðîêè ïî m ñèìâîëîâ â âèäå ïîñëåäîâàòåëüíîñòè ñòðîê</td></tr>
|
||||
<tr><td><code><b>function</b> RandomElement<T>(Self: <b>array</b> <b>of</b> T): T;</code>
|
||||
<br> Âîçâðàùàåò ñëó÷àéíûé ýëåìåíò ìàññèâà</td></tr>
|
||||
<tr><td><code><b>function</b> Shuffle<T>(Self: <b>array</b> <b>of</b> T): <b>array</b> <b>of</b> T;</code>
|
||||
|
|
|
|||
|
|
@ -31,9 +31,13 @@
|
|||
<br> Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, íà÷èíàþùèõñÿ ñ first è second, ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó</td></tr>
|
||||
<tr><td><code><b>function</b> ArrRandom(n: integer := 10; a: integer := 0; b: integer := 100): <b>array</b> <b>of</b> integer;</code>
|
||||
<br> Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè</td></tr>
|
||||
<tr><td><code><b>function</b> ArrRandomInteger(n: integer := 10; a: integer := 0; b: integer := 100): <b>array</b> <b>of</b> integer;</code>
|
||||
<tr><td><code><b>function</b> ArrRandomInteger(n: integer; a: integer; b: integer): <b>array</b> <b>of</b> integer;</code>
|
||||
<br> Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè</td></tr>
|
||||
<tr><td><code><b>function</b> ArrRandomReal(n: integer := 10; a: real := 0; b: real := 10): <b>array</b> <b>of</b> real;</code>
|
||||
<tr><td><code><b>function</b> ArrRandomInteger(n: integer := 10): <b>array</b> <b>of</b> integer;</code>
|
||||
<br> Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè</td></tr>
|
||||
<tr><td><code><b>function</b> ArrRandomReal(n: integer; a: real; b: real): <b>array</b> <b>of</b> real;</code>
|
||||
<br> Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè âåùåñòâåííûìè çíà÷åíèÿìè</td></tr>
|
||||
<tr><td><code><b>function</b> ArrRandomReal(n: integer := 10): <b>array</b> <b>of</b> real;</code>
|
||||
<br> Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè âåùåñòâåííûìè çíà÷åíèÿìè</td></tr>
|
||||
<tr><td><code><b>function</b> ReadArrInt64(n: integer): <b>array</b> <b>of</b> int64;</code>
|
||||
<br> Âîçâðàùàåò ìàññèâ èç n öåëûõ int64, ââåäåííûõ ñ êëàâèàòóðû</td></tr>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
//
|
||||
// This CSharp output file generated by Gardens Point LEX
|
||||
// Version: 1.1.3.301
|
||||
// Machine: DESKTOP-2BJCJ7I
|
||||
// DateTime: 11.09.2022 12:57:49
|
||||
// UserName: ibond
|
||||
// Machine: DESKTOP-G8V08V4
|
||||
// DateTime: 04.10.2022 20:11:12
|
||||
// UserName: ?????????
|
||||
// GPLEX input file <ABCPascal.lex>
|
||||
// GPLEX frame file <embedded resource>
|
||||
//
|
||||
|
|
|
|||
|
|
@ -3268,6 +3268,8 @@ expr_l1
|
|||
{ $$ = $1; }
|
||||
| new_question_expr
|
||||
{ $$ = $1; }
|
||||
// | var_stmt tkComma expr_l1
|
||||
// { $$ = $3; }
|
||||
;
|
||||
|
||||
expr_l1_for_question_expr
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
// (see accompanying GPPGcopyright.rtf)
|
||||
|
||||
// GPPG version 1.3.6
|
||||
// Machine: DESKTOP-2BJCJ7I
|
||||
// DateTime: 11.09.2022 12:57:50
|
||||
// UserName: ibond
|
||||
// Input file <ABCPascal.y>
|
||||
// Machine: DESKTOP-G8V08V4
|
||||
// DateTime: 04.10.2022 20:11:12
|
||||
// UserName: ?????????
|
||||
// Input file <D:\PABC_Git\Parsers\PascalABCParserNewSaushkin\ABCPascal.y>
|
||||
|
||||
// options: no-lines gplex
|
||||
|
||||
|
|
@ -60,7 +60,7 @@ public abstract class ScanBase : AbstractScanner<PascalABCSavParser.Union,LexLoc
|
|||
|
||||
public partial class GPPGParser: ShiftReduceParser<PascalABCSavParser.Union, LexLocation>
|
||||
{
|
||||
// Verbatim content from ABCPascal.y
|
||||
// Verbatim content from D:\PABC_Git\Parsers\PascalABCParserNewSaushkin\ABCPascal.y
|
||||
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> GPPGParser, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gppg
|
||||
public syntax_tree_node root; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
|
@ -72,7 +72,7 @@ public partial class GPPGParser: ShiftReduceParser<PascalABCSavParser.Union, Lex
|
|||
public ParserLambdaHelper lambdaHelper = new ParserLambdaHelper();
|
||||
|
||||
public GPPGParser(AbstractScanner<PascalABCSavParser.Union, LexLocation> scanner) : base(scanner) { }
|
||||
// End verbatim content from ABCPascal.y
|
||||
// End verbatim content from D:\PABC_Git\Parsers\PascalABCParserNewSaushkin\ABCPascal.y
|
||||
|
||||
#pragma warning disable 649
|
||||
private static Dictionary<int, string> aliasses;
|
||||
|
|
|
|||
|
|
@ -360,5 +360,6 @@ script=
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3.8.3.3181
|
||||
3.8.3.3191
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.8.3.3181'
|
||||
!define VERSION '3.8.3.3191'
|
||||
|
|
|
|||
|
|
@ -562,6 +562,50 @@ type
|
|||
end;
|
||||
/// Цвет 3D-объекта
|
||||
property Color: GColor read GetColor write SetColor; virtual;
|
||||
|
||||
/// Локальная ось X в глобальных координатах
|
||||
property LocalAxisX: Vector3D
|
||||
read Invoke&<Vector3D>(()->model.GetTransform.Transform(new Vector3D(1,0,0)));
|
||||
/// Локальная ось X в глобальных координатах
|
||||
property LocalAxisY: Vector3D
|
||||
read Invoke&<Vector3D>(()->model.GetTransform.Transform(new Vector3D(0,1,0)));
|
||||
/// Локальная ось X в глобальных координатах
|
||||
property LocalAxisZ: Vector3D
|
||||
read Invoke&<Vector3D>(()->model.GetTransform.Transform(new Vector3D(0,0,1)));
|
||||
|
||||
/// Перемещает 3D-объект к точке (x,y,z) в локальных координатах
|
||||
procedure MoveToLocal(x,y,z: real);
|
||||
begin
|
||||
var p := Invoke&<Point3D>(()->model.GetTransform.Transform(new Point3D(x,y,z)));
|
||||
MoveTo(p);
|
||||
end;
|
||||
/// Перемещает 3D-объект к точке p в локальных координатах
|
||||
procedure MoveToLocal(p: Point3D) := MoveToLocal(p.x,p.y,p.z);
|
||||
/// Перемещает 3D-объект на вектор (dx,dy,dz) в локальных координатах
|
||||
procedure MoveByLocal(dx,dy,dz: real);
|
||||
begin
|
||||
// x,y,z в локальных координатах всегда нули
|
||||
MoveToLocal(dx, dy, dz);
|
||||
end;
|
||||
/// Перемещает 3D-объект на вектор v в локальных координатах
|
||||
procedure MoveByLocal(v: Vector3D) := MoveByLocal(v.x,v.y,v.z);
|
||||
/// Возвращает анимацию перемещения объекта к точке (x, y, z) за seconds секунд в локальных координатах
|
||||
function AnimMoveToLocal(x, y, z: real; seconds: real := 1): AnimationBase;
|
||||
begin
|
||||
var p := Invoke&<Point3D>(()->model.GetTransform.Transform(new Point3D(x,y,z)));
|
||||
Result := AnimMoveTo(p);
|
||||
end;
|
||||
/// Возвращает анимацию перемещения объекта к точке p за seconds секунд в локальных координатах
|
||||
function AnimMoveToLocal(p: Point3D; seconds: real := 1): AnimationBase
|
||||
:= AnimMoveToLocal(p.x,p.y,p.z,seconds);
|
||||
/// Возвращает анимацию перемещения объекта на вектор (dx, dy, dz) за seconds секунд в локальных координатах
|
||||
function AnimMoveByLocal(dx, dy, dz: real; seconds: real := 1): AnimationBase;
|
||||
begin
|
||||
Result := AnimMoveToLocal(dx, dy, dz, seconds);
|
||||
end;
|
||||
/// Возвращает анимацию перемещения объекта на вектор v за seconds секунд в локальных координатах
|
||||
function AnimMoveByLocal(v: Vector3D; seconds: real := 1): AnimationBase
|
||||
:= AnimMoveByLocal(v.x,v.y,v.z,seconds);
|
||||
private
|
||||
procedure MoveToProp(p: Point3D) := MoveTo(p);
|
||||
|
||||
|
|
@ -3577,6 +3621,7 @@ begin
|
|||
a := typeof(PyramidTWireframe);
|
||||
a := typeof(SegmentsT);
|
||||
a := typeof(TorusT);
|
||||
a := a;
|
||||
end;
|
||||
var res: Object3D;
|
||||
Invoke(procedure -> begin
|
||||
|
|
|
|||
|
|
@ -26,7 +26,10 @@ namespace VisualPascalABC
|
|||
try
|
||||
{
|
||||
if (th != null)
|
||||
{
|
||||
th.Abort();
|
||||
th.Join(); // Это обязательно. По большому счету вообще Abort надо заменить на современное завершение потоков
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
|
|
|||
|
|
@ -26,7 +26,11 @@ namespace VisualPascalABC
|
|||
try
|
||||
{
|
||||
if (th != null)
|
||||
th.Abort();
|
||||
{
|
||||
IsDone = true;
|
||||
th.Abort(); // надо бы заменить на что то современное
|
||||
th.Join();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
|
@ -133,11 +137,15 @@ namespace VisualPascalABC
|
|||
}
|
||||
}
|
||||
|
||||
private volatile bool IsDone = false;
|
||||
|
||||
private void InternalParsing()
|
||||
{
|
||||
while (true)
|
||||
while (!IsDone)
|
||||
{
|
||||
ParseInThread();
|
||||
if (IsDone)
|
||||
break;
|
||||
System.Threading.Thread.Sleep(2000);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -562,6 +562,50 @@ type
|
|||
end;
|
||||
/// Цвет 3D-объекта
|
||||
property Color: GColor read GetColor write SetColor; virtual;
|
||||
|
||||
/// Локальная ось X в глобальных координатах
|
||||
property LocalAxisX: Vector3D
|
||||
read Invoke&<Vector3D>(()->model.GetTransform.Transform(new Vector3D(1,0,0)));
|
||||
/// Локальная ось X в глобальных координатах
|
||||
property LocalAxisY: Vector3D
|
||||
read Invoke&<Vector3D>(()->model.GetTransform.Transform(new Vector3D(0,1,0)));
|
||||
/// Локальная ось X в глобальных координатах
|
||||
property LocalAxisZ: Vector3D
|
||||
read Invoke&<Vector3D>(()->model.GetTransform.Transform(new Vector3D(0,0,1)));
|
||||
|
||||
/// Перемещает 3D-объект к точке (x,y,z) в локальных координатах
|
||||
procedure MoveToLocal(x,y,z: real);
|
||||
begin
|
||||
var p := Invoke&<Point3D>(()->model.GetTransform.Transform(new Point3D(x,y,z)));
|
||||
MoveTo(p);
|
||||
end;
|
||||
/// Перемещает 3D-объект к точке p в локальных координатах
|
||||
procedure MoveToLocal(p: Point3D) := MoveToLocal(p.x,p.y,p.z);
|
||||
/// Перемещает 3D-объект на вектор (dx,dy,dz) в локальных координатах
|
||||
procedure MoveByLocal(dx,dy,dz: real);
|
||||
begin
|
||||
// x,y,z в локальных координатах всегда нули
|
||||
MoveToLocal(dx, dy, dz);
|
||||
end;
|
||||
/// Перемещает 3D-объект на вектор v в локальных координатах
|
||||
procedure MoveByLocal(v: Vector3D) := MoveByLocal(v.x,v.y,v.z);
|
||||
/// Возвращает анимацию перемещения объекта к точке (x, y, z) за seconds секунд в локальных координатах
|
||||
function AnimMoveToLocal(x, y, z: real; seconds: real := 1): AnimationBase;
|
||||
begin
|
||||
var p := Invoke&<Point3D>(()->model.GetTransform.Transform(new Point3D(x,y,z)));
|
||||
Result := AnimMoveTo(p);
|
||||
end;
|
||||
/// Возвращает анимацию перемещения объекта к точке p за seconds секунд в локальных координатах
|
||||
function AnimMoveToLocal(p: Point3D; seconds: real := 1): AnimationBase
|
||||
:= AnimMoveToLocal(p.x,p.y,p.z,seconds);
|
||||
/// Возвращает анимацию перемещения объекта на вектор (dx, dy, dz) за seconds секунд в локальных координатах
|
||||
function AnimMoveByLocal(dx, dy, dz: real; seconds: real := 1): AnimationBase;
|
||||
begin
|
||||
Result := AnimMoveToLocal(dx, dy, dz, seconds);
|
||||
end;
|
||||
/// Возвращает анимацию перемещения объекта на вектор v за seconds секунд в локальных координатах
|
||||
function AnimMoveByLocal(v: Vector3D; seconds: real := 1): AnimationBase
|
||||
:= AnimMoveByLocal(v.x,v.y,v.z,seconds);
|
||||
private
|
||||
procedure MoveToProp(p: Point3D) := MoveTo(p);
|
||||
|
||||
|
|
@ -3577,6 +3621,7 @@ begin
|
|||
a := typeof(PyramidTWireframe);
|
||||
a := typeof(SegmentsT);
|
||||
a := typeof(TorusT);
|
||||
a := a;
|
||||
end;
|
||||
var res: Object3D;
|
||||
Invoke(procedure -> begin
|
||||
|
|
|
|||
|
|
@ -703,7 +703,7 @@ begin
|
|||
InputList.Add(Result[i]);
|
||||
end;
|
||||
|
||||
/// Возвращает массив из n целых, введенных с клавиатуры
|
||||
{/// Возвращает массив из n целых, введенных с клавиатуры
|
||||
function ReadArrInteger(n: integer): array of integer;
|
||||
begin
|
||||
Result := PABCSystem.ReadArrInteger(n); // и всё!!! Данные в InputList уже внесены!
|
||||
|
|
@ -731,12 +731,15 @@ end;
|
|||
function ReadMatrReal(m, n: integer): array [,] of real;
|
||||
begin
|
||||
Result := PABCSystem.ReadMatrReal(m,n);
|
||||
end;
|
||||
end;}
|
||||
|
||||
/// Возвращает двумерный массив размера m x n, заполненный случайными целыми значениями
|
||||
function MatrRandomInteger(m: integer; n: integer; a: integer; b: integer): array [,] of integer;
|
||||
begin
|
||||
Result := PABCSystem.MatrRandomInteger(m,n,a,b);
|
||||
if IsPT then exit;
|
||||
foreach var x in Result.ElementsByRow do
|
||||
InputList.Add(x);
|
||||
end;
|
||||
|
||||
/// Возвращает двумерный массив размера m x n, заполненный случайными целыми значениями
|
||||
|
|
@ -763,7 +766,7 @@ begin
|
|||
InputList.Add(x);
|
||||
end;
|
||||
|
||||
function ReadString: string;
|
||||
{function ReadString: string;
|
||||
begin
|
||||
Result := PABCSystem.ReadString;
|
||||
if IsPT then exit;
|
||||
|
|
@ -775,7 +778,7 @@ function ReadlnString := ReadString;
|
|||
|
||||
function ReadString2 := (ReadString, ReadString);
|
||||
|
||||
function ReadlnString2 := ReadString2;
|
||||
function ReadlnString2 := ReadString2;}
|
||||
|
||||
function ReadInteger(prompt: string): integer;
|
||||
begin
|
||||
|
|
@ -859,6 +862,7 @@ type
|
|||
function ReadLine: string; override;
|
||||
begin
|
||||
Result := inherited ReadLine;
|
||||
InputList.Add(Result);
|
||||
DoNewLineBeforeMessage := False;
|
||||
end;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ unit Turtle;
|
|||
|
||||
uses GraphWPF;
|
||||
|
||||
type Colors = GraphWPF.Colors;
|
||||
|
||||
var
|
||||
tp: Point;
|
||||
a: real := 0;
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Loading…
Reference in a new issue