PDA

Tam Sürümünü Görmek İçin : C ödevi Lütfenn yardımm !!


painkillerr_34
02/12/2006, 21:02
C de basit bir ekran koruyucu yapmamız isteniyor.
Kulanıcı ismini yazacak bu metin ekranda rasgele hareket edecek.Bildiğimiz
windows ekrankoruyucuları gibi weya daha basit.
Problem şu daha programlamada çok yeniyiz 3 aydır C dersi alıyoruz.Bu kadar bilgi ile nasıl yapabiliriz.Nasıl bir algoritma kuracağım hakkında bir fikri olan varmı?
Yardımlarınız için şimdiden teşekkür ederim!!


Revne
03/12/2006, 01:49
1. Turbo C kullanıyorsan BGI (Borland Graphics Interface... acılımı yanlış olabilir)
2. MSVisaul C++ kullanıyorsan DirectX veya OpenGL kullanman gerekir.. (Bular başlı başına bir derya)

NOT:
Sana tavsiyem bilgisayarına bir tane Turbo C(Turbo C++ da olabilir) kur.. BGI fonksiyonlarını araştir.. outtextxy(....) fonksiyonu işini gorecektir..

Ornek (http://www.onecore.net/turbo-c-graphics-programming.htm) codda ekrana bir daire cizdiriliyor...

Kolay Gelsin

Fobus
03/12/2006, 02:09
Ekran koruyucular bildigimiz Exe lerdir sadece uzantıları src dir...(en azından delphide boyle yaptigimi hatirliyorum)

http://forum.ceviz.net/archive/index.php/t-4944.html

painkillerr_34
03/12/2006, 11:04
1. Turbo C kullanıyorsan BGI (Borland Graphics Interface... acılımı yanlış olabilir)
2. MSVisaul C++ kullanıyorsan DirectX veya OpenGL kullanman gerekir.. (Bular başlı başına bir derya)

NOT:
Sana tavsiyem bilgisayarına bir tane Turbo C(Turbo C++ da olabilir) kur.. BGI fonksiyonlarını araştir.. outtextxy(....) fonksiyonu işini gorecektir..

Ornek (http://www.onecore.net/turbo-c-graphics-programming.htm) codda ekrana bir daire cizdiriliyor...

Kolay Gelsin

Arkadaşlar soruyu biraz yanlış tarif ettim galiba. Soruda esas istenen şey yazıya hareket
kazandırıp bir animasyon yapmak, nasıl hareket ettiği hiç önemli değil. MS Visual C++ kullanıyorum ve bildiğimiz Win32 Consol Application formatında yazmamız isteniyor.

KamilORS
03/12/2006, 16:51
Merhaba Tamamen gotoxy() fonksiyonu işini görecektir. Birde cout yerine stdio kütüp hanesinde bulunan cprintf ile bunu yapabilirsin. bir do döngüsü içerisinde şu şekilde bir program işini görecektir :


#include <stdio.h>
#include <conio.h>

void main()
{
int X,Y,eX,eY,tus; // ilerde Entere Basınca Çıkması İçin tus diğe bir deişken tanımlaya biliriz
do
{
textcolor(0);
gotoxy(eX,eY); cprintf("Ekrana Yazılcak Yazı");

X=random(80);
Y=random(25);
textcolor(7);
gotoxy(X,Y); cprintf("Ekrana Yazılcak Yazı");
eX=X; eY=Y;
}while(tus==13);

}


Kolat Gelsin Bu arada textcolor Yazı rengini ayarlar. yazıyı renkli yazabilmek içinde cprintf kullandık..

Bu Arada Borland C++ Builder 6 'da Console Wizard 'a Yaptım yukarıdaki Programcığı.. diğer derleğicilerde çalışırmı bilmem..

Bir şey daha Şu (eX=X; eY=Y;) Kod Satırının bir Altına Sleep(1000); eklersen Animasyon Daha iyi çalışcak. Eklemezsek Hıp hızlı bir şekilde gerçekleşçeği için bişi anlaşılmayacak :)

painkillerr_34
03/12/2006, 17:36
Teşekkür ederim Kamil yardımın için fakat VS 6 C++ editöründe çalısmıyor
gotoxy() fonksiyonu hata veriyor. Buna benzer bir fonksiyon varmı diye baktım C kitabına malesef bulamadım.

Revne
03/12/2006, 18:33
Pardon ben Grafik programlama anladım...
siyah ekranda yazıyı hareket ettirmek istediğini düşünemedim...

gotoxy ile alakalı suraya (http://c.ittoolbox.com/code/archives.asp?d=2494&a=s&i=11) bakabilirisin

Bu arada dikkat edilmesi gereken bir kac husus var...
<conio.h> icindeki fonksiyonlar sadece windows icin gercerlidir..
gotoxy nin parametrelerinden X degeri en fazla 25, Y degeri de en fazla 80 olabilir...

Not: Belki Projeyi yanliş açmışsındır..
1.Visual Studio C++ 6.0 acilır..
2.Yeni Projeden Console Projesi secilir.
3. Hello Word secenegi secilerek proje oluşturma tamamlanır...
4. Daha sonra uygun headerlar eklenir ve main fonksiyonunun ici uygun sekilde değiştirilir.:ginginn:

NOT:
Sitenin tekinde boyle bir sey buldum.. calisiyormu diye denemedim..
void gotoxy(char x, char y)
{
__asm
{
mov ah,02h
mov bh,2
mov dh,x
mov dl,y
int 16
}
}

Kolay gelsin..

Sabahi
04/12/2006, 07:29
@painkillerr_34
Sorunuza bakarak sizin gibi 3 aydir C ogrenen birinden beklenenin gotoxy gibi, asm gibi konular olmadigindan eminim. Eger ben bir ogrencime benzeri bir soru olmus olsaydim bu problemi cozmek icin gereken bazi temel bilgileri daha onceden ogretmis olurdum. Bu bilgilere bir iki ornek vermek gerekirse;
1) Variable, loop, fonksiyon v.s. gibi temel yapilar.
2) Standart DOS ekraninin 25 X 80 satir ve sutun olarak dusunulebilecegi.
3) Random fonksiyonu nedir, nasil kullanilir gibi soruyu cozmenize yardimci fonksiyonlar.
Eger gercekten bu tur konular size ogretildi ise problemi cozmek icin geriye kalan genel programlama prensiplerini uygulamak ve biraz yaratici olmak. Aslinda ogrencilerin odevini yapmak gibi bir adetimiz yok ama bir istisna olarak sizin seviyenizde egitim almis birinin rahatlikla yazabilecegi ornek bir programi asagida veriyorum.
Butun yaptigim clrs() fonksionunu cagirdiktan sonra ekranin sol alt kosesini koordinat sistemin 0,0 noktasi olarak kabul etmek sutun ve satir fonksiyonlari sayesindede koordinat sisteminde istedigim noktaya yazabilmek. Random fonksiyonuda x,y in 0-25, 0-80 arasinda gelisiguzel olmasini sagliyor.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


void satir(x);
void sutun(y);
void clrs();
void yazxy(char *isim, int x, int y);


int main()
{
char buff[30];
time_t ss;

srand((unsigned int) time(&ss));


buff[0] = '\0';
printf("Isminizi yazarmisiniz lutfen? ");
scanf("%s", &buff);
clrs();

while(1){

yazxy(buff, rand() % 25, rand() % 80);
// Burada bir bekleme yapar ve ekrani temizlerseniz
// daha iyi olur.
//clrs();
}

return 0;
}


void satir(x)
{
int i=0;
while(i < x) { printf("\n"); i++; }
}

void sutun(y)
{
int i=0;
while(i < y) { printf("%c", ' '); i++; }
}

void clrs()
{
int i=0;
while(i < 25) { printf("\n"); i++; }

}

void yazxy(char *isim, int x, int y)
{
sutun(y);
printf(isim);
satir(x);
}

cefurkan
04/12/2006, 11:49
sabahi

hocam size bir mesaj attim bakabilirmisiniz

painkillerr_34
05/12/2006, 10:25
Çok teşekkür ederim arkadaşlar!! verdiğiniz bilgiler çok işime yarayacak..