{"id":630,"date":"2026-06-10T15:09:08","date_gmt":"2026-06-10T12:09:08","guid":{"rendered":"https:\/\/timofeistoljarov.wordpress.com\/?page_id=630"},"modified":"2026-06-10T15:09:08","modified_gmt":"2026-06-10T12:09:08","slug":"snake-game","status":"publish","type":"page","link":"https:\/\/timofeistoljarov.eu\/wp\/programmerimine-1\/snake-game\/","title":{"rendered":"Snake game"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\"><strong>M\u00e4ngu kirjeldus<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antud projekt on konsoolim\u00e4ng Madu, mis on kirjutatud C# keeles. M\u00e4ngija juhib madu klaviatuuri abil. M\u00e4ngu eesm\u00e4rk on koguda toitu, mis ilmub juhuslikult m\u00e4nguv\u00e4ljal. Iga kord kui madu s\u00f6\u00f6b toitu, kasvab ta pikemaks. M\u00e4ng l\u00f5peb, kui madu p\u00f5rkab vastu seina v\u00f5i hammustab iseennast.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/timofeistoljarov.eu\/wp\/wp-content\/uploads\/2026\/06\/e4d78dae-e705-4106-8c68-63c8cf2b138a-1.png?w=343\" alt=\"\" class=\"wp-image-631\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/timofeistoljarov.eu\/wp\/wp-content\/uploads\/2026\/06\/4fb398e1-0f2f-4209-bea3-7d9b609f49d3-1.png?w=222\" alt=\"\" class=\"wp-image-632\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/timofeistoljarov.eu\/wp\/wp-content\/uploads\/2026\/06\/e07cf76f-3f7f-4b63-93db-fe8241ec0149-1.png?w=143\" alt=\"\" class=\"wp-image-633\" \/><\/figure>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\"><strong>M\u00e4ngu seaded<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Klass <code>ManguSeaded<\/code> m\u00e4\u00e4rab m\u00e4ngu raskuse, m\u00e4nguv\u00e4lja suuruse ja kiiruse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Raskusaste valitakse:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>switch (tase)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e4iteks:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Tase 1:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Laius = 40;\nK\u00f5rgus = 20;\nKiirus = 200;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Tase 2:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Laius = 50;\nK\u00f5rgus = 25;\nKiirus = 120;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Tase 3:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Laius = 60;\nK\u00f5rgus = 30;\nKiirus = 70;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"406\" height=\"330\" src=\"https:\/\/timofeistoljarov.eu\/wp\/wp-content\/uploads\/2026\/06\/fe800ee1-bfb4-4dcc-bac3-bf990b506fb5.png?w=406\" alt=\"\" class=\"wp-image-634\" srcset=\"https:\/\/timofeistoljarov.eu\/wp\/wp-content\/uploads\/2026\/06\/fe800ee1-bfb4-4dcc-bac3-bf990b506fb5.png 406w, https:\/\/timofeistoljarov.eu\/wp\/wp-content\/uploads\/2026\/06\/fe800ee1-bfb4-4dcc-bac3-bf990b506fb5-300x244.png 300w\" sizes=\"auto, (max-width: 406px) 100vw, 406px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\"><strong>M\u00e4nguv\u00e4lja loomine<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00e4nguv\u00e4lja piirid luuakse klassis <code>Kaart<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Piirid (takistused) salvestatakse listi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public List&lt;Punkt&gt; Takistused<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u00dclemine ja alumine sein luuakse ts\u00fckliga:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for (int x = 0; x &lt; laius; x++)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Selles lisatakse punktid:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Takistused.Add(new Punkt(x, 0, &#039;#&#039;, V\u00e4rvid.SeinaV\u00e4rv));\nTakistused.Add(new Punkt(x, k\u00f5rgus - 1, &#039;#&#039;, V\u00e4rvid.SeinaV\u00e4rv));<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Vasak ja parem sein luuakse ts\u00fckliga:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for (int y = 0; y &lt; k\u00f5rgus; y++)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ja lisatakse:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Takistused.Add(new Punkt(0, y, &#039;#&#039;, V\u00e4rvid.SeinaV\u00e4rv));\nTakistused.Add(new Punkt(laius - 1, y, &#039;#&#039;, V\u00e4rvid.SeinaV\u00e4rv));<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">K\u00f5ik seinad joonistatakse meetodiga:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public void Joonista()\n{\n    foreach (var p in Takistused)\n    {\n        p.Joonista();\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Punktide s\u00fcsteem<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Klass <code>Punkt<\/code> kirjeldab k\u00f5iki m\u00e4ngu objekte (madu, toit, seinad).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Olulised omadused:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public int X { get; set; }\npublic int Y { get; set; }\npublic char S\u00fcmbol { get; set; }\npublic ConsoleColor V\u00e4rv { get; set; }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Objekti joonistamine:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public void Joonista()\n{\n    Console.ForegroundColor = V\u00e4rv;\n    Console.SetCursorPosition(X, Y);\n    Console.Write(S\u00fcmbol);\n    Console.ResetColor();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Objekti kustutamine:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public void Kustuta()\n{\n    Console.SetCursorPosition(X, Y);\n    Console.Write(&#039; &#039;);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Toidu genereerimine<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Klass <code>Toit<\/code> vastutab toidu loomise eest juhuslikus kohas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Juhuslikud koordinaadid:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int x = rnd.Next(1, laius - 1);\nint y = rnd.Next(1, k\u00f5rgus - 1);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Toidu loomine:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Asukoht = new Punkt(x, y, &#039;@&#039;, V\u00e4rvid.ToiduV\u00e4rv);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Toidu kuvamine ekraanil:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Asukoht.Joonista();<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Enese hammustamise kontroll<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Kontrollitakse, kas madu on endaga kokku p\u00f5rganud:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public bool HammustasEnnast()\n{\n    return keha.Skip(1)\n                .Any(p =&gt; p.X == pea.X &#038;&#038;\n                          p.Y == pea.Y);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kui pea koordinaadid langevad kokku keha osaga, tagastatakse <code>true<\/code> ja m\u00e4ng l\u00f5peb.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/timofeistoljarov.eu\/wp\/wp-content\/uploads\/2026\/06\/9be35aff-db7a-4e87-86f9-a78e41d6e8d9-1.png?w=317\" alt=\"\" class=\"wp-image-635\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>M\u00e4ngu kohandamine<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/timofeistoljarov.eu\/wp\/wp-content\/uploads\/2026\/06\/53215d24-0eeb-47b5-856b-6e0ec99cdda4-1.png?w=146\" alt=\"\" class=\"wp-image-637\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Mao v\u00e4rv<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Madu v\u00e4rv m\u00e4\u00e4ratakse klassis <code>V\u00e4rvid<\/code> ning seda kasutatakse klassis <code>Uss<\/code>, kui luuakse mao keha osad:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>new Punkt(x, y, &#039;\u25cf&#039;, V\u00e4rvid.MaoV\u00e4rv);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">See v\u00f5imaldab muuta kogu mao v\u00e4rvi \u00fches kohas, ilma et peaks muutma iga kehaosa eraldi.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/timofeistoljarov.eu\/wp\/wp-content\/uploads\/2026\/06\/6965e69c-4311-4a0c-aac7-97d2ad6a8570-1.png?w=145\" alt=\"\" class=\"wp-image-638\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Toidu v\u00e4rv<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Toit luuakse klassis <code>Toit<\/code>, kus m\u00e4\u00e4ratakse selle s\u00fcmbol ja v\u00e4rv:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Asukoht = new Punkt(x, y, &#039;@&#039;, V\u00e4rvid.ToiduV\u00e4rv);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">See v\u00f5imaldab muuta toidu v\u00e4limust (n\u00e4iteks \u00f5un punaseks, t\u00e4heks v\u00f5i muuks s\u00fcmboliks).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/timofeistoljarov.eu\/wp\/wp-content\/uploads\/2026\/06\/38818db8-f226-43aa-9e68-f123f845825e-1.png?w=137\" alt=\"\" class=\"wp-image-639\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>M\u00e4nguv\u00e4lja (tausta) v\u00e4rv<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00e4nguv\u00e4lja seinad joonistatakse klassis <code>Kaart<\/code>. Seinte v\u00e4rv m\u00e4\u00e4ratakse samuti <code>V\u00e4rvid<\/code> klassis:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>new Punkt(x, 0, &#039;#&#039;, V\u00e4rvid.SeinaV\u00e4rv);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sellisel viisil saab muuta kogu m\u00e4nguv\u00e4lja v\u00e4limust, n\u00e4iteks muuta seinad siniseks, roheliseks v\u00f5i halliks.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Mul on ka eraldi v\u00e4rvi klass<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    public static class V\u00e4rvid\n    {\n        public static ConsoleColor MaoV\u00e4rv = ConsoleColor.White;\n        public static ConsoleColor ToiduV\u00e4rv = ConsoleColor.Red;\n        public static ConsoleColor SeinaV\u00e4rv = ConsoleColor.Yellow;\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>M\u00e4ngu kirjeldus Antud projekt on konsoolim\u00e4ng Madu, mis on kirjutatud C# keeles. M\u00e4ngija juhib madu klaviatuuri abil. M\u00e4ngu eesm\u00e4rk on koguda toitu, mis ilmub juhuslikult m\u00e4nguv\u00e4ljal. Iga kord kui madu s\u00f6\u00f6b toitu, kasvab ta pikemaks. M\u00e4ng l\u00f5peb, kui madu p\u00f5rkab vastu seina v\u00f5i hammustab iseennast. M\u00e4ngu seaded Klass ManguSeaded m\u00e4\u00e4rab m\u00e4ngu raskuse, m\u00e4nguv\u00e4lja suuruse ja [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":250,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-630","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/timofeistoljarov.eu\/wp\/wp-json\/wp\/v2\/pages\/630","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/timofeistoljarov.eu\/wp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/timofeistoljarov.eu\/wp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/timofeistoljarov.eu\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/timofeistoljarov.eu\/wp\/wp-json\/wp\/v2\/comments?post=630"}],"version-history":[{"count":0,"href":"https:\/\/timofeistoljarov.eu\/wp\/wp-json\/wp\/v2\/pages\/630\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/timofeistoljarov.eu\/wp\/wp-json\/wp\/v2\/pages\/250"}],"wp:attachment":[{"href":"https:\/\/timofeistoljarov.eu\/wp\/wp-json\/wp\/v2\/media?parent=630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}