R10 platformunda bir öğrenci karakter koyarak harf yazdırmayla ilgili yardım istedi. İstekleri şu şekildeydi:
- Soldan sağa doğru karakter koyularak harf yazdırılacak
- * karakteri kullanılacak
- Çıktıdaki A harfinin üst köşeleri yani sol ve sağ üste bulunan * karakterini istemiyordu.
Çıktı ekranını 9×9 luk bir kare düşünecek olursak soldan sağa doğru yazdıracağımız için öncelikle 1×1 den 1×9 a kadar yazdırıp, ardından 2×1, 2×2, 2×3 şeklinde 9×9 a kadar gidecek şekilde iç içe geçmiş 1 den başlayıp 9 olana kadar devam eden for döngülerini oluşturdum. Ardından da setcursorposition (Console.SetCursorPosition(i, j);) komutu ile de karakterin yazdırılacağı konumu her yazım işlemi öncesinde denetledim ve setledim. Burada i, soldan; j de yukarıdan komutu olmaktadır. Konumu belirledikten sonra konuma “*” karakteri mi yoksa ” ” boşluk mu koyacak bunun için if koşullarını yazdım. İlk olarak yazmış olduğum if konuşu 1×1 ve 9×1 noktalarının boş olmasıydı. Şu görüntüyü verebilmek için:
if koşulu ile i == 1 && j == 1 || i == 9 && j == 1 yazarak, i nin ve j nin aynı anda 1 olduğu kareyle i nin 9 j nin 1 olduğu karelere geldiğinde ” ” yani boşluk yazdırdım. Ardından else if kullanarak A harfini oluşturacak diğer eğer koşulunu oluşturdum. ( if (j == 1 || i == 1 || i == boyut – 1 || j == boyut – 5) )
- j nin 1 olduğu satıra tamamiyle * koymuş olduk. Bu A harfinin üst çizgisi olmaktadır.
- i nin 1 olduğu satıra da * karakteri koyduk. Bu A harfinin sol çizgisidir.
- i nin boyut – 1 olduğu kısım da A harfinin en sağ çizgisidir.
- j nin boyut – 5 olduğu kısım da A nın orta çizgisidir.
Yukarıdaki kısımlara A nın köşe noktalarını da oluşturduğundan dolayı elseif kısmında yer verdim. Yani uygulama öncelikle köşe noktalarını kontrol eder, sonra A nın kalan kısımlarını oluşturur. 2 koşulu da geçtikten sonra her ikisinin olmaması durumunda da yine ” ” koyarak kare boş bırakılır.
A ve G harfi yazılışı için hazır kodlar aşağıda bulunmaktadır.
A harfinin yazılışı:
using System; using System.Threading; namespace ConsoleApp1 { class Program { static void Main(string[] args) { int boyut = 10; for (int i = 1; i < boyut; i++) { for (int j = 1; j < boyut; j++) { Console.SetCursorPosition(i, j); if (i == 1 && j == 1 || i == 9 && j == 1) { Console.Write(" "); } else if (j == 1 || i == 1 || i == boyut - 1 || j == boyut - 5) { Console.Write("*"); } else { Console.Write(" "); } Thread.Sleep(20); } } } } }
G harfi Yazılışı
using System; using System.Threading; namespace ConsoleApp1 { class Program { static void Main(string[] args) { int boyut = 10; for (int i = 1; i < boyut; i++) { for (int j = 1; j < boyut; j++) { Console.SetCursorPosition(i, j); if (j == 1 || i == 1 || j == 9 || j == boyut - 5 || j > 5 && i == 9) { Console.Write("*"); } else { Console.Write(" "); } Thread.Sleep(20); } } } } }