From 3dff805e9bf157e9481117b5e9ca74d808b1ffb8 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Thu, 26 Mar 2026 20:04:24 +0100 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=BA=D0=BE=D0=BD=D1=87=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=81=D0=BE=D0=BA=D0=BE=D0=B1=D0=B0=D0=BD=20=D0=B8?= =?UTF-8?q?=D0=B7=207-=D0=B9=20=D0=B3=D0=BB=D0=B0=D0=B2=D1=8B,=20=D1=82?= =?UTF-8?q?=D1=80=D0=B5=D1=82=D1=8C=D0=B5=D0=B3=D0=BE=20=D1=83=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B6=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../7/3_sokoban/Sokoban.lps | 109 ++++++---- .../7/3_sokoban/Unit1.lfm | 201 +++++++++--------- .../7/3_sokoban/Unit1.pas | 13 +- .../7/3_sokoban/assets/1.slv | 12 ++ .../7/3_sokoban/assets/2.slv | 12 ++ .../7/3_sokoban/assets/3.slv | 12 ++ .../7/3_sokoban/{1.slv => assets/backup/1.slv.bak} | 0 .../7/3_sokoban/{2.slv => assets/backup/2.slv.bak} | 0 .../7/3_sokoban/{3.slv => assets/backup/3.slv.bak} | 0 .../7/3_sokoban/assets/graphics.png | Bin 0 -> 1337 bytes .../7/3_sokoban/{graphics--numbers.png => assets/numbers.png} | Bin .../7/3_sokoban/graphics.bmp | Bin 4810 -> 0 bytes 12 files changed, 209 insertions(+), 150 deletions(-) create mode 100644 Занимательное программирование/7/3_sokoban/assets/1.slv create mode 100644 Занимательное программирование/7/3_sokoban/assets/2.slv create mode 100644 Занимательное программирование/7/3_sokoban/assets/3.slv rename Занимательное программирование/7/3_sokoban/{1.slv => assets/backup/1.slv.bak} (100%) rename Занимательное программирование/7/3_sokoban/{2.slv => assets/backup/2.slv.bak} (100%) rename Занимательное программирование/7/3_sokoban/{3.slv => assets/backup/3.slv.bak} (100%) create mode 100644 Занимательное программирование/7/3_sokoban/assets/graphics.png rename Занимательное программирование/7/3_sokoban/{graphics--numbers.png => assets/numbers.png} (100%) delete mode 100644 Занимательное программирование/7/3_sokoban/graphics.bmp diff --git a/Занимательное программирование/7/3_sokoban/Sokoban.lps b/Занимательное программирование/7/3_sokoban/Sokoban.lps index 3049fbb..2f6934f 100644 --- a/Занимательное программирование/7/3_sokoban/Sokoban.lps +++ b/Занимательное программирование/7/3_sokoban/Sokoban.lps @@ -8,7 +8,7 @@ - + @@ -17,35 +17,56 @@ - - - - + + + - + - - + - + - - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -53,123 +74,123 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + diff --git a/Занимательное программирование/7/3_sokoban/Unit1.lfm b/Занимательное программирование/7/3_sokoban/Unit1.lfm index 0d9094b..4dceb4f 100644 --- a/Занимательное программирование/7/3_sokoban/Unit1.lfm +++ b/Занимательное программирование/7/3_sokoban/Unit1.lfm @@ -1,7 +1,7 @@ object Form1: TForm1 - Left = 774 + Left = 526 Height = 576 - Top = 526 + Top = 454 Width = 960 BorderIcons = [biSystemMenu, biMinimize] BorderStyle = bsSingle @@ -50,106 +50,103 @@ object Form1: TForm1 Left = 84 Top = 12 Bitmap = { - 4C7A120000002000000020000000540C00000000000078DAED5D79AC5F4515FE - 416929A4C866444005A906D08A2D90B049A1205048150B84C568341291402085 - 420394D85B903F301521981051D0A4568D60D8A4A041FBA0153454446CA0C822 - 2D7BA12C852A7D409F33E59B3A6FDECCDC997BE7CCDCBE774E72D2BE3BF7CE37 - EB99F3CDF6EBF57A033D5656565656565656565656565656565656D64E69E5D0 - 5C98030EA54A8B0FD397161A6C97A44F431584EB4F4745861D12D63C0D95337E - 579DBBDF4B875FD7EED2E037C34E978630FCBAE729F1C3EBDAF5DDA68D5FBAFC - F3B6BFD2FDAF5BF6A78CFD2D3DFE7461FCED82FFD105FFAB0BFE272B2BABD2BE - BEBE8DFFBA940253A914571A94A44A832F7E5DABAADAA0B6F2C981AFDE9769B0 - 954D2C9ECA8BAF9E6DE9309FC5D6852D5F322D66BE7571A52DA60C54FDE97977 - 95A5994F332D66FB34D3E8CBB39E8E90E7BEB2E8C161A9EB1766FCB67FCDB49A - 79B5958BAFEDD8B0F57277E53554F57663E299FD45D7D0F6EC6A0375EFE9F6A1 - 0BF8663D9975DF545DEDC365AF4CFC2678B63CDBDABFB20D66BE75FB9DA20C42 - EBBF6E2C75955FE83BA6D8FA83D9FE7CEDC0AC37D778A4F73F5FFBD3ED8BAD4D - C4968B2F7D2EFC3AFB178A5F67A36D6340697C57FBD7E333DF6DDB27EAC65F13 - A78D5D32FD8750BF23B44FFBD2646B8F757EB5996F57FBB0A531A49C42FC30D7 - F7B6B4B5A9F73A7EA1DB485FFBAB6B3FB17EB82D3ED3378E298B26BE7F2AFC36 - FCC3E59398BE2135FFF3D5873E9EB332FF67FEDF9EFFDB7CC40F9ED9E75F53D8 - 7DB71D899B7F6ECBFF87E6377EFEDDD747EAF2ECC38E5D7F08E917B6F123D5FA - 4B13FE9F7AFD2996FFA75E7FF3F19F18FCA6EB8F75FC6B70B9D0ACBF86F27FAA - F5E770FE4FB3FE1ECAFFA9F043F93F55F987F37FDAF617C2FF29FA5F0CFFA7B0 - 3F31FC9FC2FEC6F07F8AF12796FF9B7DA1C9F8DB84FFDB7D9F78FFA32917B5CD - 4134F1BF52F002B73F365429F8BF692BCC30E6FFCCFF878DCA32CCA19B68F9D8 - D64243C2183FBC6F0FE581F6BEAF87FBC242E20E52F94D8C26CEFF863843FB57 - C2FC6F7C3FB28FC7E2D4AD6FC6E2D7ADE1740DBFAE5CDAE0B7297F67FD9BBE9F - A7FEDB94BF756C72F99F8E3126297E1D076E881F3C363B38910FBF4DFD0FC2EF - F9F9D0A0345094BF877F94C61FD20E29EABF213E75FDA7C87F1A7C8427C41F62 - FFBC69A81ADBBF60FBEFE4E1D520FC54F6DF3AFEB8F6DFE71C7F3DD829C7DF8D - F518E97F35F5B3BAE6FF35F28109FCFF14F30614710F17DD24CABF64FB2BCDBF - 88ED4FBCFDF5FBFFA4F63FC0FF27E35F81FE3F19FF0AF4FF49F8D730F6FFD9FF - 1ED9FE7F1CFFAEF7FF49EA3FC2FF279BFF08F4FFC9F857A0FF4FC6BF32CFBF8D - F4F9CF5CF3CF9DE75F85D71F8AAFBFF0FA5B717C5E7F66CD391F61DF1BD9F39E - D1F2FD6D8BF7FFBE25E3337E41BB17B1FF2AD4C6077FD741FC4AF76552D97D97 - 6F04FC213E4A2876C87AB4C73FEC59CEA96C68AF75F8A17B4103F1A3F2EFE1E1 - D6FDB001F8D6FA7762D7E33BD31080EFF5F923F6E35AD7E693E037D8139CBCFC - 63D25011B4BF0825E97F0DB053E53F763EA669FFCB687F79FCEB8EFFC1FEE708 - C22FCDBF5899EB8FB4B6AEF579C62F8BDF25CE4FEE6B74199FC8DF0CAA7F2FD7 - 88E4F78EBD3883D63E42F09BF27B03DFBAF65687DF86DFB7CD7F5B7E6FC18FAA - FFB6FCDEC7B582F15BF0FB64F80DF97DDBF26FCBEF93F5BF96D86DFA5F1B7EDF - 24FFA5ED2F8F7FC5FC0FF63F199FB97E19ED8234BDBFD576B76FCCFDCC21DFEB - E3A71A4F6CDF57C67B4DD26FC6DF34FF1BEFF0F1DCC3DB35FC21F7A404A423B6 - FEBBFABD6D7F5AA8A6F8BE6B7DDFD5C7A8EAC8D7D6CC366ABD0FA8E5F7BEFE67 - BDBFDC75C78EF6BDAB8F877E9F13BFCA54FE5DB411B9FA7857FB7FD7ED77AFAA - 92F90FB1E37FDD18D874FC0E1DFF73E257015894B69DC7FF6EF6FD2E8FFFA69F - 6BCB93EBFB9E631C0B1D7F2BCFF775362AC5F89F12BF6D1F4DE57F8DC4F1BFC7 - C2C2B2C989E8D2E7097D1743CE5E1971B7117A93318CEF9509FBB342970B7D0F - F97F2733FE2D425F117A04FECE8D3F47E86EDADFEFE4AE7F233D8CCFF88CCFF8 - C31E5F608C17BAD4D0F5C05F663C1F4F803F2182564F600F8985858585856558 - F1FE8942E70B7D5668BFD03785FE157C783431F6D7B53987D7843E20F409CDEF - 582C742CA1FFA5FCBDEF0BDD520B3B42E85A845D48847F05E2BFDF11FE3D842F - 21C29F8C3A3ECA117E22F09F2AD42ECFA0CC7F0DF66642FF0CFCF30AE0CF02F6 - E354EDDF837D2178C86AA17B67C41D25F43AE4FB45A1FB64C4FE90D0BB35EEB5 - 5B46EC6D853E04ECDFCBB464C4DE5A6BE70BA8EDBD057F01B0E53CE8A8CCD853 - 81BD52E8B8027DFC0FC05F65990730F56304F84B23F8FFA7D853626161616161 - 1956FCFF30A1BF85CFFD2EF8FF5F84CEA4E61E22FED99A8FF1027CD127B5677F - 93FB0388B00F01CF795FE8E992F319DC780DD2309708FFE788FF278EF0B9087F - 80087F8AD0EFB8D676C4F36F51E207A4EFD7C0BF3A23A6DC8B3249E88DC0FE97 - D01D33E0EE6EF8DBB20F5C928B97089C5DC07B9F810D90FDE2EF424F2E50EFA3 - 857E43E8CB288B8B0BDA4529FF15BA5DA134BC8E344C21986B91F38B3708FDA4 - E71D353F7A3841DE949D9FED083F54EB0F1F25C03F1F71CB3C9E6AD8FF89E8FB - 52EE22AADB51187795BC8C79F7A7B57D004F53707F231D270B5D087CD9F7DFC2 - B8FBDD9C73512C2C2C2C2C2C2C45E7032683134B392933F638F83C0385F0AF07 - EEF3B9F105D671C0BC5DE8CD39F105CE0E987F916BBE3B17C0575CFF14FC9D0D - 5F6202EB57DAB32CF828EBD5686FDB17C0BF1338538DE7E4F822EE6F03E33A4B - 1829BEE4BCE0398FCA35F002F833238F35FF2231FE979047973EA7E6FEF0F7B9 - 99EDF0CD25EC3FE377039F858585858585856C8C1F1BE87B7E9390FB0C60CDC1 - B7F7711A11FEDEC07FA650F91F04FC870BE11FABAE172A847F1AF06F2D847F16 - F0E5DCC345B21E84FE07E73EE4FF2F16BA1521FE25463F93EB8D8BB006AF44EE - 0BDF9608FF52A12F619DFF2023EC286DFD7D7EA1FA3901F8722EF2C305F04761 - ED5FCAD185CAE059E04F27887B73ECFB18ED08DF529B073E98007F25E23EDD11 - AECEFFACD1CF6625C457E7AF5E37F75760EFC76A845F4638FEF6697D5D9E7BFB - 93D0C7B46792876F41DCC6E5DE877B501FF2FCDFAB388732684F040B0B0B0B0B - 0BCBB09B0B982EF48F38832FD7C51E01271A97017B1E7C9DF5D87778BFE6772F - 26E6606AED57AE774DD49EEF82B541293389B037D3F6C04EB1841F867DE8A711 - E11F5078FE419D71FF41217C75FE429E81F88C5CFF071F5E27EF3C40BBDC8110 - 5F9D379F8739871538072DE700DED638C14788F0176BFCFA4A9D67E03CC23273 - 5F4462FC7B11FF3F2517B5844F46F87B14732022CE3B10FF8F3DFD53D9A14308 - F0AF41DC3FF5BCB3826AFE41C4F935DFFD1AE086FD78671201FEF6DAF9824996 - F0AF20EC2DAA7B09B4B147CEF7EDAA3D1FAFED439B476803C6A2BFAB73268B70 - 064E95FB12CAF10F69D802F7C03C04BBB316FFBF8062DE85858585858585A528 - E75F52F2FE1FE9F706DC7BA4D69F3E51A07C4EA1E43F01BEB1E4A26F509C7D0D - C057F7B0CD2880FD3970BEE5946B5F1EFCBB90F7E30B601F08ECA5856CC2EDC0 - FF6A01ECDDD1DF5F29C13BE44F1A21EFD7162A7B35DF724C01EC5D81BDAE50D9 - 2B5BFB8F42657F39F07F59087F3EF0AF29DCEF2F67CF8885858585856544CC03 - 1C29F7601BF7FFC9739F33848E21C69EABADFD2FC27D54B7200D521EA4BA8348 - C4BBBF76FEE070236C47DCBD2EE54A22FC3988FF6E47F8D9087F8498EF2C7084 - ABFDF9CB88F08F56BF2F606B67E2D90F117E7D06BF57B6B97DB01E27F77E9C8B - 35B81729E79E70D7DD2CCCF3987203F5BC177EE7E209F4BFFBB0DFE40EEC8996 - EB805751DDCB8E3BD6FA81F3054BFFEBA3BCFF51BB7BAD72847F1AE1FD147740 - 6AE73C8EF1BCA3ECE0A104F8AB10F7973DEFA876F945027CB5FFE48A9AF297F2 - 71027C75BFE95AF37C037E936121C2EF216A7F727FC9CFB4F14FF5BF5B310736 - 8036426D03E4DEBFDF69F7FFADC1FAFF1CAAB3472C2C2C2C2C2C2CC5F9BF5C73 - FC0DEE7FEB871F7093D07D33609FA9ADF1AFC4F9C7151A2F9F4E883D41FBEDC1 - 19C6FDCFE76B7B4F7722C2FF510DFF5F487CFEF441B5FFDD113E8D724D4EFB9D - C7698EF03DB5763086007F694DFEF7D0F8C71E04F86A8FC59D8EF07334FCCF13 - E0EFA7DD337E86113615DC731DC2F7239E031BC0799BDB701E60006BB2EA0CF6 - 9E8476E024EC857A1B79BE17770F8CC13E948112F7FF633E6AC3EFA2141A1766 - F9E60713C47F30F680CDB6846D25F4DFC03F8EB07CD7A38D1FAB3DDF1AE3A194 - FB88CBF82AADFD3FAC9DC153BF01B273867A3E156D7E15CE202CC7DD08DBF458 - 58585822E47F110951EA + 4C7A120000002000000020000000FD0B00000000000078DAED5D69AC5E4519BE + 585A0A29B2191590450A01B4D4564CD8A4501428A48845C2160C06221A8DA450 + 68841A7BCAF2035340220911454C6A950006642948C05E68590C150B365A4591 + 96BD589142955EB09F33F80C9D3B7766CECC39F3CE9CDEFB3EC99BF69EF9BE79 + E6CCFA3EB37D7D7D0C0683C16030180C0683C16030180C46D750F5EC968BB3E7 + 30AAB4F8387D69A1E176217D1AAA205E7F3A9AA6A19E3B24AC791A2A67FCAE32 + 777F2E1D7F5DBD4BC3DF8C3B5D1AC2F8EB9EA7E40F2F6BD7F7366FFED2F99FB7 + FE956E7FDDEA7FCAF4BFA5C79F2E8CBF5DF03FBAE07F75C1FF643018EFB7C0EA + FF6D4EFEEB320ACE4D710FFED70CDB149E96D78CDFF6DC96B6D2FC316918FA79 + 5F19D73F8B2D0BDF7B0DCE53775EB8F229A66E9B79D9678BBF26EF43CBC2FABE + 81E5EECB8B21EFD0E7E6AF4BBF2DFF7DE55DD747B8F2BBAE5C43CD5A86D636E9 + E70C7D3F57FEB8FEDF157E7778FBFCF7C563F62F7D55BB72AFAB9F43EB82D9DF + F9F330455EF8CA3F2ABEC0B4D9DAAFADFC43F22F24AF43FBA490F69FAADD87D6 + 7FBDDFADEBBF43CBDA9F67764D5315E00F2BAF747D43ECFBB7ED975C75BFCEEF + 886DD3E1F5B1DEF7F0F93F756D3374ECADD3D721EF1DDD7745EA0BDFFBFB7C9D + 363E709DD6F1F9A3A9F5500A7E4A0DE4F65BF2694F9E0B62FDCFFA3F9FFEF7E9 + 356AFD1F3E079D58FF379A836FAFFFDBAF41B4D3FF29D6609AEAFFB46B5071FA + 3FF51A5CACFE4FBD0619A3FFA9D66043F53FDD1A7498FEA75A830FD5FF747B00 + C2F43F55FEC7E87FAAFA17AAFFD3EF0188D3FFE9F700C4E9FFD4FD6F53FD9F66 + 0F4073FD9F62FC4DA3FFE3FD8F94FA3FD4FFCAA5FF437C50D6FFACFF198190FD + 570EDB8CE73CFAFBFB9DFAC915C6FCF1FD8BCD3FD1396CFEAB2D2C24EEC004F6 + A22CF1FBBF176768FB4AF8FEEF7F3EB28DC7F2C8B2334D7F1ECB6F8BC38CBB4B + FC75F9D286BF4DFE3BCBDFF4FB3CE5DF26FFAD6393CBF7748C3149F9EBF46F43 + FEE0B1D9A1877CFC6DCA7F107F9F5F0B0D4A0345FE7BB44769FE21F590A2FC1B + F253977F8AF74FC38FF084FC43FA3F6F1AAAC6FD5F70FFEFD4E0D520FE54FDBF + 75FC7169EF9CE3AF873BE5F83B68BF5584FFD5D4CFEA9AFFD7C80726F0FF53CE + 5D506AA4CD59DB763EFF4BD6BFD2FA8BB8FF89EF7FFDFE3F69FF1FE0FF93E9AF + 40FF9F4C7F05FAFF24FA6B18FBFFEC7F8F6CFF3F4E7FD7FBFF24E51FE1FF93CD + 7F04FAFF64FA2BD0FF27D35F99E7DF46FAFC67AEF9E7CEEBAFC2EB0FC5D75F78 + FDAD383FAF3F3372CE47E8FFBAC69398BF6DF16EF22D999FF90BF67B01FDBEB2 + 983D7441DFEB207FA5FB32A9FA7D976F047EEB19EBA0F124603DDAE31F2AFE21 + 3E721D7FE83ED040FEA8F7F7E870EB5ED8007E6BF93BB9ABC8FDD771FC5E9F3F + 622FAE756D3E097F83FDC0C9F3BF8A3B0B95BCFE451849FB6BC09DEAFD63E763 + 9AB6BF8CFD2F8F7FDDF13FD8FF1C41FCA5F51783B5FE48ABEB5A9B67FEB2FC5D + D2FCE4BE4697F989FCCDA0F2F76A8D487DEFD88B3368ED2384BFA9BE37F8AD6B + 6F75FC6DF47DDBF76FABEF2DFC51E5DF56DFFBB456307F0B7D9F8CBFA1BE6F9B + FF6DF57DB2F6D792BB4DFB6BA3EF9BBC7FE9FE97C7BF62FE07FB9FCCCF5ABF58 + 332C0EDBFEAC1093E51AF37D932FE4FBFAF8A9C613DBF72BE3734DD26FC6DFF4 + FD555A5C71E969EE0ABF397E85A423B6FCBBFAFD367718A7F87ED7DABEAB8D51 + 9591AFAE9975B4B2F9D32DBFEF6B7FB6F4BBF8F4EFBBDA78E8F773F25799F2BF + 8B7D44AE36DED5F6DFF5FE5BAF5B6DFD87D8F1BF6E0C6C3A7E878EFF39F9AB00 + 2ECABE9DC7FF6EB6FD2E8FFFA69F6B7B27D7F7FB1CE358E8F85B79BE5FD747A5 + 18FF53F2B76DA3A9FCAF9138FEF30C0883B159CEDB9D2FEC1D0C39FB65E4DD56 + D8ADC630BE5F26EE4F0A5B29EC5DBCFFDB99F96F17F69AB0A3F0776EFEB9C2F6 + D0FE7E3B77F91BE9617EE6677EE61FF6FC8263BCB065866D04FF0AE3F97802FE + 0911B27A027B480C0683C1600C2BDD3F49D80261CF0B1B10F686B0DF420F8F26 + E6FEB236E7F04F618F097B46F33B96081B4BE87F297FEF7BC2B6D2C28E12B61E + 611711F15F81F81F75845F8EF0A544FC5350C6473BC2BF04FEBF15AA97E752BE + 7F0DF716C21E01FFF905F86783FBCF54F5DFC37D1174C85A61FB67E41D25EC7A + BCF7CBC22666E4FEA0B0FB34EDB54746EEED843D09EE5FCBB464E4DE46ABE70B + A9FB7B0BFF4270CB79D05199B9A7817BB5B07105DAF8FDE05F63990730ED6304 + FCCB22F4FFDEEC2931180C068331ACF4FF11C27E099FFB1DE8FFC785CDA2D61E + 22FE399A8FF1127CD1BF6ACF7E27F70710711F069DF35F61E748CD6768E37548 + C33C22FE9F22FE1F39C2E721FC3122FEA9C2BEE65ADB11CFCFA6E40F48DFCDE0 + FF7E464EB91765B2B09F80FB2FC276CAC0BBA7E16FCB3670492E5D22787681EE + 7D0E7D806C17BF17764A81721F2DEC2C61AF222F2E2ED82F4AFC47D8F685D2F0 + 3AD2309560AE45CE2FDE28ECE39ECFA8F9D12309DE4DF5F3731CE1876BEDE1A3 + 04FC17206EF98EA719FDFF24B47D897B89CA7614C65D855731EFFEACB60FE059 + 0AED6FA4E314618BC02FDBFE9B1877BF9B732E8AC16030180C46D1F98029D0C4 + 122767E61E079FA75788FF06F0BE989B5F701D0FCE3B85DD96935FF0EC88F917 + B9E6BB73017EA5F54FC5DFD9F82527B87EA13DCBC28FBC5E8BFAB64301FE7BC0 + 33CD784ECE2FE2FE2A38AEB78491F24BCD0B9DF347B9065E807F56E4B1E69F25 + E63F01EFE8B217D4DC1FFE3E2F733F7C5B89FE9FF9BBC1CF6030180C06836C8C + 1F1BE87B7E8550FBF4B0E6E0DBFB389D887F7FF03F5728FF0F01FFF242FCC7A9 + EB850AF19F0EFE3B0AF17F03FC72EEE1DBB21C84FD1BE73EE4FF2F16B63521FF + 25463B93EB8D8BB106AF20F7856F47C4FF1D61AF609DFF1023EC686DFD7D41A1 + F23909FC722EF24305F84761ED5FE2984279F03CF86710C4FD01ECFB18ED08DF + 4A9B073E94807F35E23EC711AECEFFACD3CF6625E457E7AF5E37F75760EFC75A + 845F4A38FEF66B6D5D9E7BFB8DB03F69CFA40EDF92B88ECBBD0F0FA03CE4F9BF + 7FE01CCAA03D110C0683C1603086DD5CC00C610FE20CBE5C177B1A9A685C06EE + F9F0753662DFE1A39ADFBD845883A9B55FB9DE35497BBE0BD606256611716FA1 + ED819D6A093F02FBD04F27E23FA8F0FC833AE37E55217E75FE429E81F8845CFF + 871EDE20EF3C40BDDC91905F9D379F8F39875538072DE700DED234C18789F897 + 68FAFA4A5D67E03CC20A735F4462FE8710FF1FA416B5844F41F8BB14732022CE + BB10FF0F3DED53F5438711F05F8BB87FECF9CC2AAAF90711E799BEFB35A00D07 + F099C904FC3B68E70B265BC2BF88B037A9EE25D0C61E39DFB7ABF67CBCB60F6D + 3E611F3016ED5D9D33598C33702ADF97528E7F48C396B807E649F43BEBF1FF0B + 29E65D180C0683C16014D5FC4B4BDEFF23FDDE807B8FD4FAD3EE05F2E7544AFD + 13E01B4B2DFA2F8AB3AF01FCEA1EB69905B80F80E65B49B9F6E5E1BF17EF7E62 + 01EE83C1BDAC509F7027F8CF28C0BD27DAFB6B257487FC4923BCFB0F0AE5BD9A + 6F39B600F7AEE0DE5028EF555FFB54A1BCBF0CFC3F2FC4BF00FCD7166EF797B1 + 67C46030180CC6889807F89CDC836DDCFF27CF7DCE143686987B9EB6F6BF18F7 + 51DD8E34483C4175079188F733DAF983238DB09D70F7BAC49544FC7311FF7D8E + F06F22FC6962BDB3D011AEF6E7AF20E23F46FDBE80AD9E8967D720FC860C7EAF + AC7313B11E27F77E9C8735B89729E79E70D7DD6CCCF398B8917ADE0BBF73F10C + DADFC3D86F7217F644CB75C0ABA9EE65C71D6B03E0F9ACA5FDF553DEFFA8DDBD + 5639C2F741F800C51D90DA398F633D9F51FDE0E104FC6B10F7173C9F51F5F2F3 + 04FC6AFFC91535F92FB11B01BFBADF74BD79BE01BFC9B008E10F10D53FB9BFE4 + 266DFC53EDEF0ECC81F55047A8FB00B9F7EF6EEDFEBF7558FF9F4B75F688C160 + 30180C4671FD2FD71C6FC1FD6F03F0036E15F6E90CDC5FD7D6F857E3FCE32A4D + 97CF20E49EA0FDF6E04CE3FEE70BB4BDA71F21E2BFAE46FF2F223E7FFA84DAFF + EE089F4EB926A7FDCEE37447F8BE5A3D1843C0BFACE6FDF7D2F4C75E04FC6A8F + C53D8EF06F69FC9F22E03F50BB67FC5C236C1AB4E706841F483C07D6C3799B5F + E13C400F6BB2EA0CF6BE84FDC0C9D80BF516DEF921DC3D3006FB507A25EEFFC7 + 7CD47BBF8B52685C98ED9B1F4C10FFA1D80336C712B6B5B0BF83FF78C2FCDD88 + 3A7E9CF67C1B8C87120F13E7F1D55AFD5FAE9DC153BF01B27386723E0D757E0D + CE20ACC4DD08DBF631180C4604FE071237534E } end object OpenDialog: TOpenDialog diff --git a/Занимательное программирование/7/3_sokoban/Unit1.pas b/Занимательное программирование/7/3_sokoban/Unit1.pas index bdb2a92..22ad44d 100644 --- a/Занимательное программирование/7/3_sokoban/Unit1.pas +++ b/Занимательное программирование/7/3_sokoban/Unit1.pas @@ -30,7 +30,7 @@ type end; const - WALL = 11; SPACE = 10; BOULDER = 1; + WALL = 11; SPACE = 10; SL = 14; SR = 15; SU = 12; SD = 13; { Индексы спрайтов. } BOULDER_SET = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']; PLACE_SET = ['1', '2', '3', '4', '5', '6', '7', '8', '9']; @@ -115,6 +115,9 @@ begin bitmap := TBitmap.Create; { объект для временного хранения рисунка } Positioned := 0; { считаем, что размещено 0 камней } + Form1.BackBuffer.Canvas.Brush.Color := clBlack; + Form1.BackBuffer.Canvas.Clear; + for j := 1 to 12 do for i := 1 to 20 do begin @@ -206,6 +209,7 @@ procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; var dx, dy: Integer; { Смещения Сокобана (куда идем). } SprIdx: Integer; { Текущий номер его спрайта. } + TargetCell: Integer; begin if Busy then Exit; { Если обработчик занят, выходим. } @@ -241,8 +245,9 @@ begin dy := 0; SprIdx := Field[CurX, CurY] end; + TargetCell := PositionBy(dx, dy); - if PositionBy(dx, dy) = SPACE then { если целевая клетка пуста } + if TargetCell = SPACE then { если целевая клетка пуста } begin Field[CurX + dx, CurY + dy] := SprIdx; { переходим в нее } Field[CurX, CurY] := SPACE; { на старой позиции теперь ничего нет } @@ -250,10 +255,10 @@ begin CurY := CurY + dy; end { если целевая клетка содержит камень, а клетка, следующая за ней, пуста } - else if (PositionBy(dx, dy) = BOULDER) and (PositionBy(dx, dy, 2) = SPACE) then + else if (TargetCell > 0) and (TargetCell < SPACE) and (PositionBy(dx, dy, 2) = SPACE) then begin { двигаем камень: } Field[CurX + dx, CurY + dy] := SprIdx; { новая позиция Сокобана } - Field[CurX + 2 * dx, CurY + 2 * dy] := BOULDER; { новая позиция камня } + Field[CurX + 2 * dx, CurY + 2 * dy] := TargetCell; { новая позиция камня } Field[CurX, CurY] := SPACE; { на старой позиции - пусто } CurX := CurX + dx; CurY := CurY + dy; diff --git a/Занимательное программирование/7/3_sokoban/assets/1.slv b/Занимательное программирование/7/3_sokoban/assets/1.slv new file mode 100644 index 0000000..ae343ba --- /dev/null +++ b/Занимательное программирование/7/3_sokoban/assets/1.slv @@ -0,0 +1,12 @@ +xxxxxxxxxxxxxxxxxxxx +x x +x x +x a x x +x x x +x s x x +x x x +x 1 xx xxxx +x bx x +x x 2 x +x x x +xxxxxxxxxxxxxxxxxxxx diff --git a/Занимательное программирование/7/3_sokoban/assets/2.slv b/Занимательное программирование/7/3_sokoban/assets/2.slv new file mode 100644 index 0000000..e90e42a --- /dev/null +++ b/Занимательное программирование/7/3_sokoban/assets/2.slv @@ -0,0 +1,12 @@ +xxxxxxxxxxxxxxxxxxxx +x 1 3x +x x +x a x +x c x +x b s x +x d x +x 2 x +x e x +x 4 x +x5 x +xxxxxxxxxxxxxxxxxxxx diff --git a/Занимательное программирование/7/3_sokoban/assets/3.slv b/Занимательное программирование/7/3_sokoban/assets/3.slv new file mode 100644 index 0000000..169a590 --- /dev/null +++ b/Занимательное программирование/7/3_sokoban/assets/3.slv @@ -0,0 +1,12 @@ +xxxxxxxxxxxxxxxxxxxx +x1x x +x2x 4 x x +x x d x x +x x x +x x s c x x +x x x x +x x x x +x x a x x +x b x x +x x3x +xxxxxxxxxxxxxxxxxxxx diff --git a/Занимательное программирование/7/3_sokoban/1.slv b/Занимательное программирование/7/3_sokoban/assets/backup/1.slv.bak similarity index 100% rename from Занимательное программирование/7/3_sokoban/1.slv rename to Занимательное программирование/7/3_sokoban/assets/backup/1.slv.bak diff --git a/Занимательное программирование/7/3_sokoban/2.slv b/Занимательное программирование/7/3_sokoban/assets/backup/2.slv.bak similarity index 100% rename from Занимательное программирование/7/3_sokoban/2.slv rename to Занимательное программирование/7/3_sokoban/assets/backup/2.slv.bak diff --git a/Занимательное программирование/7/3_sokoban/3.slv b/Занимательное программирование/7/3_sokoban/assets/backup/3.slv.bak similarity index 100% rename from Занимательное программирование/7/3_sokoban/3.slv rename to Занимательное программирование/7/3_sokoban/assets/backup/3.slv.bak diff --git a/Занимательное программирование/7/3_sokoban/assets/graphics.png b/Занимательное программирование/7/3_sokoban/assets/graphics.png new file mode 100644 index 0000000000000000000000000000000000000000..39b8af109ace7b2ff5d63f538eab91e0b98d48a5 GIT binary patch literal 1337 zcmV-91;+Y`P)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUyFi=cXMF0Q*fB*mhfB=Ai0001hfB=91fPlcjz<_{&{{R30{{a90 z00030{{a60|NsC0|4$PpNdN!<32;bRa{vGf6951U69E94oEQKA00(qQO+^Rl0~Znq zCxaBv&j0`fQ%OWYRA}Din%i>gAPhyV;laxI!TRQ6jy>7!o9Nal03_)IgsjtcWcIvpgg%e#d2|qZV@7ekR!-N z5%swN>L?50Muiigc;R_QLJ5rtv8U|zj^cc@W6#@(jVc4|z-qv8*qg@Tk2Sz<)szfHwQh2?+pk zA=~{95U=sriM3fi@+5>K{dq5l;{0hv+4A# zl$QDAF$Cv2KjnN15P!bMfcyY%sjmR_LW}{a2c=0lJd8pC`Tl51m#+fkr{@WwD31#< zWQ`$Y%>mGa7-8=3*G&G3#fZ_j9KxKadWJG#@E7D*lCevgO;^hk~CrTkiDPnT~t3eTv<~bIS zZu;{);qV%yLSs^`(*Y{_*}1a&H4~t7CJ(v;)) zZdlpg8o(ur-BoIo2KZ&(bI@hJ}#+t;QyL19dutb}L^FfcTXM4FSE{YMh)1(eu*~yW6a?2bJj} zFH+Fitg?NO=ZrS9Z+G*n>OuW-$EHDL_wgD*dDSn=9c(w{49RnBCjCuK`URj>^`N_g z8RlA|C=r-yhuYl$<=e*)(mbb?!FCF2ZwqGY?u*@&T&2(|RWm<-uAzaWlkG-hL`dy! zeo&HqS#n*o)fg4+H%^>6TPzEzVwbAD+N}ulLenaDbc*_K0r~n*yq^*Cp?n_pZCOK* z3=vx4JFs_e>-;nzSMH$wd^q>nde9R<-`Ynt>AwPq?+gNT#D8SJyR|%g@5i^E%lgm5 vlIx@w!Hj+Q&k2KnZg|($iu50Bqk7OkWulq(vX0%g00000NkvXXu0mjfufbGT literal 0 HcmV?d00001 diff --git a/Занимательное программирование/7/3_sokoban/graphics--numbers.png b/Занимательное программирование/7/3_sokoban/assets/numbers.png similarity index 100% rename from Занимательное программирование/7/3_sokoban/graphics--numbers.png rename to Занимательное программирование/7/3_sokoban/assets/numbers.png diff --git a/Занимательное программирование/7/3_sokoban/graphics.bmp b/Занимательное программирование/7/3_sokoban/graphics.bmp deleted file mode 100644 index e6b59c58f4ed98dcd4472e928447ac253d90bc9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4810 zcmc&&v5wm~5T$Pqpnxqdx+^xu7P(JYU<(IGaX^}@uDLJK!Ub6bkPa!N&PXY2vA^IT zRlsKJe9d-@E8lxFq%A96*#Yj5@k-=qX!2?1aX8+$e|`DYhfdfO~+*fa1l^>0Db8!o~ z$>wp}G|uX$YMP?3mD5jAVB|94kk+?n;emIW7Gv|^1D*bPLzjFq;vb?ZyfJOVo&ja2 z@T}c(0lzF;xBP=`UP8Y6%#G1eJnEssVhzEUJk}|meeC~pJhQTVu|ro?jcuK80ZX5? z?yf9fCf&jNA(UkZh)Ejo9e7fl{IZU2<=e$>)nTWc_x*=5KLK65>qt1EkS(0rRTn%T z%knzmVf;GZ6m2K*I~gy`a*EHhUL<*_YJJzX)_ISw0;6-u{!(>32>@7zD;j zeSl|5*2p;ra%}Ltf7os}{RgpOUt!(afzDNdB>^nkMaSbVl<;ThBwiza6Hnp5?_C2j zQqyMr6*-5JTbf2PBOC$}2Z7D4xQ336n6Yi@mv7UT=3irp41QF26(uWhoX}V?}vCS_E!p+lX%fT z8E^JaAo#G`??&^HObY)HkHFa|p43-7%stcf5Afu8&_CQ)lseXR9iIvZ|782C_@w^$ zjO~^1WPYc7l;Q=SfR8)>u&?pr)YIpM;K4g2KHHoOU0q`>%Xn>Iru|Cu5BS^niNE9h zmiRo!_)Q;#&#A9`=G)>NMWvy*hLKABIaY$`elNNfhehoo{KI%b-`l}&erLG9zrmyX z{WE90S3Ie&`#se^4sCp<{=s@1zP{wc<9L#tc;K^)2h`VB8sx|1p8ybukoYI{)j#Lp z8J-umYqZqBx~s}o(6O1)c>?_#JQyeWI_>{c=S8Z2G+xK+)x-0Yby#D;otozn&ac6F zN*yvhKXbftJ_4S}^BsXY!Dk#`2o^%7^#%$<{<&>*zvy}HvfWZ2)fdFmX+F~Yd;-rf z_ps0R8_PjGRf^Rdd=dH&YIKIFjVGB^Pp1;CF(J_2b zzbhWeN9W;bS@xX5bLe4&E23D%uQ+`^)(`Mt$nf_M;x+9bse6dWW2+sle-6Pwll6U5 zNw|*a2Y5#O{y*>lP$Z@u(6PQVq|V{*=PCb~h+r+23m;o%qNDZdcy{Xijgi@MsE_}D aK>s8u&iHplB#O)*)Mfd*KdK$)pML@1Lwp7R