Algoritmasını paylaştığım yılan oyunu C# Console Application projesidir. Tek yılız (*) ile başlayan minik yılanımız random koordinatta çıkan X işatli yemi yediğinde büyümeye başlıyor.
Uygulamaya ait görüntüler:
Kod kısmına gelecek olursak, space adında tanımlanan 2 boyutlu char değişkeni yılanın dolaşabileceği sınırları belli ediyor. Uygulama, X ve Y düzlemi olarak düşündüğüm 2 boyutlu space değişkenini her 250 mili saniyede bir yenilenecek şekilde consol’a yazıyor. space değişkeninin içinde random bir noktada yer alan ‘X’ yeminin koordinatları ile yılanın başının koordinatları çakıştığında, yeni bir ‘X’ yemi random olarak space‘e atanırken yılanın yıldız (*) sayısı yani boyutu da gidiş yönüne göre bir artıyor. Yön tuşları ise yılanın 250 mili saniyede bir space değişkeni içinde gittiği yönü belirliyor. Yani son basılan yön tuşu tarafına doğru space değişkenin sınırları bitene kadar gidiyor ve sınır bittiğinde çarparak uygulama kapanış ekranı açılıyor.
Uygulama kodları:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
static void Main(string[] args) { char[,] space = new char[15, 40]; ConsoleKey key; int yemX = 0, yemY = 0; bool yendiMi = true; string yon = "sag"; int yilanX = 7, yilanY = 20, yilanBoyut = 1; Console.WriteLine("Çıkmak için herhangi bir tuşa basmanız yeterlidir. \n\nBaşlamak için 'ENTER'"); Console.ReadKey(); while (true) { if (Console.KeyAvailable) { key = Console.ReadKey().Key; if (key == ConsoleKey.UpArrow) { yon = "yukari"; } else if (key == ConsoleKey.DownArrow) { yon = "asagi"; } else if (key == ConsoleKey.LeftArrow) { yon = "sol"; } else if (key == ConsoleKey.RightArrow) { yon = "sag"; } else { break; } } if (yendiMi) { Random rnd = new Random(); yemX = rnd.Next(0, 15); yemY = rnd.Next(0, 40); yendiMi = false; } if (yilanX < 0 || yilanX > 15 || yilanY < 0 || yilanY > 40) { Console.WriteLine("Çarptınız...\n"); break; } for (int i = 0; i < 15; i++) { for (int j = 0; j < 40; j++) { if (i == yemX && j == yemY) { space[i, j] = 'X'; } else if (!(i == yilanX && j == yilanY)) { if (space[i, j] == '1') { space[i, j] = ' '; } } else { if (yon == "sag") { for (int k = 0; k < yilanBoyut; k++) { space[i, j - k] = '*'; } } else if (yon == "sol") { for (int k = 0; k < yilanBoyut; k++) { space[i, j + k] = '*'; } } else if (yon == "yukari") { for (int k = 0; k < yilanBoyut; k++) { space[i - k, j] = '*'; } } else { for (int k = 0; k < yilanBoyut; k++) { space[i + k, j] = '*'; } } } } } for (int i = 0; i < 15; i++) { for (int j = 0; j < 40; j++) { Console.Write(space[i, j]); space[i, j] = '1'; } Console.WriteLine(); } if (yemX == yilanX && yemY == yilanY) { yendiMi = true; yilanBoyut++; } if (yon == "sag") { yilanY++; } else if (yon == "sol") { yilanY--; } else if (yon == "yukari") { yilanX--; } else { yilanX++; } Thread.Sleep(250); Console.Clear(); } Console.WriteLine("\n///////////////////////////////\n\n{0} kere yemi yediniz...\n\n///////////////////////////////", yilanBoyut - 1); Console.ReadLine(); } |
Olmuyo kopyaladim
C# dosya halinde indirebilcegim link varsa atarmisin
Githubdan indirme linki:
https://github.com/fatihyldrim/console-snake
Dizin, dizi sınırlarının dışındaydı diyo ne yapmalıyım?
4. satırdaki space dizisinin değerlerini yükseltmeyi deneyin.
2017 den yapın Thread yı düzeltin
bencede yıl olmuş 2020 tabi daha ssatler var ama olsun
thread düzeltin acil
Thread için “using System.Threading;” kütüphanesini eklemeniz gerekli 2017 veya herhangi bir yıl sürümü ile alakalı bir durum değil.
Bu arada siz’de kodu düzeltip güncelleyip daha iyisini yaparak gönderebilirsiniz. Yeni versiyonunu sizin adınız ile yayınlarız 🙂
Aşağıdaki linki kullanabilirsiniz:
https://kodblogum.com/yazi-gonder/
cocuha nazar deyer abiya