From 9e89da9b32d73e0086e750a5f0e5a05734eb6552 Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Fri, 3 Feb 2023 10:49:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=BC=D0=BE=D0=B4?= =?UTF-8?q?=D1=83=D0=BB=D1=8C=20TurtleWPF.pas=20=D0=94=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C?= =?UTF-8?q?=20=D0=9C=D0=BE=D0=B7=D0=B0=D0=B8=D0=BA=D0=B0ABC.pas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В NUnitABC в InitPABCSystem добавлена установка кодировки В Robot добавлено 5 задач на break --- Configuration/GlobalAssemblyInfo.cs | 2 +- Configuration/Version.defs | 4 +- Release/pabcversion.txt | 2 +- ReleaseGenerators/PascalABCNET_version.nsh | 2 +- ReleaseGenerators/RebuildStandartModules.pas | 2 +- ReleaseGenerators/sect_Core.nsh | 8 +- TestSuite/CompilationSamples/GraphWPF.pas | 3 + TestSuite/CompilationSamples/Robot.pas | 7 + TestSuite/CompilationSamples/RobotZadan.pas | 410 ++++++++------- TestSuite/CompilationSamples/WPFObjects.pas | 9 +- TestSuite/CompilationSamples/turtle.png | Bin 0 -> 29176 bytes VisualPascalABCNET/Workbench/UpdateService.cs | 2 +- .../Workbench/UpdateService.cs | 2 +- bin/Lib/GraphWPF.pas | 3 + bin/Lib/NUnitABC.pas | 1 + bin/Lib/Robot.pas | 7 + bin/Lib/RobotZadan.pas | 410 ++++++++------- bin/Lib/TurtleWPF.pas | 170 +++++++ bin/Lib/WPFObjects.pas | 9 +- bin/Lib/turtle.png | Bin 0 -> 29176 bytes bin/Lib/МозаикаABC.pas | 478 ++++++++++++++++++ 21 files changed, 1158 insertions(+), 373 deletions(-) create mode 100644 TestSuite/CompilationSamples/turtle.png create mode 100644 bin/Lib/TurtleWPF.pas create mode 100644 bin/Lib/turtle.png create mode 100644 bin/Lib/МозаикаABC.pas diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index f8382ee64..23e80953c 100644 --- a/Configuration/GlobalAssemblyInfo.cs +++ b/Configuration/GlobalAssemblyInfo.cs @@ -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 = "3226"; + public const string Revision = "3233"; public const string MainVersion = Major + "." + Minor; public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision; diff --git a/Configuration/Version.defs b/Configuration/Version.defs index 186615376..7b86a0824 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ -%COREVERSION%=3 -%REVISION%=3226 %MINOR%=8 +%REVISION%=3233 +%COREVERSION%=3 %MAJOR%=3 diff --git a/Release/pabcversion.txt b/Release/pabcversion.txt index 9ed6bc016..33663dced 100644 --- a/Release/pabcversion.txt +++ b/Release/pabcversion.txt @@ -1 +1 @@ -3.8.3.3226 +3.8.3.3233 diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index 8873aa854..91f1778e0 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.8.3.3226' +!define VERSION '3.8.3.3233' diff --git a/ReleaseGenerators/RebuildStandartModules.pas b/ReleaseGenerators/RebuildStandartModules.pas index e0269523f..c12c0e5df 100644 --- a/ReleaseGenerators/RebuildStandartModules.pas +++ b/ReleaseGenerators/RebuildStandartModules.pas @@ -6,7 +6,7 @@ GraphABCHelper, GraphWPFBase, Graph3D, - GraphWPF, Turtle, + GraphWPF, Turtle, TurtleWPF, WPFObjects, NumLibABC, IniFile, PointerTools, PointRect, PT4, PT4MakerNetX, Robot, RobotField, diff --git a/ReleaseGenerators/sect_Core.nsh b/ReleaseGenerators/sect_Core.nsh index f120c132d..d2623abdb 100644 --- a/ReleaseGenerators/sect_Core.nsh +++ b/ReleaseGenerators/sect_Core.nsh @@ -138,6 +138,7 @@ File ..\bin\Lib\School.pcu File ..\bin\Lib\SF.pcu File ..\bin\Lib\Turtle.pcu + File ..\bin\Lib\TurtleWPF.pcu File ..\bin\Lib\LightPT.pcu File ..\bin\Lib\Tasks.pcu File ..\bin\Lib\TwoPanelsWindow.pcu @@ -146,13 +147,14 @@ File ..\bin\Lib\XLSX.pcu File ..\bin\Lib\Мозаика.pcu - File ..\bin\Lib\PABCRtl.dll File ..\bin\Lib\HelixToolkit.Wpf.dll File ..\bin\Lib\HelixToolkit.dll File ..\bin\Lib\nunit.framework.dll File ..\bin\Lib\InteractiveDataDisplay.WPF.dll + File ..\bin\Lib\turtle.png + ${AddFile} "__RedirectIOMode.pcu" ${AddFile} "__RunMode.pcu" ${AddFile} "ABCButtons.pcu" @@ -217,6 +219,7 @@ ${AddFile} "School.pcu" ${AddFile} "SF.pcu" ${AddFile} "Turtle.pcu" + ${AddFile} "TurtleWPF.pcu" ${AddFile} "LightPT.pcu" ${AddFile} "Tasks.pcu" ${AddFile} "TwoPanelsWindow.pcu" @@ -225,6 +228,7 @@ ${AddFile} "XLSX.pcu" ${AddFile} "Мозаика.pcu" + ${AddFile} "turtle.png" ${AddFile} "PABCRtl.dll" ${AddFile} "HelixToolkit.Wpf.dll" @@ -314,6 +318,7 @@ File ..\bin\Lib\School.pas File ..\bin\Lib\SF.pas File ..\bin\Lib\Turtle.pas + File ..\bin\Lib\TurtleWPF.pas File ..\bin\Lib\LightPT.pas File ..\bin\Lib\Tasks.pas File ..\bin\Lib\TwoPanelsWindow.pas @@ -387,6 +392,7 @@ ${AddFile} "School.pas" ${AddFile} "SF.pas" ${AddFile} "Turtle.pas" + ${AddFile} "TurtleWPF.pas" ${AddFile} "LightPT.pas" ${AddFile} "Tasks.pas" ${AddFile} "TwoPanelsWindow.pas" diff --git a/TestSuite/CompilationSamples/GraphWPF.pas b/TestSuite/CompilationSamples/GraphWPF.pas index 76400a0fd..a4e9ed2fc 100644 --- a/TestSuite/CompilationSamples/GraphWPF.pas +++ b/TestSuite/CompilationSamples/GraphWPF.pas @@ -96,6 +96,8 @@ type th: real := 1; fx,fy: real; rc: boolean := false; + public + ///-- function PenConstruct: GPen; begin Result := new GPen(GetBrush(c),th); @@ -110,6 +112,7 @@ type Result.StartLineCap := PenLineCap.Flat; Result.EndLineCap := PenLineCap.Flat; end; + Result.Freeze; end; public /// Цвет пера diff --git a/TestSuite/CompilationSamples/Robot.pas b/TestSuite/CompilationSamples/Robot.pas index 2ab7e87ba..b88e758ec 100644 --- a/TestSuite/CompilationSamples/Robot.pas +++ b/TestSuite/CompilationSamples/Robot.pas @@ -410,6 +410,12 @@ begin RegisterTask('pp7',pp7); RegisterTask('pp8',pp8); + RegisterTask('br1',br1); + RegisterTask('br2',br2); + RegisterTask('br3',br3); + RegisterTask('br4',br4); + RegisterTask('br5',br5); + RegisterTask('examen1',examen1); RegisterTask('examen2',examen2); RegisterTask('examen3',examen3); @@ -420,6 +426,7 @@ begin RegisterTask('examen8',examen8); RegisterTask('examen9',examen9); RegisterTask('examen10',examen10); + end; procedure Task(name: string); diff --git a/TestSuite/CompilationSamples/RobotZadan.pas b/TestSuite/CompilationSamples/RobotZadan.pas index 62ead6078..9d830139f 100644 --- a/TestSuite/CompilationSamples/RobotZadan.pas +++ b/TestSuite/CompilationSamples/RobotZadan.pas @@ -157,6 +157,12 @@ procedure pp6; procedure pp7; procedure pp8; +procedure br1; +procedure br2; +procedure br3; +procedure br4; +procedure br5; + procedure examen1; procedure examen2; procedure examen3; @@ -261,33 +267,30 @@ begin end; procedure c5; -var i: integer; begin TaskText('Задание c5. Закрасить помеченные клетки'); Field(11,11); RobotBeginEnd(1,1,11,11); - for i:=1 to 10 do + for var i:=1 to 10 do Tag(i,i); end; procedure c6; -var i: integer; begin TaskText('Задание c6. Закрасить помеченные клетки'); Field(17,1); RobotBeginEnd(17,1,17,1); - for i:=1 to 8 do + for var i:=1 to 8 do Tag(2*i,1); end; procedure c7; -var i: integer; begin TaskText('Задание c7. Закрасить помеченные клетки'); Field(11,2); RobotBeginEnd(11,1,1,1); TagRect(2,1,11,2); - for i:=1 to 5 do + for var i:=1 to 5 do begin VerticalWall(2*i,1,1); VerticalWall(2*i-1,2,1); @@ -295,23 +298,21 @@ begin end; procedure c8; -var i: integer; begin TaskText('Задание c8. Закрасить помеченные клетки'); Field(11,2); RobotBeginEnd(11,1,1,1); TagRect(1,1,11,1); - for i:=1 to 10 do + for var i:=1 to 10 do VerticalWall(i,1,1); end; procedure c9; -var i: integer; begin TaskText('Задание c9. Закрасить помеченные клетки'); Field(11,2); RobotBeginEnd(1,2,11,2); - for i:=1 to 5 do + for var i:=1 to 5 do begin Tag(2*i,1); Tag(2*i-1,2); @@ -376,13 +377,12 @@ begin end; procedure c16; -var i: integer; begin TaskText('Задание c16. Закрасить помеченные клетки'); Field(12,3); RobotBeginEnd(2,2,2,2); TagRect(2,2,11,2); - for i:=1 to 5 do + for var i:=1 to 5 do begin HorizontalWall(2*i,1,1); HorizontalWall(1+2*i,2,1); @@ -393,14 +393,13 @@ begin end; procedure if1; -var r: integer; begin TaskText('Задание if1. Обойти препятствие и закрасить клетку'); Field(5,5); RobotBeginEnd(2,3,4,3); Tag(4,3); VerticalWall(3,3,1); - r:=random(2); + var r:=random(2); if r=0 then begin HorizontalWall(3,2,1); @@ -767,26 +766,26 @@ begin end; procedure w4; -var n,i: integer; +var n: integer; begin TaskText('Задание w4. Дойти до конца закрашенного ряда переменной длины'); n:=random(7)+3; Field(10,3); RobotBeginEnd(2,2,n+1,2); - for i:=3 to n do + for var i:=3 to n do MarkPainted(i,2); end; procedure w5; -var n,m,i,j: integer; +var n,m: integer; begin TaskText('Задание w5. Дойти до правого нижнего угла закрашенного прямоугольника переменного размера'); n:=random(7)+3; m:=random(6)+3; Field(10,9); RobotBeginEnd(2,2,n,m); - for j:=2 to m do - for i:=2 to n do + for var j:=2 to m do + for var i:=2 to n do MarkPainted(i,j); end; @@ -889,7 +888,7 @@ begin end; procedure w13; -var n,i,m: integer; +var n,m: integer; begin TaskText('Задание w13. Подняться до клетки, имеющей проход налево или проход направо'); n:=random(7)+2; @@ -897,7 +896,7 @@ begin VerticalWall(2,9,2); VerticalWall(3,9,2); RobotEnd(3,10-n-1); - for i:=0 to n-2 do + for var i:=0 to n-2 do begin m:=random(3); if m=0 then VerticalWall(2,10-n+i,1); @@ -913,14 +912,14 @@ begin end; procedure w14; -var n,m,i: integer; +var n,m: integer; begin TaskText('Задание w14. Подняться до клетки, имеющей проход налево и проход направо'); n:=random(7)+2; Field(5,10);RobotBegin(3,10); VerticalWall(2,9,2); VerticalWall(3,9,2); RobotEnd(3,10-n-1); - for i:=0 to n-2 do + for var i:=0 to n-2 do begin m:=random(4); if m=0 then @@ -938,7 +937,7 @@ begin end; procedure w15; -var n,z,i: integer; +var n,z: integer; begin TaskText('Задание w15. Закрасить клетку под первой закрашенной клеткой, под которой свободно'); Field(15,5); @@ -946,7 +945,7 @@ begin HorizontalWall(2,3,2); z:=14; MarkPainted(14,3); - for i:=3 to 12 do + for var i:=3 to 12 do begin n:=random(4); if n=0 then @@ -967,36 +966,36 @@ begin end; procedure w16; -var n,i: integer; +var n: integer; begin TaskText('Задание w16. Идти до конца забора переменной длины'); n:=random(6)+8; Field(15,5); RobotBeginEnd(2,3,n+1,3); - for i:=2 to n do + for var i:=2 to n do VerticalWall(i,3,1); end; procedure w17; -var n,i: integer; +var n: integer; begin TaskText('Задание w17. Идти до конца забора переменной длины'); n:=random(6)+1; Field(15,5); RobotBeginEnd(2,3,2*n+1,3); - for i:=1 to n do + for var i:=1 to n do VerticalWall(2*i,3,1); end; procedure cif1; -var n,i,r: integer; +var n,r: integer; begin TaskText('Задание cif1. Закрасить все клетки под стенами'); n:=14; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r:=random(2); if r=1 then @@ -1008,14 +1007,14 @@ begin end; procedure cif2; -var n,i,r: integer; +var n,r: integer; begin TaskText('Задание cif2. Закрасить помеченные клетки'); n:=14; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r:=random(3); if r=1 then @@ -1032,14 +1031,14 @@ begin end; procedure cif3; -var n,i,r: integer; +var n,r: integer; begin TaskText('Задание cif3. Закрасить помеченные клетки'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r:=random(4); if r=1 then @@ -1056,14 +1055,14 @@ begin end; procedure cif4; -var n,i,r1,r2: integer; +var n,r1,r2: integer; begin TaskText('Задание cif4. Закрасить помеченные клетки'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); @@ -1077,14 +1076,14 @@ begin end; procedure cif5; -var n,i,r1,r2: integer; +var n,r1,r2: integer; begin TaskText('Задание cif5. Закрасить помеченные клетки'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); @@ -1098,14 +1097,14 @@ begin end; procedure cif6; -var n,i,r1,r2: integer; +var n,r1,r2: integer; begin TaskText('Задание cif6. Закрасить помеченные клетки'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); if r1=1 then @@ -1118,14 +1117,14 @@ begin end; procedure cif7; -var n,i,r1,r2: integer; +var n,r1,r2: integer; begin TaskText('Задание cif7. Закрасить помеченные клетки, используя два условных оператора в цикле'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); @@ -1139,14 +1138,14 @@ begin end; procedure cif8; -var n,i,r1,r2: integer; +var n,r1,r2: integer; begin TaskText('Задание cif8. Закрасить помеченные клетки, используя два условных оператора в цикле'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); if (r1=1) and (r2=0) then @@ -1163,14 +1162,14 @@ begin end; procedure cif9; -var n,i,r1,r2: integer; +var n,r1,r2: integer; begin TaskText('Задание cif9. Закрасить помеченные клетки, используя три условных оператора в цикле'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); if r1=1 then @@ -1187,14 +1186,14 @@ begin end; procedure cif10; -var n,i,r1,r2,r3: integer; +var n,r1,r2,r3: integer; begin TaskText('Задание cif10. Закрасить помеченные клетки'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); @@ -1211,14 +1210,14 @@ begin end; procedure cif11; -var n,i,r1,r2,r3: integer; +var n,r1,r2,r3: integer; begin TaskText('Задание cif11. Закрасить помеченные клетки, используя в условии две операции and'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); @@ -1235,14 +1234,14 @@ begin end; procedure cif12; -var n,i,r1,r2,r3: integer; +var n,r1,r2,r3: integer; begin TaskText('Задание cif12. Закрасить помеченные клетки, используя в условии операции and и or'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); @@ -1259,14 +1258,14 @@ begin end; procedure cif13; -var n,i,r2,r3: integer; +var n,r2,r3: integer; begin TaskText('Задание cif13. Закрасить помеченные клетки, используя в условии две операции and и одну or'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r2:=random(2); r3:=random(2); @@ -1280,7 +1279,7 @@ begin end; procedure cif14; -var n,i,r2,r3: integer; +var n,r2,r3: integer; begin TaskText('Задание cif14. Закрасить помеченные клетки, используя вложенные условные операторы'); n:=25; @@ -1288,7 +1287,7 @@ begin RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); HorizontalWall(1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r2:=random(2); r3:=random(2); @@ -1302,7 +1301,7 @@ begin end; procedure cif15; -var n,i,r2,r3: integer; +var n,r2,r3: integer; begin TaskText('Задание cif15. Закрасить помеченные клетки, используя вложенные условные операторы'); n:=25; @@ -1310,7 +1309,7 @@ begin RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); HorizontalWall(1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r2:=random(2); r3:=random(2); @@ -1369,14 +1368,14 @@ begin end; procedure cif18; -var n,c,i: integer; +var n,c: integer; begin TaskText('Задание cif18. Перейти в конец более короткого ряда'); Field(15,4); RobotBegin(2,2); c:=random(2); n:=random(11)+1; - for i:=3 to 3+n-1 do + for var i:=3 to 3+n-1 do begin MarkPainted(i,2);MarkPainted(i,3) end; @@ -1512,7 +1511,7 @@ begin end; procedure count3; -var n1,n2,m,t,i: integer; +var n1,n2,m,t: integer; begin TaskText('Задание count3. Переместить Робота в клетку, симметричную относительно диагонали'); m:=10; @@ -1527,7 +1526,7 @@ begin n1:=n2; n2:=t; end; - for i:=1 to m do + for var i:=1 to m do MarkPainted(i,i); RobotBeginEnd(n1,n2,n2,n1); end; @@ -1593,13 +1592,13 @@ begin end; procedure count8; -var i,r,cc: integer; +var r,cc: integer; begin TaskText('Задание count8. Остановиться на пятой закрашенной клетке'); Field(21,3); RobotBeginEnd(2,2,1,2); cc:=0; - for i:=2 to 20 do + for var i:=2 to 20 do begin if i<16 then r:=random(2) @@ -1620,13 +1619,13 @@ begin end; procedure count9; -var cc,i,r: integer; +var cc,r: integer; begin TaskText('Задание count9. Остановиться на третьей закрашенной подряд клетке'); Field(20,3); RobotBeginEnd(2,2,1,2); cc:=0; - for i:=2 to 19 do + for var i:=2 to 19 do begin if i<17 then r:=random(2) @@ -1678,58 +1677,58 @@ begin end; procedure count12; -var n,i: integer; +var n: integer; begin TaskText('Задание count12. Закрасить помеченные клетки в коридоре переменной длины'); n:=random(4)+10; Field(n,1); RobotBeginEnd(1,1,n,1); - for i:=1 to n div 2 do + for var i:=1 to n div 2 do Tag(i*2,1); end; procedure count13; -var n,i: integer; +var n: integer; begin TaskText('Задание count13. Закрасить помеченные клетки в коридоре переменной длины'); n:=random(4)+10; Field(n,1); RobotBeginEnd(1,1,n,1); - for i:=1 to n div 2 + 1 do + for var i:=1 to n div 2 + 1 do Tag(i*2-1,1); end; procedure count14; -var n,i: integer; +var n: integer; begin TaskText('Задание count14. Закрасить помеченные клетки в коридоре переменной длины'); n:=random(4)+16; Field(n,1); RobotBeginEnd(1,1,n,1); - for i:=1 to n div 3 do + for var i:=1 to n div 3 do Tag(i*3,1); end; procedure count15; -var n,i: integer; +var n: integer; begin TaskText('Задание count15. Закрасить помеченные клетки в коридоре переменной длины'); n:=random(4)+16; Field(n,1); RobotBeginEnd(1,1,n,1); - for i:=1 to n div 3 + 1 do + for var i:=1 to n div 3 + 1 do Tag(i*3-2,1); end; procedure count16; -var n,i,f,z: integer; +var n,f,z: integer; begin TaskText('Задание count16. Закрасить все нечетные пролеты между закрашенными клетками'); Field(25,3); RobotBeginEnd(2,2,25,2); n:=2+random(5); f:=0; - for i:=2 to 24 do + for var i:=2 to 24 do begin if i=n then begin @@ -1752,14 +1751,14 @@ begin end; procedure count17; -var n,i,f: integer; +var n,f: integer; begin TaskText('Задание count17. Остановиться на первой клетке, нарушающей закономерность'); Field(25,3); n:=random(20)+4; RobotBeginEnd(2,2,n,2); f:=0; - for i:=2 to 24 do + for var i:=2 to 24 do begin if i<>n then begin @@ -1773,24 +1772,23 @@ begin end; procedure cc1; -var i: integer; begin TaskText('Задание cc1. Закрасить помеченные клетки, используя вложенные циклы'); Field(31,7); RobotBeginEnd(1,1,31,7); - for i:=1 to 6 do + for var i:=1 to 6 do TagRect(5*i-4,i,5*i,i); end; procedure cc2; -var a,b,i: integer; +var a,b: integer; begin TaskText('Задание cc2. Закрасить помеченные клетки, используя вложенные циклы'); Field(22,7); RobotBeginEnd(1,1,22,7); a:=1; b:=1; - for i:=1 to 6 do + for var i:=1 to 6 do begin TagRect(a,i,b,i); a:=b+1; @@ -1799,14 +1797,14 @@ begin end; procedure cc3; -var a,b,i: integer; +var a,b: integer; begin TaskText('Задание cc3. Закрасить помеченные клетки, используя вложенный цикл с downto'); Field(22,7); RobotBeginEnd(1,1,22,7); a:=1; b:=6; - for i:=1 to 6 do + for var i:=1 to 6 do begin TagRect(a,i,b,i); a:=b+1; @@ -1815,23 +1813,21 @@ begin end; procedure cc4; -var i: integer; begin TaskText('Задание cc4. Закрасить помеченные клетки, используя во внешнем цикле два вложенных цикла'); Field(11,10); RobotBeginEnd(1,1,1,10); TagRect(1,1,11,9); - for i:=1 to 9 do + for var i:=1 to 9 do HorizontalWall(2,i,10); end; procedure cc5; -var i: integer; begin TaskText('Задание cc5. Пройти лабиринт, используя во внешнем цикле два вложенных цикла'); Field(14,9); RobotBeginEnd(1,1,1,9); - for i:=1 to 4 do + for var i:=1 to 4 do begin HorizontalWall(1,2*i-1,13); HorizontalWall(2,2*i,13); @@ -1839,13 +1835,13 @@ begin end; procedure cc6; -var i,n,j: integer; +var n,j: integer; begin TaskText('Задание cc6. Закрасить помеченные клетки'); n:=10; Field(20,n); RobotBeginEnd(1,n,20,n); j:=1; - for i:=1 to 5 do + for var i:=1 to 5 do begin HorizontalWall(j,n-1,3); VerticalWall(j+3,1,n-1);Tag(j+3,1);j:=j+4; @@ -1853,33 +1849,30 @@ begin end; procedure cc7; -var i: integer; begin TaskText('Задание cc7. Закрасить помеченные клетки, используя во внешнем цикле два вложенных цикла'); Field(10,10); RobotBeginEnd(1,1,1,10); - for i:=1 to 9 do + for var i:=1 to 9 do TagRect(1,i,i,i); end; procedure cc8; -var i: integer; begin TaskText('Задание cc8. Закрасить помеченные клетки, используя цикл с downto'); Field(10,10); RobotBeginEnd(1,1,1,10); - for i:=1 to 9 do + for var i:=1 to 9 do TagRect(1,i,10-i,i); end; procedure cc9; -var i: integer; begin TaskText('Задание cc9. Закрасить помеченные клетки, используя во внешнем цикле два вложенных цикла'); Field(10,10); RobotBeginEnd(10,1,10,10); TagRect(10,1,10,9); - for i:=1 to 9 do + for var i:=1 to 9 do begin HorizontalWall(11-i,i,i); HorizontalWall(1,i,9-i); @@ -1887,33 +1880,31 @@ begin end; procedure cc10; -var i: integer; begin TaskText('Задание cc10. Закрасить помеченные клетки'); Field(15,8); RobotBeginEnd(1,1,1,8); - for i:=1 to 7 do + for var i:=1 to 7 do TagRect(1,i,2*i,i); end; procedure cc11; -var i: integer; begin TaskText('Задание cc11. Закрасить помеченные клетки'); Field(14,8); RobotBeginEnd(1,1,1,8); - for i:=1 to 7 do + for var i:=1 to 7 do TagRect(1,i,2*i-1,i); end; procedure cc12; -var i,p: integer; +var p: integer; begin TaskText('Задание cc12. Закрасить помеченные клетки'); Field(33,7); RobotBeginEnd(1,1,1,7); p:=1; - for i:=1 to 6 do + for var i:=1 to 6 do begin TagRect(1,i,p,i); p:=p*2; @@ -1921,12 +1912,11 @@ begin end; procedure cc13; -var i: integer; begin TaskText('Задание cc13. Закрасить помеченные клетки'); Field(14,9); RobotBeginEnd(1,1,9,9); - for i:=1 to 4 do + for var i:=1 to 4 do begin HorizontalWall(2*i-1,2*i-1,15-2*i); HorizontalWall(2*i+2,2*i,13); @@ -1935,12 +1925,11 @@ begin end; procedure cc14; -var i: integer; begin TaskText('Задание cc14. Пройти лабиринт'); Field(14,9); RobotBeginEnd(1,1,5,9); - for i:=1 to 4 do + for var i:=1 to 4 do begin HorizontalWall(i,2*i-1,15-2*i); HorizontalWall(i+2,2*i,14-2*i); @@ -1950,25 +1939,24 @@ begin end; procedure cc15; -var i,n: integer; +var n: integer; begin TaskText('Задание cc15. Закрасить помеченные клетки'); n:=8; Field(15,9); RobotBeginEnd(n,2,n,9); - for i:=1 to 7 do + for var i:=1 to 7 do TagRect(n-i+1,i+1,n+i-1,i+1); end; procedure cc16; -var i,k,j: integer; begin TaskText('Задание cc16. Закрасить помеченные клетки, используя вложенный цикл во вложенном цикле'); Field(22,7); RobotBeginEnd(2,6,22,6); - j:=2; - for k:=1 to 4 do - for i:=1 to 5 do + var j:=2; + for var k:=1 to 4 do + for var i:=1 to 5 do begin TagRect(j,6-i+1,j,6); j:=j+1; @@ -1976,15 +1964,15 @@ begin end; procedure cc17; -var i,j,k: integer; +var j: integer; begin TaskText('Задание cc17. Закрасить помеченные клетки, используя вложенный цикл во вложенном цикле'); Field(29,8); RobotBeginEnd(2,7,28,7); j:=2; - for k:=1 to 6 do + for var k:=1 to 6 do begin - for i:=1 to 6-k+1 do + for var i:=1 to 6-k+1 do begin TagRect(j,7-i+1,j,7); j:=j+1; @@ -1994,11 +1982,10 @@ begin end; procedure cc18; -var i: integer; begin TaskText('Задание cc18. Закрасить помеченные клетки, используя цикл while внутри цикла for'); Field(12,7); RobotBeginEnd(1,1,1,7); - for i:=1 to 8 do + for var i:=1 to 8 do HorizontalWall(2,i,12); VerticalWall(7,1,1);Tag(7,1); VerticalWall(9,2,1);Tag(9,2); @@ -2010,13 +1997,13 @@ begin end; procedure cc19; -var i,n: integer; +var n: integer; begin TaskText('Задание cc19. Закрасить помеченные клетки. Высота поля может меняться'); n:=random(4)+6; Field(11,n); RobotBeginEnd(1,1,1,n); - for i:=1 to n do + for var i:=1 to n do begin Tag(11,i); HorizontalWall(2,i,10); @@ -2036,7 +2023,7 @@ begin end; procedure mix2; -var n1,n2,m,i,j,ij: integer; +var n1,n2,m,ij: integer; begin TaskText('Задание mix2. Закрасить в шахматном порядке прямоугольник переменного размера'); m:=8; @@ -2044,9 +2031,9 @@ begin n1:=random(6)+2; n2:=random(6)+2; RobotBeginEnd(n1,n2,m,m); - for i:=n1 to m do + for var i:=n1 to m do begin - for j:=n2 to m do + for var j:=n2 to m do begin ij:=i+j-n1-n2; if ij mod 2 = 0 then @@ -2104,12 +2091,12 @@ begin end; procedure mix6; -var i,c: integer; +var c: integer; begin TaskText('Задание mix6. Закрасить те клетки у правой стены, для которых закрашены клетки левой стены'); Field(11,11); RobotBeginEnd(1,1,1,11); - for i:=1 to 10 do + for var i:=1 to 10 do begin c:=random(2); if c=1 then @@ -2121,12 +2108,12 @@ begin end; procedure mix7; -var i,c1,c2: integer; +var c1,c2: integer; begin TaskText('Задание mix7. Закрасить горизонтальные ряды, в которых закрашены левая и правая клетки'); Field(11,11); RobotBeginEnd(1,1,1,11); - for i:=1 to 10 do + for var i:=1 to 10 do begin c1:=random(2); if c1=1 then MarkPainted(1,i); @@ -2139,12 +2126,12 @@ begin end; procedure mix8; -var i,c1,c2,c3,c4: integer; +var c1,c2,c3,c4: integer; begin TaskText('Задание mix8. Закрасить горизонтальные ряды, в которых закрашены левая и правая клетки и еще ровно одна'); Field(11,15); RobotBeginEnd(1,1,1,15); - for i:=1 to 14 do + for var i:=1 to 14 do begin c1:=random(2); if c1=1 then @@ -2229,9 +2216,8 @@ end; procedure p2; procedure my(n: integer); - var i: integer; begin - for i:=1 to n do + for var i:=1 to n do TagRect(3*i-1,2,3*i,3); end; begin @@ -2242,12 +2228,11 @@ begin end; procedure p3; -var i: integer; begin TaskText('Задание p3. Закрасить помеченные клетки, используя процедуру Square2'); Field(12,12); RobotBeginEnd(11,11,1,1); - for i:=1 to 6 do + for var i:=1 to 6 do TagRect(2*i-1,2*i-1,2*i,2*i); end; @@ -2268,32 +2253,29 @@ begin end; procedure p6; -var i: integer; begin TaskText('Задание p6. Закрасить помеченные клетки, составив процедуру Row, в которой Робот закрашивает ряд и возвращается назад'); Field(9,9); RobotBeginEnd(1,2,1,8); - for i:=1 to 4 do + for var i:=1 to 4 do TagRect(1,2*i,11,2*i); end; procedure p7; -var i: integer; begin TaskText('Задание p7. Закрасить помеченные клетки, составив процедуру Column, в которой Робот закрашивает колонку и возвращается назад'); Field(9,9); RobotBeginEnd(2,1,8,1); - for i:=1 to 4 do + for var i:=1 to 4 do TagRect(2*i,1,2*i,11); end; procedure p8; -var i: integer; begin TaskText('Задание p8. Закрасить помеченные клетки, используя процедуры Row и Column'); Field(9,9); RobotBeginEnd(1,2,8,1); - for i:=1 to 4 do + for var i:=1 to 4 do begin TagRect(1,2*i,11,2*i); TagRect(2*i,1,2*i,11); @@ -2301,13 +2283,12 @@ begin end; procedure p9; -var i,j: integer; begin TaskText('Задание p9. Закрасить помеченные клетки, используя процедуры Row и Column'); Field(15,15); RobotBeginEnd(2,2,6,6); - i:=2; - for j:=1 to 3 do + var i:=2; + for var j:=1 to 3 do begin TagRect(i,i,i+8,i); TagRect(i,i,i,i+8);i:=i+2; @@ -2315,13 +2296,12 @@ begin end; procedure p10; -var i,j: integer; begin TaskText('Задание p10. Закрасить помеченные клетки, составив процедуру Contour'); Field(31,7); RobotBeginEnd(2,2,26,2); - i:=2; - for j:=1 to 5 do + var i:=2; + for var j:=1 to 5 do begin TagRect(i,2,i+4,2); TagRect(i,2,i,6); @@ -2332,24 +2312,22 @@ begin end; procedure p11; -var i,j: integer; begin TaskText('Задание p11. Закрасить помеченные клетки, составив процедуру Punktir'); Field(15,11); RobotBeginEnd(1,1,1,11); - for i:=1 to 7 do - for j:=1 to 5 do + for var i:=1 to 7 do + for var j:=1 to 5 do Tag(2*i-1,2*j-1); end; procedure p12; -var i,j: integer; begin TaskText('Задание p12. Закрасить помеченные клетки, используя процедуру Punktir'); Field(16,12); RobotBeginEnd(2,2,3,11); - for i:=1 to 7 do - for j:=1 to 5 do + for var i:=1 to 7 do + for var j:=1 to 5 do begin Tag(2*i,2*j); Tag(2*i+1,2*j+1); @@ -2357,13 +2335,12 @@ begin end; procedure p13; -var i,j: integer; begin TaskText('Задание p13. Закрасить помеченные клетки, используя процедуру Punktir'); Field(17,14); RobotBeginEnd(2,2,2,14); - for i:=1 to 5 do - for j:=1 to 4 do + for var i:=1 to 5 do + for var j:=1 to 4 do begin Tag(3*i-1,3*j-1); Tag(3*i,3*j); @@ -2372,27 +2349,26 @@ begin end; procedure p14; -var i: integer; begin TaskText('Задание p14. Закрасить помеченные клетки, составив процедуры Row1 и Row2 для двух разновидностей рядов'); Field(17,15); RobotBeginEnd(2,2,2,14); - for i:=1 to 8 do + for var i:=1 to 8 do TagRect(2*i,2,2*i,13); - for i:=1 to 8 do + for var i:=1 to 8 do TagRect(2,2*i,16,2*i); end; procedure p15; -var i,j,n: integer; +var n: integer; begin TaskText('Задание p15. Закрасить помеченные клетки, составив процедуры Row1 и Row2 для двух разновидностей рядов'); n:=14; Field(25,n+1); RobotBeginEnd(2,2,2,n); - for i:=1 to 8 do + for var i:=1 to 8 do begin TagRect(4*i-1,2,4*i-1,n); - for j:=1 to 6 do + for var j:=1 to 6 do begin Tag(4*i-2,2*j+1); Tag(4*i,2*j+1); @@ -2429,12 +2405,11 @@ begin end; procedure pp1; -var i: integer; begin TaskText('Задание pp1. Закрасить помеченные клетки, составив процедуры с параметром RightN(n) и LeftN(n)'); Field(12,7); RobotBeginEnd(1,1,1,7); - for i:=1 to 8 do + for var i:=1 to 8 do HorizontalWall(2,i,12); Tag(7,1);Tag(9,2);Tag(5,3);Tag(4,4);Tag(11,5);Tag(2,6);Tag(7,7); end; @@ -2452,13 +2427,13 @@ begin end; procedure pp3; -var i,d: integer; +var d: integer; begin TaskText('Задание pp3. Пройти лабиринт. Составить процедуры с параметрами RightN(n), LeftN(n), UpN(n), DownN(n)'); d:=9; Field(d,d); RobotBeginEnd(1,1,5,5); - for i:=1 to 4 do + for var i:=1 to 4 do begin VerticalWall(i,i,d+1-2*i); HorizontalWall(i+1,d-i,d-2*i); @@ -2519,29 +2494,108 @@ begin TagRect(13,1,13,7); TagRect(15,1,15,7); Tag(14,2); end; +procedure br1; +begin + TaskText('Задание break1. Остановиться на указанной клетке. Использовать оператор break'); + Field(13,5); + RobotBeginEnd(2,3,12,3); + var xx := Random(3,17); + for var x:=3 to 12 do + if x <> xx then + Tag(x,3) + else + begin + HorizontalWall(x,3,1); + RobotEnd(x,3); + break; + end; +end; + +procedure br2; +begin + TaskText('Задание break2. Остановиться на указанной клетке. Использовать оператор break'); + Field(13,5); + RobotBeginEnd(2,3,12,3); + var xx := Random(3,17); + for var x:=3 to 12 do + if x <> xx then + Tag(x,2) + else + begin + HorizontalWall(x,3,1); + RobotEnd(x,3); + break; + end; +end; + +procedure br3; +begin + TaskText('Задание break3. Остановиться на указанной клетке. Использовать оператор break'); + Field(13,5); + RobotBeginEnd(2,3,12,3); + var xx := Random(3,17); + for var x:=3 to 12 do + if x <> xx then + begin + Tag(x,2); + Tag(x,3); + end + else + begin + MarkPainted(x,3); + RobotEnd(x,3); + break; + end; +end; + +procedure br4; +begin + TaskText('Задание break4. Остановиться на указанной клетке. Использовать оператор break'); + Field(13,5); + RobotBeginEnd(2,3,12,3); + var xx := Random(3,17); + if xx < 13 then + begin + HorizontalWall(xx,4,1); + Tag(xx,4); + RobotEnd(xx,4); + end; +end; + +procedure br5; +begin + TaskText('Задание break5. Остановиться на указанной клетке. Использовать оператор break'); + Field(13,5); + RobotBeginEnd(2,3,12,3); + var xx := Random(3,17); + if xx < 13 then + begin + MarkPainted(xx,2); + RobotEnd(xx,2); + end; +end; + + procedure examen1; -var i,j: integer; begin TaskText('Задание examen1. Закрасить помеченные клетки, составив процедуру Punktir'); Field(15,11); RobotBeginEnd(1,1,1,11); - for i:=1 to 7 do - for j:=1 to 5 do + for var i:=1 to 7 do + for var j:=1 to 5 do Tag(2*i-1,2*j-1); end; procedure examen2; -var i,j: integer; begin TaskText('Задание examen2. Закрасить помеченные клетки, используя процедуру Punktir'); Field(16,12); RobotBeginEnd(2,2,3,11); - for i:=1 to 7 do + for var i:=1 to 7 do begin - for j:=1 to 5 do + for var j:=1 to 5 do begin - Tag(2*i,2*j); - Tag(2*i+1,2*j+1); + Tag(2*i,2*j); Tag(2*i+1,2*j+1); end end end; @@ -2579,25 +2633,25 @@ begin end; procedure examen5; -var i,n: integer; +var n: integer; begin TaskText('Задание examen5. Закрасить все клетки в коридоре переменной длины'); n:=random(4)+10; Field(n,1); RobotBeginEnd(1,1,n,1); - for i:=1 to n div 2 do + for var i:=1 to n div 2 do Tag(i*2,1); end; procedure examen6; -var i,n,r1,r2: integer; +var n,r1,r2: integer; begin TaskText('Задание examen6. Закрасить помеченные клетки, используя 2 условных оператора в цикле'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); @@ -2615,14 +2669,14 @@ begin end; procedure examen7; -var i,n,r1,r2,r3: integer; +var n,r1,r2,r3: integer; begin TaskText('Задание examen7. Закрасить помеченные клетки, используя в условии "and" и "or"'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); diff --git a/TestSuite/CompilationSamples/WPFObjects.pas b/TestSuite/CompilationSamples/WPFObjects.pas index 1c6a41804..875540d69 100644 --- a/TestSuite/CompilationSamples/WPFObjects.pas +++ b/TestSuite/CompilationSamples/WPFObjects.pas @@ -169,13 +169,13 @@ type ob: FrameworkElement; gr: Grid; // Grid связан только с текстом t: TextBlock; + ChildrenWPF := new List; + procedure InitOb(x,y,w,h: real; o: FrameworkElement; SetWH: boolean := True; Hidden: boolean := False); + protected transfgroup: TransformGroup; rot: RotateTransform; sca: ScaleTransform; transl: TranslateTransform; - - ChildrenWPF := new List; - procedure InitOb(x,y,w,h: real; o: FrameworkElement; SetWH: boolean := True; Hidden: boolean := False); public /// Направление движения по оси X. Используется методом Move auto property Dx: real; @@ -1233,7 +1233,7 @@ type // ----------------------------------------------------- /// Класс графических объектов "Рисунок" PictureWPF = class(ObjectWPF) - private + protected function CreateBitmapImage(fname: string) := new BitmapImage(new System.Uri(fname,System.UriKind.Relative)); procedure Rest(x,y,w,h: real; b: BitmapImage); begin @@ -1244,6 +1244,7 @@ type InitOb(x,y,w,h,im); end; + private procedure InitOb3(x,y,w,h: real; fname: string); begin var b := CreateBitmapImage(fname); diff --git a/TestSuite/CompilationSamples/turtle.png b/TestSuite/CompilationSamples/turtle.png new file mode 100644 index 0000000000000000000000000000000000000000..4562bc74b0a68bd20d4d03dccbc6c4608a119836 GIT binary patch literal 29176 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 literal 0 HcmV?d00001 diff --git a/VisualPascalABCNET/Workbench/UpdateService.cs b/VisualPascalABCNET/Workbench/UpdateService.cs index a06cd640b..551fc18df 100644 --- a/VisualPascalABCNET/Workbench/UpdateService.cs +++ b/VisualPascalABCNET/Workbench/UpdateService.cs @@ -53,7 +53,7 @@ namespace VisualPascalABC try { WebClient client = new WebClient(); - newVersion = client.DownloadString("http://pascalabc.net/downloads/pabcversion.txt").Trim(); + newVersion = client.DownloadString("https://pascalabc.net/downloads/pabcversion.txt").Trim(); curVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); if ((new Version(curVersion)).CompareTo(new Version(newVersion)) == -1) status = 0; diff --git a/VisualPascalABCNETLinux/Workbench/UpdateService.cs b/VisualPascalABCNETLinux/Workbench/UpdateService.cs index 8dd6fd7fc..9ca934a69 100644 --- a/VisualPascalABCNETLinux/Workbench/UpdateService.cs +++ b/VisualPascalABCNETLinux/Workbench/UpdateService.cs @@ -53,7 +53,7 @@ namespace VisualPascalABC try { WebClient client = new WebClient(); - newVersion = client.DownloadString("http://pascalabc.net/downloads/pabcversion.txt").Trim(); + newVersion = client.DownloadString("https://pascalabc.net/downloads/pabcversion.txt").Trim(); curVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); if ((new Version(curVersion)).CompareTo(new Version(newVersion)) == -1) status = 0; diff --git a/bin/Lib/GraphWPF.pas b/bin/Lib/GraphWPF.pas index dc367c52d..9bf70da28 100644 --- a/bin/Lib/GraphWPF.pas +++ b/bin/Lib/GraphWPF.pas @@ -96,6 +96,8 @@ type th: real := 1; fx,fy: real; rc: boolean := false; + public + ///-- function PenConstruct: GPen; begin Result := new GPen(GetBrush(c),th); @@ -110,6 +112,7 @@ type Result.StartLineCap := PenLineCap.Flat; Result.EndLineCap := PenLineCap.Flat; end; + Result.Freeze; end; public /// Цвет пера diff --git a/bin/Lib/NUnitABC.pas b/bin/Lib/NUnitABC.pas index 2dbaff08d..62db4591b 100644 --- a/bin/Lib/NUnitABC.pas +++ b/bin/Lib/NUnitABC.pas @@ -6,6 +6,7 @@ uses NUnit.Framework; procedure InitPABCSystem; begin __InitPABCSystem; + System.Console.OutputEncoding := Encoding.GetEncoding(866); end; type diff --git a/bin/Lib/Robot.pas b/bin/Lib/Robot.pas index 2ab7e87ba..b88e758ec 100644 --- a/bin/Lib/Robot.pas +++ b/bin/Lib/Robot.pas @@ -410,6 +410,12 @@ begin RegisterTask('pp7',pp7); RegisterTask('pp8',pp8); + RegisterTask('br1',br1); + RegisterTask('br2',br2); + RegisterTask('br3',br3); + RegisterTask('br4',br4); + RegisterTask('br5',br5); + RegisterTask('examen1',examen1); RegisterTask('examen2',examen2); RegisterTask('examen3',examen3); @@ -420,6 +426,7 @@ begin RegisterTask('examen8',examen8); RegisterTask('examen9',examen9); RegisterTask('examen10',examen10); + end; procedure Task(name: string); diff --git a/bin/Lib/RobotZadan.pas b/bin/Lib/RobotZadan.pas index 62ead6078..9d830139f 100644 --- a/bin/Lib/RobotZadan.pas +++ b/bin/Lib/RobotZadan.pas @@ -157,6 +157,12 @@ procedure pp6; procedure pp7; procedure pp8; +procedure br1; +procedure br2; +procedure br3; +procedure br4; +procedure br5; + procedure examen1; procedure examen2; procedure examen3; @@ -261,33 +267,30 @@ begin end; procedure c5; -var i: integer; begin TaskText('Задание c5. Закрасить помеченные клетки'); Field(11,11); RobotBeginEnd(1,1,11,11); - for i:=1 to 10 do + for var i:=1 to 10 do Tag(i,i); end; procedure c6; -var i: integer; begin TaskText('Задание c6. Закрасить помеченные клетки'); Field(17,1); RobotBeginEnd(17,1,17,1); - for i:=1 to 8 do + for var i:=1 to 8 do Tag(2*i,1); end; procedure c7; -var i: integer; begin TaskText('Задание c7. Закрасить помеченные клетки'); Field(11,2); RobotBeginEnd(11,1,1,1); TagRect(2,1,11,2); - for i:=1 to 5 do + for var i:=1 to 5 do begin VerticalWall(2*i,1,1); VerticalWall(2*i-1,2,1); @@ -295,23 +298,21 @@ begin end; procedure c8; -var i: integer; begin TaskText('Задание c8. Закрасить помеченные клетки'); Field(11,2); RobotBeginEnd(11,1,1,1); TagRect(1,1,11,1); - for i:=1 to 10 do + for var i:=1 to 10 do VerticalWall(i,1,1); end; procedure c9; -var i: integer; begin TaskText('Задание c9. Закрасить помеченные клетки'); Field(11,2); RobotBeginEnd(1,2,11,2); - for i:=1 to 5 do + for var i:=1 to 5 do begin Tag(2*i,1); Tag(2*i-1,2); @@ -376,13 +377,12 @@ begin end; procedure c16; -var i: integer; begin TaskText('Задание c16. Закрасить помеченные клетки'); Field(12,3); RobotBeginEnd(2,2,2,2); TagRect(2,2,11,2); - for i:=1 to 5 do + for var i:=1 to 5 do begin HorizontalWall(2*i,1,1); HorizontalWall(1+2*i,2,1); @@ -393,14 +393,13 @@ begin end; procedure if1; -var r: integer; begin TaskText('Задание if1. Обойти препятствие и закрасить клетку'); Field(5,5); RobotBeginEnd(2,3,4,3); Tag(4,3); VerticalWall(3,3,1); - r:=random(2); + var r:=random(2); if r=0 then begin HorizontalWall(3,2,1); @@ -767,26 +766,26 @@ begin end; procedure w4; -var n,i: integer; +var n: integer; begin TaskText('Задание w4. Дойти до конца закрашенного ряда переменной длины'); n:=random(7)+3; Field(10,3); RobotBeginEnd(2,2,n+1,2); - for i:=3 to n do + for var i:=3 to n do MarkPainted(i,2); end; procedure w5; -var n,m,i,j: integer; +var n,m: integer; begin TaskText('Задание w5. Дойти до правого нижнего угла закрашенного прямоугольника переменного размера'); n:=random(7)+3; m:=random(6)+3; Field(10,9); RobotBeginEnd(2,2,n,m); - for j:=2 to m do - for i:=2 to n do + for var j:=2 to m do + for var i:=2 to n do MarkPainted(i,j); end; @@ -889,7 +888,7 @@ begin end; procedure w13; -var n,i,m: integer; +var n,m: integer; begin TaskText('Задание w13. Подняться до клетки, имеющей проход налево или проход направо'); n:=random(7)+2; @@ -897,7 +896,7 @@ begin VerticalWall(2,9,2); VerticalWall(3,9,2); RobotEnd(3,10-n-1); - for i:=0 to n-2 do + for var i:=0 to n-2 do begin m:=random(3); if m=0 then VerticalWall(2,10-n+i,1); @@ -913,14 +912,14 @@ begin end; procedure w14; -var n,m,i: integer; +var n,m: integer; begin TaskText('Задание w14. Подняться до клетки, имеющей проход налево и проход направо'); n:=random(7)+2; Field(5,10);RobotBegin(3,10); VerticalWall(2,9,2); VerticalWall(3,9,2); RobotEnd(3,10-n-1); - for i:=0 to n-2 do + for var i:=0 to n-2 do begin m:=random(4); if m=0 then @@ -938,7 +937,7 @@ begin end; procedure w15; -var n,z,i: integer; +var n,z: integer; begin TaskText('Задание w15. Закрасить клетку под первой закрашенной клеткой, под которой свободно'); Field(15,5); @@ -946,7 +945,7 @@ begin HorizontalWall(2,3,2); z:=14; MarkPainted(14,3); - for i:=3 to 12 do + for var i:=3 to 12 do begin n:=random(4); if n=0 then @@ -967,36 +966,36 @@ begin end; procedure w16; -var n,i: integer; +var n: integer; begin TaskText('Задание w16. Идти до конца забора переменной длины'); n:=random(6)+8; Field(15,5); RobotBeginEnd(2,3,n+1,3); - for i:=2 to n do + for var i:=2 to n do VerticalWall(i,3,1); end; procedure w17; -var n,i: integer; +var n: integer; begin TaskText('Задание w17. Идти до конца забора переменной длины'); n:=random(6)+1; Field(15,5); RobotBeginEnd(2,3,2*n+1,3); - for i:=1 to n do + for var i:=1 to n do VerticalWall(2*i,3,1); end; procedure cif1; -var n,i,r: integer; +var n,r: integer; begin TaskText('Задание cif1. Закрасить все клетки под стенами'); n:=14; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r:=random(2); if r=1 then @@ -1008,14 +1007,14 @@ begin end; procedure cif2; -var n,i,r: integer; +var n,r: integer; begin TaskText('Задание cif2. Закрасить помеченные клетки'); n:=14; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r:=random(3); if r=1 then @@ -1032,14 +1031,14 @@ begin end; procedure cif3; -var n,i,r: integer; +var n,r: integer; begin TaskText('Задание cif3. Закрасить помеченные клетки'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r:=random(4); if r=1 then @@ -1056,14 +1055,14 @@ begin end; procedure cif4; -var n,i,r1,r2: integer; +var n,r1,r2: integer; begin TaskText('Задание cif4. Закрасить помеченные клетки'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); @@ -1077,14 +1076,14 @@ begin end; procedure cif5; -var n,i,r1,r2: integer; +var n,r1,r2: integer; begin TaskText('Задание cif5. Закрасить помеченные клетки'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); @@ -1098,14 +1097,14 @@ begin end; procedure cif6; -var n,i,r1,r2: integer; +var n,r1,r2: integer; begin TaskText('Задание cif6. Закрасить помеченные клетки'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); if r1=1 then @@ -1118,14 +1117,14 @@ begin end; procedure cif7; -var n,i,r1,r2: integer; +var n,r1,r2: integer; begin TaskText('Задание cif7. Закрасить помеченные клетки, используя два условных оператора в цикле'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); @@ -1139,14 +1138,14 @@ begin end; procedure cif8; -var n,i,r1,r2: integer; +var n,r1,r2: integer; begin TaskText('Задание cif8. Закрасить помеченные клетки, используя два условных оператора в цикле'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); if (r1=1) and (r2=0) then @@ -1163,14 +1162,14 @@ begin end; procedure cif9; -var n,i,r1,r2: integer; +var n,r1,r2: integer; begin TaskText('Задание cif9. Закрасить помеченные клетки, используя три условных оператора в цикле'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); if r1=1 then @@ -1187,14 +1186,14 @@ begin end; procedure cif10; -var n,i,r1,r2,r3: integer; +var n,r1,r2,r3: integer; begin TaskText('Задание cif10. Закрасить помеченные клетки'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); @@ -1211,14 +1210,14 @@ begin end; procedure cif11; -var n,i,r1,r2,r3: integer; +var n,r1,r2,r3: integer; begin TaskText('Задание cif11. Закрасить помеченные клетки, используя в условии две операции and'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); @@ -1235,14 +1234,14 @@ begin end; procedure cif12; -var n,i,r1,r2,r3: integer; +var n,r1,r2,r3: integer; begin TaskText('Задание cif12. Закрасить помеченные клетки, используя в условии операции and и or'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); @@ -1259,14 +1258,14 @@ begin end; procedure cif13; -var n,i,r2,r3: integer; +var n,r2,r3: integer; begin TaskText('Задание cif13. Закрасить помеченные клетки, используя в условии две операции and и одну or'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r2:=random(2); r3:=random(2); @@ -1280,7 +1279,7 @@ begin end; procedure cif14; -var n,i,r2,r3: integer; +var n,r2,r3: integer; begin TaskText('Задание cif14. Закрасить помеченные клетки, используя вложенные условные операторы'); n:=25; @@ -1288,7 +1287,7 @@ begin RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); HorizontalWall(1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r2:=random(2); r3:=random(2); @@ -1302,7 +1301,7 @@ begin end; procedure cif15; -var n,i,r2,r3: integer; +var n,r2,r3: integer; begin TaskText('Задание cif15. Закрасить помеченные клетки, используя вложенные условные операторы'); n:=25; @@ -1310,7 +1309,7 @@ begin RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); HorizontalWall(1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r2:=random(2); r3:=random(2); @@ -1369,14 +1368,14 @@ begin end; procedure cif18; -var n,c,i: integer; +var n,c: integer; begin TaskText('Задание cif18. Перейти в конец более короткого ряда'); Field(15,4); RobotBegin(2,2); c:=random(2); n:=random(11)+1; - for i:=3 to 3+n-1 do + for var i:=3 to 3+n-1 do begin MarkPainted(i,2);MarkPainted(i,3) end; @@ -1512,7 +1511,7 @@ begin end; procedure count3; -var n1,n2,m,t,i: integer; +var n1,n2,m,t: integer; begin TaskText('Задание count3. Переместить Робота в клетку, симметричную относительно диагонали'); m:=10; @@ -1527,7 +1526,7 @@ begin n1:=n2; n2:=t; end; - for i:=1 to m do + for var i:=1 to m do MarkPainted(i,i); RobotBeginEnd(n1,n2,n2,n1); end; @@ -1593,13 +1592,13 @@ begin end; procedure count8; -var i,r,cc: integer; +var r,cc: integer; begin TaskText('Задание count8. Остановиться на пятой закрашенной клетке'); Field(21,3); RobotBeginEnd(2,2,1,2); cc:=0; - for i:=2 to 20 do + for var i:=2 to 20 do begin if i<16 then r:=random(2) @@ -1620,13 +1619,13 @@ begin end; procedure count9; -var cc,i,r: integer; +var cc,r: integer; begin TaskText('Задание count9. Остановиться на третьей закрашенной подряд клетке'); Field(20,3); RobotBeginEnd(2,2,1,2); cc:=0; - for i:=2 to 19 do + for var i:=2 to 19 do begin if i<17 then r:=random(2) @@ -1678,58 +1677,58 @@ begin end; procedure count12; -var n,i: integer; +var n: integer; begin TaskText('Задание count12. Закрасить помеченные клетки в коридоре переменной длины'); n:=random(4)+10; Field(n,1); RobotBeginEnd(1,1,n,1); - for i:=1 to n div 2 do + for var i:=1 to n div 2 do Tag(i*2,1); end; procedure count13; -var n,i: integer; +var n: integer; begin TaskText('Задание count13. Закрасить помеченные клетки в коридоре переменной длины'); n:=random(4)+10; Field(n,1); RobotBeginEnd(1,1,n,1); - for i:=1 to n div 2 + 1 do + for var i:=1 to n div 2 + 1 do Tag(i*2-1,1); end; procedure count14; -var n,i: integer; +var n: integer; begin TaskText('Задание count14. Закрасить помеченные клетки в коридоре переменной длины'); n:=random(4)+16; Field(n,1); RobotBeginEnd(1,1,n,1); - for i:=1 to n div 3 do + for var i:=1 to n div 3 do Tag(i*3,1); end; procedure count15; -var n,i: integer; +var n: integer; begin TaskText('Задание count15. Закрасить помеченные клетки в коридоре переменной длины'); n:=random(4)+16; Field(n,1); RobotBeginEnd(1,1,n,1); - for i:=1 to n div 3 + 1 do + for var i:=1 to n div 3 + 1 do Tag(i*3-2,1); end; procedure count16; -var n,i,f,z: integer; +var n,f,z: integer; begin TaskText('Задание count16. Закрасить все нечетные пролеты между закрашенными клетками'); Field(25,3); RobotBeginEnd(2,2,25,2); n:=2+random(5); f:=0; - for i:=2 to 24 do + for var i:=2 to 24 do begin if i=n then begin @@ -1752,14 +1751,14 @@ begin end; procedure count17; -var n,i,f: integer; +var n,f: integer; begin TaskText('Задание count17. Остановиться на первой клетке, нарушающей закономерность'); Field(25,3); n:=random(20)+4; RobotBeginEnd(2,2,n,2); f:=0; - for i:=2 to 24 do + for var i:=2 to 24 do begin if i<>n then begin @@ -1773,24 +1772,23 @@ begin end; procedure cc1; -var i: integer; begin TaskText('Задание cc1. Закрасить помеченные клетки, используя вложенные циклы'); Field(31,7); RobotBeginEnd(1,1,31,7); - for i:=1 to 6 do + for var i:=1 to 6 do TagRect(5*i-4,i,5*i,i); end; procedure cc2; -var a,b,i: integer; +var a,b: integer; begin TaskText('Задание cc2. Закрасить помеченные клетки, используя вложенные циклы'); Field(22,7); RobotBeginEnd(1,1,22,7); a:=1; b:=1; - for i:=1 to 6 do + for var i:=1 to 6 do begin TagRect(a,i,b,i); a:=b+1; @@ -1799,14 +1797,14 @@ begin end; procedure cc3; -var a,b,i: integer; +var a,b: integer; begin TaskText('Задание cc3. Закрасить помеченные клетки, используя вложенный цикл с downto'); Field(22,7); RobotBeginEnd(1,1,22,7); a:=1; b:=6; - for i:=1 to 6 do + for var i:=1 to 6 do begin TagRect(a,i,b,i); a:=b+1; @@ -1815,23 +1813,21 @@ begin end; procedure cc4; -var i: integer; begin TaskText('Задание cc4. Закрасить помеченные клетки, используя во внешнем цикле два вложенных цикла'); Field(11,10); RobotBeginEnd(1,1,1,10); TagRect(1,1,11,9); - for i:=1 to 9 do + for var i:=1 to 9 do HorizontalWall(2,i,10); end; procedure cc5; -var i: integer; begin TaskText('Задание cc5. Пройти лабиринт, используя во внешнем цикле два вложенных цикла'); Field(14,9); RobotBeginEnd(1,1,1,9); - for i:=1 to 4 do + for var i:=1 to 4 do begin HorizontalWall(1,2*i-1,13); HorizontalWall(2,2*i,13); @@ -1839,13 +1835,13 @@ begin end; procedure cc6; -var i,n,j: integer; +var n,j: integer; begin TaskText('Задание cc6. Закрасить помеченные клетки'); n:=10; Field(20,n); RobotBeginEnd(1,n,20,n); j:=1; - for i:=1 to 5 do + for var i:=1 to 5 do begin HorizontalWall(j,n-1,3); VerticalWall(j+3,1,n-1);Tag(j+3,1);j:=j+4; @@ -1853,33 +1849,30 @@ begin end; procedure cc7; -var i: integer; begin TaskText('Задание cc7. Закрасить помеченные клетки, используя во внешнем цикле два вложенных цикла'); Field(10,10); RobotBeginEnd(1,1,1,10); - for i:=1 to 9 do + for var i:=1 to 9 do TagRect(1,i,i,i); end; procedure cc8; -var i: integer; begin TaskText('Задание cc8. Закрасить помеченные клетки, используя цикл с downto'); Field(10,10); RobotBeginEnd(1,1,1,10); - for i:=1 to 9 do + for var i:=1 to 9 do TagRect(1,i,10-i,i); end; procedure cc9; -var i: integer; begin TaskText('Задание cc9. Закрасить помеченные клетки, используя во внешнем цикле два вложенных цикла'); Field(10,10); RobotBeginEnd(10,1,10,10); TagRect(10,1,10,9); - for i:=1 to 9 do + for var i:=1 to 9 do begin HorizontalWall(11-i,i,i); HorizontalWall(1,i,9-i); @@ -1887,33 +1880,31 @@ begin end; procedure cc10; -var i: integer; begin TaskText('Задание cc10. Закрасить помеченные клетки'); Field(15,8); RobotBeginEnd(1,1,1,8); - for i:=1 to 7 do + for var i:=1 to 7 do TagRect(1,i,2*i,i); end; procedure cc11; -var i: integer; begin TaskText('Задание cc11. Закрасить помеченные клетки'); Field(14,8); RobotBeginEnd(1,1,1,8); - for i:=1 to 7 do + for var i:=1 to 7 do TagRect(1,i,2*i-1,i); end; procedure cc12; -var i,p: integer; +var p: integer; begin TaskText('Задание cc12. Закрасить помеченные клетки'); Field(33,7); RobotBeginEnd(1,1,1,7); p:=1; - for i:=1 to 6 do + for var i:=1 to 6 do begin TagRect(1,i,p,i); p:=p*2; @@ -1921,12 +1912,11 @@ begin end; procedure cc13; -var i: integer; begin TaskText('Задание cc13. Закрасить помеченные клетки'); Field(14,9); RobotBeginEnd(1,1,9,9); - for i:=1 to 4 do + for var i:=1 to 4 do begin HorizontalWall(2*i-1,2*i-1,15-2*i); HorizontalWall(2*i+2,2*i,13); @@ -1935,12 +1925,11 @@ begin end; procedure cc14; -var i: integer; begin TaskText('Задание cc14. Пройти лабиринт'); Field(14,9); RobotBeginEnd(1,1,5,9); - for i:=1 to 4 do + for var i:=1 to 4 do begin HorizontalWall(i,2*i-1,15-2*i); HorizontalWall(i+2,2*i,14-2*i); @@ -1950,25 +1939,24 @@ begin end; procedure cc15; -var i,n: integer; +var n: integer; begin TaskText('Задание cc15. Закрасить помеченные клетки'); n:=8; Field(15,9); RobotBeginEnd(n,2,n,9); - for i:=1 to 7 do + for var i:=1 to 7 do TagRect(n-i+1,i+1,n+i-1,i+1); end; procedure cc16; -var i,k,j: integer; begin TaskText('Задание cc16. Закрасить помеченные клетки, используя вложенный цикл во вложенном цикле'); Field(22,7); RobotBeginEnd(2,6,22,6); - j:=2; - for k:=1 to 4 do - for i:=1 to 5 do + var j:=2; + for var k:=1 to 4 do + for var i:=1 to 5 do begin TagRect(j,6-i+1,j,6); j:=j+1; @@ -1976,15 +1964,15 @@ begin end; procedure cc17; -var i,j,k: integer; +var j: integer; begin TaskText('Задание cc17. Закрасить помеченные клетки, используя вложенный цикл во вложенном цикле'); Field(29,8); RobotBeginEnd(2,7,28,7); j:=2; - for k:=1 to 6 do + for var k:=1 to 6 do begin - for i:=1 to 6-k+1 do + for var i:=1 to 6-k+1 do begin TagRect(j,7-i+1,j,7); j:=j+1; @@ -1994,11 +1982,10 @@ begin end; procedure cc18; -var i: integer; begin TaskText('Задание cc18. Закрасить помеченные клетки, используя цикл while внутри цикла for'); Field(12,7); RobotBeginEnd(1,1,1,7); - for i:=1 to 8 do + for var i:=1 to 8 do HorizontalWall(2,i,12); VerticalWall(7,1,1);Tag(7,1); VerticalWall(9,2,1);Tag(9,2); @@ -2010,13 +1997,13 @@ begin end; procedure cc19; -var i,n: integer; +var n: integer; begin TaskText('Задание cc19. Закрасить помеченные клетки. Высота поля может меняться'); n:=random(4)+6; Field(11,n); RobotBeginEnd(1,1,1,n); - for i:=1 to n do + for var i:=1 to n do begin Tag(11,i); HorizontalWall(2,i,10); @@ -2036,7 +2023,7 @@ begin end; procedure mix2; -var n1,n2,m,i,j,ij: integer; +var n1,n2,m,ij: integer; begin TaskText('Задание mix2. Закрасить в шахматном порядке прямоугольник переменного размера'); m:=8; @@ -2044,9 +2031,9 @@ begin n1:=random(6)+2; n2:=random(6)+2; RobotBeginEnd(n1,n2,m,m); - for i:=n1 to m do + for var i:=n1 to m do begin - for j:=n2 to m do + for var j:=n2 to m do begin ij:=i+j-n1-n2; if ij mod 2 = 0 then @@ -2104,12 +2091,12 @@ begin end; procedure mix6; -var i,c: integer; +var c: integer; begin TaskText('Задание mix6. Закрасить те клетки у правой стены, для которых закрашены клетки левой стены'); Field(11,11); RobotBeginEnd(1,1,1,11); - for i:=1 to 10 do + for var i:=1 to 10 do begin c:=random(2); if c=1 then @@ -2121,12 +2108,12 @@ begin end; procedure mix7; -var i,c1,c2: integer; +var c1,c2: integer; begin TaskText('Задание mix7. Закрасить горизонтальные ряды, в которых закрашены левая и правая клетки'); Field(11,11); RobotBeginEnd(1,1,1,11); - for i:=1 to 10 do + for var i:=1 to 10 do begin c1:=random(2); if c1=1 then MarkPainted(1,i); @@ -2139,12 +2126,12 @@ begin end; procedure mix8; -var i,c1,c2,c3,c4: integer; +var c1,c2,c3,c4: integer; begin TaskText('Задание mix8. Закрасить горизонтальные ряды, в которых закрашены левая и правая клетки и еще ровно одна'); Field(11,15); RobotBeginEnd(1,1,1,15); - for i:=1 to 14 do + for var i:=1 to 14 do begin c1:=random(2); if c1=1 then @@ -2229,9 +2216,8 @@ end; procedure p2; procedure my(n: integer); - var i: integer; begin - for i:=1 to n do + for var i:=1 to n do TagRect(3*i-1,2,3*i,3); end; begin @@ -2242,12 +2228,11 @@ begin end; procedure p3; -var i: integer; begin TaskText('Задание p3. Закрасить помеченные клетки, используя процедуру Square2'); Field(12,12); RobotBeginEnd(11,11,1,1); - for i:=1 to 6 do + for var i:=1 to 6 do TagRect(2*i-1,2*i-1,2*i,2*i); end; @@ -2268,32 +2253,29 @@ begin end; procedure p6; -var i: integer; begin TaskText('Задание p6. Закрасить помеченные клетки, составив процедуру Row, в которой Робот закрашивает ряд и возвращается назад'); Field(9,9); RobotBeginEnd(1,2,1,8); - for i:=1 to 4 do + for var i:=1 to 4 do TagRect(1,2*i,11,2*i); end; procedure p7; -var i: integer; begin TaskText('Задание p7. Закрасить помеченные клетки, составив процедуру Column, в которой Робот закрашивает колонку и возвращается назад'); Field(9,9); RobotBeginEnd(2,1,8,1); - for i:=1 to 4 do + for var i:=1 to 4 do TagRect(2*i,1,2*i,11); end; procedure p8; -var i: integer; begin TaskText('Задание p8. Закрасить помеченные клетки, используя процедуры Row и Column'); Field(9,9); RobotBeginEnd(1,2,8,1); - for i:=1 to 4 do + for var i:=1 to 4 do begin TagRect(1,2*i,11,2*i); TagRect(2*i,1,2*i,11); @@ -2301,13 +2283,12 @@ begin end; procedure p9; -var i,j: integer; begin TaskText('Задание p9. Закрасить помеченные клетки, используя процедуры Row и Column'); Field(15,15); RobotBeginEnd(2,2,6,6); - i:=2; - for j:=1 to 3 do + var i:=2; + for var j:=1 to 3 do begin TagRect(i,i,i+8,i); TagRect(i,i,i,i+8);i:=i+2; @@ -2315,13 +2296,12 @@ begin end; procedure p10; -var i,j: integer; begin TaskText('Задание p10. Закрасить помеченные клетки, составив процедуру Contour'); Field(31,7); RobotBeginEnd(2,2,26,2); - i:=2; - for j:=1 to 5 do + var i:=2; + for var j:=1 to 5 do begin TagRect(i,2,i+4,2); TagRect(i,2,i,6); @@ -2332,24 +2312,22 @@ begin end; procedure p11; -var i,j: integer; begin TaskText('Задание p11. Закрасить помеченные клетки, составив процедуру Punktir'); Field(15,11); RobotBeginEnd(1,1,1,11); - for i:=1 to 7 do - for j:=1 to 5 do + for var i:=1 to 7 do + for var j:=1 to 5 do Tag(2*i-1,2*j-1); end; procedure p12; -var i,j: integer; begin TaskText('Задание p12. Закрасить помеченные клетки, используя процедуру Punktir'); Field(16,12); RobotBeginEnd(2,2,3,11); - for i:=1 to 7 do - for j:=1 to 5 do + for var i:=1 to 7 do + for var j:=1 to 5 do begin Tag(2*i,2*j); Tag(2*i+1,2*j+1); @@ -2357,13 +2335,12 @@ begin end; procedure p13; -var i,j: integer; begin TaskText('Задание p13. Закрасить помеченные клетки, используя процедуру Punktir'); Field(17,14); RobotBeginEnd(2,2,2,14); - for i:=1 to 5 do - for j:=1 to 4 do + for var i:=1 to 5 do + for var j:=1 to 4 do begin Tag(3*i-1,3*j-1); Tag(3*i,3*j); @@ -2372,27 +2349,26 @@ begin end; procedure p14; -var i: integer; begin TaskText('Задание p14. Закрасить помеченные клетки, составив процедуры Row1 и Row2 для двух разновидностей рядов'); Field(17,15); RobotBeginEnd(2,2,2,14); - for i:=1 to 8 do + for var i:=1 to 8 do TagRect(2*i,2,2*i,13); - for i:=1 to 8 do + for var i:=1 to 8 do TagRect(2,2*i,16,2*i); end; procedure p15; -var i,j,n: integer; +var n: integer; begin TaskText('Задание p15. Закрасить помеченные клетки, составив процедуры Row1 и Row2 для двух разновидностей рядов'); n:=14; Field(25,n+1); RobotBeginEnd(2,2,2,n); - for i:=1 to 8 do + for var i:=1 to 8 do begin TagRect(4*i-1,2,4*i-1,n); - for j:=1 to 6 do + for var j:=1 to 6 do begin Tag(4*i-2,2*j+1); Tag(4*i,2*j+1); @@ -2429,12 +2405,11 @@ begin end; procedure pp1; -var i: integer; begin TaskText('Задание pp1. Закрасить помеченные клетки, составив процедуры с параметром RightN(n) и LeftN(n)'); Field(12,7); RobotBeginEnd(1,1,1,7); - for i:=1 to 8 do + for var i:=1 to 8 do HorizontalWall(2,i,12); Tag(7,1);Tag(9,2);Tag(5,3);Tag(4,4);Tag(11,5);Tag(2,6);Tag(7,7); end; @@ -2452,13 +2427,13 @@ begin end; procedure pp3; -var i,d: integer; +var d: integer; begin TaskText('Задание pp3. Пройти лабиринт. Составить процедуры с параметрами RightN(n), LeftN(n), UpN(n), DownN(n)'); d:=9; Field(d,d); RobotBeginEnd(1,1,5,5); - for i:=1 to 4 do + for var i:=1 to 4 do begin VerticalWall(i,i,d+1-2*i); HorizontalWall(i+1,d-i,d-2*i); @@ -2519,29 +2494,108 @@ begin TagRect(13,1,13,7); TagRect(15,1,15,7); Tag(14,2); end; +procedure br1; +begin + TaskText('Задание break1. Остановиться на указанной клетке. Использовать оператор break'); + Field(13,5); + RobotBeginEnd(2,3,12,3); + var xx := Random(3,17); + for var x:=3 to 12 do + if x <> xx then + Tag(x,3) + else + begin + HorizontalWall(x,3,1); + RobotEnd(x,3); + break; + end; +end; + +procedure br2; +begin + TaskText('Задание break2. Остановиться на указанной клетке. Использовать оператор break'); + Field(13,5); + RobotBeginEnd(2,3,12,3); + var xx := Random(3,17); + for var x:=3 to 12 do + if x <> xx then + Tag(x,2) + else + begin + HorizontalWall(x,3,1); + RobotEnd(x,3); + break; + end; +end; + +procedure br3; +begin + TaskText('Задание break3. Остановиться на указанной клетке. Использовать оператор break'); + Field(13,5); + RobotBeginEnd(2,3,12,3); + var xx := Random(3,17); + for var x:=3 to 12 do + if x <> xx then + begin + Tag(x,2); + Tag(x,3); + end + else + begin + MarkPainted(x,3); + RobotEnd(x,3); + break; + end; +end; + +procedure br4; +begin + TaskText('Задание break4. Остановиться на указанной клетке. Использовать оператор break'); + Field(13,5); + RobotBeginEnd(2,3,12,3); + var xx := Random(3,17); + if xx < 13 then + begin + HorizontalWall(xx,4,1); + Tag(xx,4); + RobotEnd(xx,4); + end; +end; + +procedure br5; +begin + TaskText('Задание break5. Остановиться на указанной клетке. Использовать оператор break'); + Field(13,5); + RobotBeginEnd(2,3,12,3); + var xx := Random(3,17); + if xx < 13 then + begin + MarkPainted(xx,2); + RobotEnd(xx,2); + end; +end; + + procedure examen1; -var i,j: integer; begin TaskText('Задание examen1. Закрасить помеченные клетки, составив процедуру Punktir'); Field(15,11); RobotBeginEnd(1,1,1,11); - for i:=1 to 7 do - for j:=1 to 5 do + for var i:=1 to 7 do + for var j:=1 to 5 do Tag(2*i-1,2*j-1); end; procedure examen2; -var i,j: integer; begin TaskText('Задание examen2. Закрасить помеченные клетки, используя процедуру Punktir'); Field(16,12); RobotBeginEnd(2,2,3,11); - for i:=1 to 7 do + for var i:=1 to 7 do begin - for j:=1 to 5 do + for var j:=1 to 5 do begin - Tag(2*i,2*j); - Tag(2*i+1,2*j+1); + Tag(2*i,2*j); Tag(2*i+1,2*j+1); end end end; @@ -2579,25 +2633,25 @@ begin end; procedure examen5; -var i,n: integer; +var n: integer; begin TaskText('Задание examen5. Закрасить все клетки в коридоре переменной длины'); n:=random(4)+10; Field(n,1); RobotBeginEnd(1,1,n,1); - for i:=1 to n div 2 do + for var i:=1 to n div 2 do Tag(i*2,1); end; procedure examen6; -var i,n,r1,r2: integer; +var n,r1,r2: integer; begin TaskText('Задание examen6. Закрасить помеченные клетки, используя 2 условных оператора в цикле'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); @@ -2615,14 +2669,14 @@ begin end; procedure examen7; -var i,n,r1,r2,r3: integer; +var n,r1,r2,r3: integer; begin TaskText('Задание examen7. Закрасить помеченные клетки, используя в условии "and" и "or"'); n:=25; Field(n,3); RobotBeginEnd(1,2,n-1,2); VerticalWall(n-1,2,1); - for i:=2 to n-1 do + for var i:=2 to n-1 do begin r1:=random(2); r2:=random(2); diff --git a/bin/Lib/TurtleWPF.pas b/bin/Lib/TurtleWPF.pas new file mode 100644 index 000000000..9d56f18bc --- /dev/null +++ b/bin/Lib/TurtleWPF.pas @@ -0,0 +1,170 @@ +unit TurtleWPF; + +{$resource 'turtle.png'} + +uses GraphWPF,WPFObjects,GraphWPFBase; +uses System.Windows.Media.Animation; +uses System.Windows.Media; +uses System.Windows.Media.Imaging; + +var + TurtleX: real := 400; + TurtleY: real := 300; + w := 24; // размер изображения Черепахи + +type + TurtleHelper = class(PictureWPF) + private + function CreateBitmapImageFromResource(resourcename: string): BitmapImage; + begin + var bi := new BitmapImage(); + bi.BeginInit(); + bi.StreamSource := GetResourceStream(resourcename); + bi.EndInit(); + Result := bi; + end; + procedure InitObFromResource(x,y,w,h: real; fname: string); + begin + var b := CreateBitmapImageFromResource(fname); + Rest(x,y,w,h,b); + end; + procedure AnimMoveByPE(a,b,sec: real); + begin + var v := CreateVisual; + var p := Center; + var (x,y) := (transl.X,transl.Y); + var ax := new DoubleAnimation(a + transl.X, System.TimeSpan.FromSeconds(sec)); + var ay := new DoubleAnimation(b + transl.Y, System.TimeSpan.FromSeconds(sec)); + ax.FillBehavior := FillBehavior.Stop; + ay.FillBehavior := FillBehavior.Stop; + var transl1 := transl; + ax.Completed += (o,e) -> begin + DrawOnVisual(v,dc->dc.DrawLine(GraphWPF.Pen.PenConstruct,p,Pnt(p.X + a,p.Y + b))); + transl1.X := x + a; // transl - ошибка с лямбдами! + end; + ay.Completed += (o,e) -> begin + transl1.Y := y + b; + end; + ax.CurrentTimeInvalidated += (o,e) -> + DrawOnVisual(v,dc->dc.DrawLine(GraphWPF.Pen.PenConstruct,p,Pnt(Center.X,Center.Y))); + transl.BeginAnimation(TranslateTransform.XProperty, ax, HandoffBehavior.Compose); + transl.BeginAnimation(TranslateTransform.YProperty, ay, HandoffBehavior.Compose); + end; + public + constructor (x,y,w,h: real; fname: string) := Invoke(InitObFromResource,x,y,w,h,fname); + procedure AnimMoveByE(a,b,sec: real); + begin + Invoke(AnimMoveByPE,a,b,sec); + Sleep(Round(sec*1000 + 50)); // 50 мс - За это время анимация должна закончиться + TurtleX += a; + TurtleY += b; + GraphWPF.MoveTo(TurtleX,TurtleY); + end; + procedure AnimRotateE(a,sec: real); + begin + AnimRotate(a,sec); + Sleep(Round(sec*1000 + 50)); + end; + end; + Colors = GraphWPF.Colors; + +var t: TurtleHelper; + +var + a: real := 0; + dr := False; + speed := 10; + +procedure SetSpeed(sp: integer); +begin + speed := sp; +end; + +var sl := 30; + +procedure Hide; +begin + t.Visible := False; +end; + +procedure Show; +begin + t.Visible := True; +end; + +/// Поворачивает Черепаху на угол da по часовой стрелке +procedure Turn(da: real); +begin + a += da; + if speed = 10 then + begin + t.Rotate(da); + Sleep(sl); + end + else + begin + if dr then + t.AnimRotateE(da,Abs(da/(60*speed))) + else + begin + t.AnimRotate(da,Abs(da/(60*speed))); + Sleep(Round(Abs(da/(60*speed))*1000)+50); + end; + end; +end; + +/// Продвигает Черепаху вперёд на расстояние r +procedure Forw(r: real); +begin + var v := r * Vect(Cos(DegToRad(a)),Sin(DegToRad(a))); + if (speed = 10) or (r < 20) then + begin + TurtleX += v.X; + TurtleY += v.Y; + if dr then + LineTo(TurtleX,TurtleY) + else MoveTo(TurtleX,TurtleY); + t.MoveBy(v.X,v.Y); + Sleep(sl); + end + else + begin + if dr then + t.AnimMoveByE(v.X,v.Y,r/(50*speed)) // 450 в секунду при скорости 9 + else + begin + t.AnimMoveBy(v.X,v.Y,r/(50*speed)); + Sleep(Round(r/(50*speed)*1000)+50); + end; + end; +end; + +/// Опускает хвост Черепахи +procedure Down := dr := True; + +/// Поднимает хвост Черепахи +procedure Up := dr := False; + +/// Устанавливает ширину линии +procedure SetWidth(w: real) := GraphWPF.Pen.Width := w; + +/// Устанавливает цвет линии +procedure SetColor(c: GColor) := GraphWPF.Pen.Color := c; + +/// Перемещает Черепаху в точку (x,y) +procedure MoveTo(x,y: real); +begin + TurtleX := x; + TurtleY := y; + GraphWPF.MoveTo(x,y); + t.Center := Pnt(x,y); +end; + +begin + Window.Title := 'Исполнитель Черепаха WPF'; + + t := new TurtleHelper(TurtleX-w/2,TurtleY-w/2,w,w,'turtle.png'); + //Pen.RoundCap := True; + MoveTo(TurtleX,TurtleY); + a -= 90; +end. \ No newline at end of file diff --git a/bin/Lib/WPFObjects.pas b/bin/Lib/WPFObjects.pas index 1c6a41804..875540d69 100644 --- a/bin/Lib/WPFObjects.pas +++ b/bin/Lib/WPFObjects.pas @@ -169,13 +169,13 @@ type ob: FrameworkElement; gr: Grid; // Grid связан только с текстом t: TextBlock; + ChildrenWPF := new List; + procedure InitOb(x,y,w,h: real; o: FrameworkElement; SetWH: boolean := True; Hidden: boolean := False); + protected transfgroup: TransformGroup; rot: RotateTransform; sca: ScaleTransform; transl: TranslateTransform; - - ChildrenWPF := new List; - procedure InitOb(x,y,w,h: real; o: FrameworkElement; SetWH: boolean := True; Hidden: boolean := False); public /// Направление движения по оси X. Используется методом Move auto property Dx: real; @@ -1233,7 +1233,7 @@ type // ----------------------------------------------------- /// Класс графических объектов "Рисунок" PictureWPF = class(ObjectWPF) - private + protected function CreateBitmapImage(fname: string) := new BitmapImage(new System.Uri(fname,System.UriKind.Relative)); procedure Rest(x,y,w,h: real; b: BitmapImage); begin @@ -1244,6 +1244,7 @@ type InitOb(x,y,w,h,im); end; + private procedure InitOb3(x,y,w,h: real; fname: string); begin var b := CreateBitmapImage(fname); diff --git a/bin/Lib/turtle.png b/bin/Lib/turtle.png new file mode 100644 index 0000000000000000000000000000000000000000..4562bc74b0a68bd20d4d03dccbc6c4608a119836 GIT binary patch literal 29176 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 literal 0 HcmV?d00001 diff --git a/bin/Lib/МозаикаABC.pas b/bin/Lib/МозаикаABC.pas new file mode 100644 index 000000000..b58b2e694 --- /dev/null +++ b/bin/Lib/МозаикаABC.pas @@ -0,0 +1,478 @@ +unit МозаикаABC; + +interface + +uses GraphABC; + +var Window := GraphABC.Window; + +procedure п; + +procedure к; +procedure кк1; +procedure кк2; +procedure кк3; +procedure кк4; +procedure кт1; +procedure кт2; +procedure кт3; +procedure кт4; + +procedure ко; +procedure кок1; +procedure кок2; +procedure кок3; +procedure кок4; +procedure кот1; +procedure кот2; +procedure кот3; +procedure кот4; + +procedure ж; +procedure жк1; +procedure жк2; +procedure жк3; +procedure жк4; +procedure жт1; +procedure жт2; +procedure жт3; +procedure жт4; + +procedure г; +procedure гк1; +procedure гк2; +procedure гк3; +procedure гк4; +procedure гт1; +procedure гт2; +procedure гт3; +procedure гт4; + +procedure ч; +procedure чк1; +procedure чк2; +procedure чк3; +procedure чк4; +procedure чт1; +procedure чт2; +procedure чт3; +procedure чт4; + +procedure б; +procedure бт1; +procedure бт2; +procedure бт3; +procedure бт4; +procedure бк1; +procedure бк2; +procedure бк3; +procedure бк4; + +procedure з; +procedure зт1; +procedure зт2; +procedure зт3; +procedure зт4; +procedure зк1; +procedure зк2; +procedure зк3; +procedure зк4; + +procedure с; +procedure ст1; +procedure ст2; +procedure ст3; +procedure ст4; +procedure ск1; +procedure ск2; +procedure ск3; +procedure ск4; + +procedure се; +procedure сет1; +procedure сет2; +procedure сет3; +procedure сет4; +procedure сек1; +procedure сек2; +procedure сек3; +procedure сек4; + +procedure о; +procedure от1; +procedure от2; +procedure от3; +procedure от4; +procedure ок1; +procedure ок2; +procedure ок3; +procedure ок4; + +procedure р; +procedure рт1; +procedure рт2; +procedure рт3; +procedure рт4; +procedure рк1; +procedure рк2; +procedure рк3; +procedure рк4; + +procedure ф; +procedure фт1; +procedure фт2; +procedure фт3; +procedure фт4; +procedure фк1; +procedure фк2; +procedure фк3; +procedure фк4; + +procedure Ряд(p: procedure); +procedure НарисоватьРяд(p: procedure); + +implementation + +var + w := 50; + z := 2; + x := 1; + y := 1; + +procedure Draw(x, y: integer) := Rectangle(x * w, y * w, w - z, w - z); + +procedure D(c: Color); +begin + Brush.Color := c; + Draw(x, y); + x += 1; +end; + +procedure Ц1(c: Color); +begin + Brush.Color := c; + Pie(x * w + w - z,y * w + w - z,w-z,90,180); + x += 1; +end; +procedure Ц2(c: Color); +begin + Brush.Color := c; + Pie(x * w,y * w + w - z,w-z,0,90); + x += 1; +end; +procedure Ц3(c: Color); +begin + Brush.Color := c; + Pie(x * w,y * w,w-z,270,360); + x += 1; +end; +procedure Ц4(c: Color); +begin + Brush.Color := c; + Pie(x * w + w - z,y * w,w-z,180,270); + x += 1; +end; +procedure Тр1(c: Color); +begin + Brush.Color := c; + Polygon(Arr(Pnt(x * w + w - z,y * w + w - z),Pnt(x * w + w - z,y * w),Pnt(x * w,y * w + w - z))); + x += 1; +end; +procedure Тр2(c: Color); +begin + Brush.Color := c; + Polygon(Arr(Pnt(x * w,y * w + w - z),Pnt(x * w,y * w),Pnt(x * w + w - z,y * w + w - z))); + x += 1; +end; +procedure Тр3(c: Color); +begin + Brush.Color := c; + Polygon(Arr(Pnt(x * w,y * w),Pnt(x * w + w - z,y * w),Pnt(x * w,y * w + w - z))); + x += 1; +end; +procedure Тр4(c: Color); +begin + Brush.Color := c; + Polygon(Arr(Pnt(x * w + w - z,y * w),Pnt(x * w,y * w),Pnt(x * w + w - z,y * w + w - z))); + x += 1; +end; + +//------ Соответствие цветов +var КрасныйЦвет := Color.Red; +var ОранжевыйЦвет := RGB(255,127,$00); +var ЖелтыйЦвет := Color.Yellow; +var ЗеленыйЦвет := RGB($00,$99,$00); +var ГолубойЦвет := RGB($61,$c3,$ff); +var СинийЦвет := RGB(0,0,255); +var ФиолетовыйЦвет := RGB($94,$00,$d3); + +var РозовыйЦвет := Color.Magenta; +var КоричневыйЦвет := RGB($96,$4B,$00); +var СерыйЦвет := Color.Gray; +var БелыйЦвет := Color.White; +var ЧерныйЦвет := Color.Black; + +//---------------- + +procedure Пусто := x += 1; + +procedure НовыйРяд := (x, y) := (1, y + 1); + +procedure Серый := D(СерыйЦвет); +procedure СерыйЦКруг1 := Ц1(СерыйЦвет); +procedure СерыйЦКруг2 := Ц2(СерыйЦвет); +procedure СерыйЦКруг3 := Ц3(СерыйЦвет); +procedure СерыйЦКруг4 := Ц4(СерыйЦвет); +procedure СерыйТр1 := Тр1(СерыйЦвет); +procedure СерыйТр2 := Тр2(СерыйЦвет); +procedure СерыйТр3 := Тр3(СерыйЦвет); +procedure СерыйТр4 := Тр4(СерыйЦвет); + +procedure Оранжевый := D(ОранжевыйЦвет); +procedure ОранжевыйЦКруг1 := Ц1(ОранжевыйЦвет); +procedure ОранжевыйЦКруг2 := Ц2(ОранжевыйЦвет); +procedure ОранжевыйЦКруг3 := Ц3(ОранжевыйЦвет); +procedure ОранжевыйЦКруг4 := Ц4(ОранжевыйЦвет); +procedure ОранжевыйТр1 := Тр1(ОранжевыйЦвет); +procedure ОранжевыйТр2 := Тр2(ОранжевыйЦвет); +procedure ОранжевыйТр3 := Тр3(ОранжевыйЦвет); +procedure ОранжевыйТр4 := Тр4(ОранжевыйЦвет); + +procedure Коричневый := D(КоричневыйЦвет); +procedure КоричневыйЦКруг1 := Ц1(КоричневыйЦвет); +procedure КоричневыйЦКруг2 := Ц2(КоричневыйЦвет); +procedure КоричневыйЦКруг3 := Ц3(КоричневыйЦвет); +procedure КоричневыйЦКруг4 := Ц4(КоричневыйЦвет); +procedure КоричневыйТр1 := Тр1(КоричневыйЦвет); +procedure КоричневыйТр2 := Тр2(КоричневыйЦвет); +procedure КоричневыйТр3 := Тр3(КоричневыйЦвет); +procedure КоричневыйТр4 := Тр4(КоричневыйЦвет); + +procedure Белый := D(БелыйЦвет); +procedure БелыйЦКруг1 := Ц1(БелыйЦвет); +procedure БелыйЦКруг2 := Ц2(БелыйЦвет); +procedure БелыйЦКруг3 := Ц3(БелыйЦвет); +procedure БелыйЦКруг4 := Ц4(БелыйЦвет); +procedure БелыйТр1 := Тр1(БелыйЦвет); +procedure БелыйТр2 := Тр2(БелыйЦвет); +procedure БелыйТр3 := Тр3(БелыйЦвет); +procedure БелыйТр4 := Тр4(БелыйЦвет); + +procedure Синий := D(СинийЦвет); +procedure СинийЦКруг1 := Ц1(СинийЦвет); +procedure СинийЦКруг2 := Ц2(СинийЦвет); +procedure СинийЦКруг3 := Ц3(СинийЦвет); +procedure СинийЦКруг4 := Ц4(СинийЦвет); +procedure СинийТр1 := Тр1(СинийЦвет); +procedure СинийТр2 := Тр2(СинийЦвет); +procedure СинийТр3 := Тр3(СинийЦвет); +procedure СинийТр4 := Тр4(СинийЦвет); + +procedure Фиолетовый := D(ФиолетовыйЦвет); +procedure ФиолетовыйЦКруг1 := Ц1(ФиолетовыйЦвет); +procedure ФиолетовыйЦКруг2 := Ц2(ФиолетовыйЦвет); +procedure ФиолетовыйЦКруг3 := Ц3(ФиолетовыйЦвет); +procedure ФиолетовыйЦКруг4 := Ц4(ФиолетовыйЦвет); +procedure ФиолетовыйТр1 := Тр1(ФиолетовыйЦвет); +procedure ФиолетовыйТр2 := Тр2(ФиолетовыйЦвет); +procedure ФиолетовыйТр3 := Тр3(ФиолетовыйЦвет); +procedure ФиолетовыйТр4 := Тр4(ФиолетовыйЦвет); + +procedure Красный := D(КрасныйЦвет); +procedure КрасныйЦКруг1 := Ц1(КрасныйЦвет); +procedure КрасныйЦКруг2 := Ц2(КрасныйЦвет); +procedure КрасныйЦКруг3 := Ц3(КрасныйЦвет); +procedure КрасныйЦКруг4 := Ц4(КрасныйЦвет); +procedure КрасныйТр1 := Тр1(КрасныйЦвет); +procedure КрасныйТр2 := Тр2(КрасныйЦвет); +procedure КрасныйТр3 := Тр3(КрасныйЦвет); +procedure КрасныйТр4 := Тр4(КрасныйЦвет); + +procedure Черный := D(ЧерныйЦвет); +procedure Чёрный := D(ЧерныйЦвет); +procedure ЧерныйТр1 := Тр1(ЧерныйЦвет); +procedure ЧерныйТр2 := Тр2(ЧерныйЦвет); +procedure ЧерныйТр3 := Тр3(ЧерныйЦвет); +procedure ЧерныйТр4 := Тр4(ЧерныйЦвет); +procedure ЧерныйЦКруг1 := Ц1(ЧерныйЦвет); +procedure ЧерныйЦКруг2 := Ц2(ЧерныйЦвет); +procedure ЧерныйЦКруг3 := Ц3(ЧерныйЦвет); +procedure ЧерныйЦКруг4 := Ц4(ЧерныйЦвет); +procedure ЧёрныйЦКруг1 := Ц1(ЧерныйЦвет); +procedure ЧёрныйЦКруг2 := Ц2(ЧерныйЦвет); +procedure ЧёрныйЦКруг3 := Ц3(ЧерныйЦвет); +procedure ЧёрныйЦКруг4 := Ц4(ЧерныйЦвет); + +procedure Зелёный := D(ЗеленыйЦвет); +procedure ЗелёныйЦКруг1 := Ц1(ЗеленыйЦвет); +procedure ЗелёныйЦКруг2 := Ц2(ЗеленыйЦвет); +procedure ЗелёныйЦКруг3 := Ц3(ЗеленыйЦвет); +procedure ЗелёныйЦКруг4 := Ц4(ЗеленыйЦвет); +procedure ЗелёныйТр1 := Тр1(ЗеленыйЦвет); +procedure ЗелёныйТр2 := Тр2(ЗеленыйЦвет); +procedure ЗелёныйТр3 := Тр3(ЗеленыйЦвет); +procedure ЗелёныйТр4 := Тр4(ЗеленыйЦвет); + +procedure Голубой := D(ГолубойЦвет); +procedure ГолубойЦКруг1 := Ц1(ГолубойЦвет); +procedure ГолубойЦКруг2 := Ц2(ГолубойЦвет); +procedure ГолубойЦКруг3 := Ц3(ГолубойЦвет); +procedure ГолубойЦКруг4 := Ц4(ГолубойЦвет); +procedure ГолубойТр1 := Тр1(ГолубойЦвет); +procedure ГолубойТр2 := Тр2(ГолубойЦвет); +procedure ГолубойТр3 := Тр3(ГолубойЦвет); +procedure ГолубойТр4 := Тр4(ГолубойЦвет); + +procedure Розовый := D(РозовыйЦвет); +procedure РозовыйЦКруг1 := Ц1(РозовыйЦвет); +procedure РозовыйЦКруг2 := Ц2(РозовыйЦвет); +procedure РозовыйЦКруг3 := Ц3(РозовыйЦвет); +procedure РозовыйЦКруг4 := Ц4(РозовыйЦвет); +procedure РозовыйТр1 := Тр1(РозовыйЦвет); +procedure РозовыйТр2 := Тр2(РозовыйЦвет); +procedure РозовыйТр3 := Тр3(РозовыйЦвет); +procedure РозовыйТр4 := Тр4(РозовыйЦвет); + +procedure Желтый := D(ЖелтыйЦвет); +procedure Жёлтый := D(ЖелтыйЦвет); +procedure ЖелтыйЦКруг1 := Ц1(ЖелтыйЦвет); +procedure ЖелтыйЦКруг2 := Ц2(ЖелтыйЦвет); +procedure ЖелтыйЦКруг3 := Ц3(ЖелтыйЦвет); +procedure ЖелтыйЦКруг4 := Ц4(ЖелтыйЦвет); +procedure ЖелтыйТр1 := Тр1(ЖелтыйЦвет); +procedure ЖелтыйТр2 := Тр2(ЖелтыйЦвет); +procedure ЖелтыйТр3 := Тр3(ЖелтыйЦвет); +procedure ЖелтыйТр4 := Тр4(ЖелтыйЦвет); + +procedure п := пусто; + +procedure к := красный; +procedure кк1 := красныйцкруг1; +procedure кк2 := красныйцкруг2; +procedure кк3 := красныйцкруг3; +procedure кк4 := красныйцкруг4; +procedure кт1 := красныйТр1; +procedure кт2 := красныйТр2; +procedure кт3 := красныйТр3; +procedure кт4 := красныйТр4; + +procedure ко := коричневый; +procedure кок1 := коричневыйцкруг1; +procedure кок2 := коричневыйцкруг2; +procedure кок3 := коричневыйцкруг3; +procedure кок4 := коричневыйцкруг4; +procedure кот1 := коричневыйТр1; +procedure кот2 := коричневыйТр2; +procedure кот3 := коричневыйТр3; +procedure кот4 := коричневыйТр4; + +procedure ж := желтый; +procedure жк1 := желтыйцкруг1; +procedure жк2 := желтыйцкруг2; +procedure жк3 := желтыйцкруг3; +procedure жк4 := желтыйцкруг4; +procedure жт1 := желтыйТр1; +procedure жт2 := желтыйТр2; +procedure жт3 := желтыйТр3; +procedure жт4 := желтыйТр4; + +procedure г := голубой; +procedure гк1 := Голубойцкруг1; +procedure гк2 := Голубойцкруг2; +procedure гк3 := Голубойцкруг3; +procedure гк4 := Голубойцкруг4; +procedure гт1 := ГолубойТр1; +procedure гт2 := ГолубойТр2; +procedure гт3 := ГолубойТр3; +procedure гт4 := ГолубойТр4; + +procedure ч := черный; +procedure Чк1 := ЧЕРНыйцкруг1; +procedure Чк2 := ЧЕРНыйцкруг2; +procedure Чк3 := ЧЕРНыйцкруг3; +procedure Чк4 := ЧЕРНыйцкруг4; +procedure Чт1 := ЧЕРНыйТр1; +procedure Чт2 := ЧЕРНыйТр2; +procedure Чт3 := ЧЕРНыйТр3; +procedure Чт4 := ЧЕРНыйТр4; + +procedure б := белый; +procedure бт1 := белыйТр1; +procedure бт2 := белыйТр2; +procedure бт3 := белыйТр3; +procedure бт4 := белыйТр4; +procedure Бк1 := белыйцкруг1; +procedure Бк2 := белыйцкруг2; +procedure Бк3 := белыйцкруг3; +procedure Бк4 := белыйцкруг4; + +procedure з := зелёный; +procedure зт1 := зелёныйТр1; +procedure зт2 := зелёныйТр2; +procedure зт3 := зелёныйТр3; +procedure зт4 := зелёныйТр4; +procedure зк1 := зелёныйцкруг1; +procedure зк2 := зелёныйцкруг2; +procedure зк3 := зелёныйцкруг3; +procedure зк4 := зелёныйцкруг4; + +procedure с := синий; +procedure ст1 := синийТр1; +procedure ст2 := синийТр2; +procedure ст3 := синийТр3; +procedure ст4 := синийТр4; +procedure ск1 := синийцкруг1; +procedure ск2 := синийцкруг2; +procedure ск3 := синийцкруг3; +procedure ск4 := синийцкруг4; + +procedure се := серый; +procedure сет1 := серыйТр1; +procedure сет2 := серыйТр2; +procedure сет3 := серыйТр3; +procedure сет4 := серыйТр4; +procedure сек1 := серыйцкруг1; +procedure сек2 := серыйцкруг2; +procedure сек3 := серыйцкруг3; +procedure сек4 := серыйцкруг4; + +procedure о := оранжевый; +procedure от1 := оранжевыйТр1; +procedure от2 := оранжевыйТр2; +procedure от3 := оранжевыйТр3; +procedure от4 := оранжевыйТр4; +procedure ок1 := оранжевыйцкруг1; +procedure ок2 := оранжевыйцкруг2; +procedure ок3 := оранжевыйцкруг3; +procedure ок4 := оранжевыйцкруг4; + +procedure Р := розовый; +procedure Рт1 := розовыйТр1; +procedure Рт2 := розовыйТр2; +procedure Рт3 := розовыйТр3; +procedure Рт4 := розовыйТр4; +procedure Рк1 := розовыйцкруг1; +procedure Рк2 := розовыйцкруг2; +procedure Рк3 := розовыйцкруг3; +procedure Рк4 := розовыйцкруг4; + +procedure ф := фиолетовый; +procedure фт1 := фиолетовыйТр1; +procedure фт2 := фиолетовыйТр2; +procedure фт3 := фиолетовыйТр3; +procedure фт4 := фиолетовыйТр4; +procedure фк1 := фиолетовыйцкруг1; +procedure фк2 := фиолетовыйцкруг2; +procedure фк3 := фиолетовыйцкруг3; +procedure фк4 := фиолетовыйцкруг4; + +procedure Run(p: procedure) := p; + +procedure НарисоватьРяд(p: procedure) := Run(p + НовыйРяд); +procedure Ряд(p: procedure) := (p + НовыйРяд); + +begin + Window.SetSize(1024,768); + //SetStandardCoords(1 / 1.25, 0.5, 0.5); + //pen.Width := 1 / 1.25; +end. \ No newline at end of file