pillinetwork hesabınızla giriş yapın.

Konsol Programlarında Çıktı Renklendirme ve GotoXY

Not: Anlatacağım yöntem sadece linux ve unix türevlerinde çalışmaktadır.

Konsol uygulamalarında kod renklendirme aslında birkaç standartlaşmış ascii koduna dayanmaktadır. Konsolun belirli bir noktasına çıktı yapmak da aynı şekilde bir dizi ascii kodu ile yapılmaktadır. Buradan da anlayacağımız gibi renk değiştirme ekrana çıktı komutu ile gerçekleştirilmektedir.

C için örnek

1
printf("%c[%d;%d;%dmRenkli Merhaba%c[0m", 0x1B, 1, 31, 40, 0x1B);

python için

1
print "\033[1;31;40mRenkli Merhaba\033[0m"

eğer doğru yazdıysanız ekrana kırmızı renkte çıktı verecektir.
şimdi yazdırdığımız şeye bir bakalım.
\033 (0x1B): Aslında kilit nokta burası. \033 karakteri ile konsola mesaj yolluyoruz. Bu ascii kodu çıktıyı farklı bir konuma yazdırırken de aynı olacak.
[: bu köşeli parantezimizde konsola gönderdiğimiz mesajın parametrelerini girmeye başladığımızı bildiriyor.
;: noktalı virgül ile de parametreleri birbirinden ayırıyoruz
ilk parametre: 1(tamsayı): burada çıktının parlaklığı yer alıyor 1 veya 0 alabilir.
ikinci parametre: 31 (tamsayı): burada yazının rengini tanımlıyoruz. Aşağıdaki renk kodlarından biri gelebilir

yazı renkleri:

1
2
3
4
5
6
7
8
30= Siyah
31= Kırmızı
32= Yeşil
33= Sarı
34= Mavi
35= Magenta
36= Çiyan
37= Beyaz

Son parametre: 40: Bu parametremiz de yazının arkaplan rengi içindir.

Arkaplan renkleri

1
2
3
4
5
6
7
8
40= Siyah
41= Kırmızı
42= Yeşil
43= Sarı
44= Mavi
45= Majenta
46= Çiyan
47= Beyaz

m : m karakteri konsola gönderdiğimiz mesajın sonlandığını bildirmektedir.

Konsolda Çıktıyı konumlandırmak
yine ascii kodlarımızla çıktımızı yönlendireceğiz. Ancak bazı farklılıklar var.

C için

1
printf("%c[%d;%df %s %c[0m",0x1B,y,x, yazilacak_metin, 0x1B);

python için

1
print "\033[10;10f" + yazilacak_metin + "\033[0m"

Yine ilk parametre aynı \033 karakteri (0x1B). burada parametreleriniz şöyle:
1. parametremiz dikey konum yani y konumu
2. parametremiz yatay yani x konumu
f : ise burada değişiklik gösteriyor. gene konsola gönderdiğimiz mesajın sonlandığını bildiriyor.

NOT !!! : İmleçin konumu ile oynayan bir kod yazdıysanız progarmınızın sonlanırken konsolu temizlemesi iyi olur yoksa garip bir şekilde komut bekleme haline geçiyor ve yazılar üst üste biniyor.

C için konsol temizle:

1
2
3
4
#include <stdlib.h> //system fonksiyonunun prototipi burdadır
system("clear"); // linux için temizleme komutu
system("cls"); //windows için temizleme komutu

Python için konsol temizleme

1
2
3
import os
os.system("clear") # linux
os.system("cls") # windows

Spacer
Spacer
/* xiackok yazdı. 07 Eylül 2009 11:06. 6 yorum var */

Yorumlar

Faydalı bir yazı olmuş

windows işletim sistemi için komut;

Konsolun varsayılan ön plan ve arka plan renklerini ayarlar.

COLOR [attr]

attr Konsol çıktısının renk özniteliğini belirtir

Renk öznitelikleri İKİ onaltılık haneyle belirtilir; birincisi
arka plana, ikincisi de ön plana karşılık gelir. Her bir hane
aşağıdaki değerlerden biri olabilir:

0 = Siyah 8 = Gri 1 = Mavi 9 = Açık Mavi 2 = Yeşil A = Açık Yeşil 3 = Deniz Mavisi B = Açık Deniz Mavisi 4 = Kırmızı C = Açık Kırmızı 5 = Mor D = Açık Mor 6 = Sarı E = Açık Sarı 7 = Beyaz F = Parlak Beyaz

Hiçbir parametre verilmezse, bu komut, rengi CMD.EXE'nin başlatıldığı
zamanki durumuna geri yükler. Bu değer geçerli konsol penceresinden,
/T komut satırı anahtarından ya da DefaultColor kayıt defteri
değerinden gelir.

COLOR komutu, ön plan ve arka plan rengi aynı olarak bir COLOR komutu
çalıştırma girişiminde, ERRORLEVEL'i 1'e ayarlar.

Örnek: "COLOR fc" parlak beyaz üzerinde açık kırmızı sonuç verir


---
ek olarak;

\
console windows cmd için güzel bir alternatif

Ufak bir hata var sanırım o da python için olan. Aslında hata denemez belki de benim sürümde farklı ama neyse. gotoXY için olan kodun python için olanında

print "\033[10,10f"

yerine

print "\033[10;10f"+"yazılacak metin"+"\033[0m"

yazılırsa konsolda 10. satır ve 10. sütundan itibaren yazmaya başlar. En sondaki \033[0m özel formatlamanın bittiği anlamına gelir.

Eline sağlık xiackok. Oldukça faydalı bir yazı olmuş.

teşekkür ederim @mgulsoy \033[0m kısımlarını yazmamıştım. şimdi düzeltiyorum.

/* http://bakire-dunya.blogspot.com/ */

düzeltmeleri yaptım onay bekliyor. ya bu opera'da çok sık yaşadığım bir sorun var. kodamanda ve birkaç sitede daha yazarken önizleme özelliği var. opera ile bu sitelerde önizleme yaptığımda önizleme düzgün bir şekilde geliyor. ancak anladığım kadarıyla önizlemeyi getirmeden önce formu submit ediyor. bundan çok canım yandı kaç kere :D

/* http://bakire-dunya.blogspot.com/ */

üye olunpillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.

Bu yazıyı rapor et. Kural dışı içeriğe rastladığınızda editörlerimize rapor ederek müdahale edilmesini sağlayabilirsiniz. (Hangi durumlarda rapor edebilirim?)

Bu site

Nokta ve pilli ortak yapımı olan kodaman.org hep birlikte içerik üretip gelirini yazarları ile paylaştığımız kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.

pilliilan

son yorumlar

arama

pillinetwork