C Dilinde Foksiyon(Yardım)
-
C dilinde entera basmadan girdi okuyacak foksiyon lazım. Yılan oyunu yapıcamda scanf getchar fln olmuyo oyun durup durup ilerliyor. Programın ilerleyişini bozmuyacak ama girlince karakter okuyan cinsten bişi lazım
-
Difference betn getch(),getche(),getchar() functions
getchar
This is a standard function that gets a character from the stdin.
getch
This is a nonstandard function that gets a character from keyboard, does not echo to screen.
getche
This is a nonstandard function that gets a character from the keyboard, echoes to screen.
Use getchar if you want it to work on all compilers. Use getch or getche on a system that supports it when you want keyboard input without pressing [Enter].
And note that the return value of all three is int! You need this to properly check for EOF...............................
:)
-
Stigmata dostum sana gereken şeyleri vermiş fakat oyun yapmak istediğini anlıyorum eventdriven bir yapisi olucak galiba programının + keyboard dan da veri okucak
ve bu veriye göre hareket etçeğinden belki bir tuşu direk okumak yerine C# taki gibi click event gibi birşey yapabilirsin.
Prototype: int kbhit(void);
Header File: conio.hint main()
{
while(1)
{
if(kbhit())
{
printf("Bir tuşa bastin \"JUSTICEtr \" \n");
}
}
}burda sonsuz döngüde bekliyor program , taki klavyeden bir tuşa basildiği ana kadar. kbhit() fonksiyonu tuşa basildiği anda çalisan birşeydir.Bunu C# ta button ların click evetine benzetiyorum :) şimdi bu fonksiyonla keyboarda basildiğini öğrenebilirsin fakat veriyi okuyamazsın.Onun için ise Stigmata arkadaşımın verdiği fonksiyonları kullanıcaz beraberce.
yani şöyle olucak
while(1)
{
if(kbhit())
{
printf("Bir tuşa bastin \"JUSTICEtr \" \n");
printf("Bastigin tuş %c dir.\n", _getch() ); // stdin den veriyi okuyor _getch() fonksiyonumuz
}
}
Şimdi totalde elimizde ne oldu , klavyeyenin bir tuşuna basildiğini öğrenebildin enter olmadan + yine enter olmadan girilen inputu öğrenmiş oldun.
Fakat galiba , kbhit() fonksiyonumuz unix ve linuxlarda yoktu hatirladigim kadariyla.Onun yerine linuxta kb_getc() fonksiyonunu kullanabilirsin.bunu yazarken
bir site buldum hemen linux veya unix üzerinde çalışacaksan => http://www.pwilson.net/kbhit.html bu siteye bir bak .
Windows üzerinde çalışacaksan http://msdn.microsoft.com/en-us/library/58w7c94c(VS.80).aspx Microsoftun MSDN inden araştırmanı tavsiye ederim bütün
fonisiyon ve tiplerini.
