Hareketli Menu C++

ALpMontana

КЯaL´da TaNıMaM КuяaL´da
Katılım
28 May 2006
Mesajlar
6,644
Reaction score
0
Puanları
0
Yaş
38
Konum
Eski Açık [ALiSamiYEN]
Dos ortaminda hazirlamayi dusundugunuz programlariniza menu eklemek ister misiniz ?



/**************************************
Programme : Menu
Compiler : Turbo C++ 3.0
File Name : menu.c
Pogrammer : Deniz TURKAN
**************************************/

/* Kutuphane tanimlari */
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

/* Menu secenekleri ve eleman sayisi */
#define eleman 7
const char *secenek[eleman] = {"° 1.Secenek °",
"° 2.Secenek °",
"° 3.Secenek °",
"° 4.Secenek °",
"° 5.Secenek °",
"° 6.Secenek °",
"° CIKIS °"
};

/* Menu de kullanilan tuslar tanimlaniyor */
#define cikis 27
#define asagi 80
#define yukari 72
#define enter 13

/* Herhangi bir ozelligi yok sadece deneme icin */
void deneme(void)
{
window(1,1,80,25);textbackground(0);clrscr();
gotoxy(30,12);
printf(" Bu Bir Denemedir !!!");
getch();
}

/* Istenilen koordinata istenilen renkte mesaj yaz */
void yaz(char x , char y , char renk , char *mesaj)
{
textcolor(renk);
gotoxy(x,y);
cprintf("%s",mesaj);
}

/* Menu islemleri */
void menu(unsigned char x, unsigned char y)
{

const char *mesaj1 = "Programmer : Deniz Turkan";
const char *mesaj2 = "Menu.c";
const char *mesaj3 = "e-mail : [email protected]";

unsigned char sayac;
char tus;

/* Etiket tanimlaniyor */
baslangic :

/* Ekran modunu 80 x 25 olarak ayarla */
textmode(C80);
window(1,1,80,25);textbackground(0);clrscr();

yaz(80 - strlen(mesaj2) ,1 ,7 ,(char *)mesaj2);
yaz(1 ,24 ,7 ,(char *)mesaj1);
yaz(1 ,25 ,7 ,(char *)mesaj3);

window(x , y , x + strlen((char *)secenek[0]) , y + (eleman - 1));
textbackground(0);clrscr();

/* Butun menu ekrana yaziliyor */
for(sayac = 0; sayac < eleman; sayac++)
yaz(1 , 1 + sayac , 7 , (char *)secenek[sayac]);

/* Menu'nun birinci elemani aktif hale getiriliyor */
sayac = 0;
window(x , y + sayac , x + strlen((char *)secenek[sayac]) , y + sayac + 1);
textbackground(4);
yaz(x , y + sayac , 15 , (char *)secenek[sayac]);

do
{
tus = getch();
window(x , y + sayac , x + strlen((char *)secenek[sayac]) , y + sayac + 1);
textbackground(0);
yaz(x , y + sayac , 7 , (char *)secenek[sayac]);

if ((tus == yukari)&&(sayac > 0)) sayac -= 1;
if ((tus == asagi) &&(sayac < eleman - 1)) sayac += 1;
if (tus == enter)
switch (sayac)
{
case 0: {deneme(); goto baslangic; }
case 1: { /* fonksiyon yaz */ goto baslangic; }
case 2: { /* fonksiyon yaz */ goto baslangic; }
case 3: { /* fonksiyon yaz */ goto baslangic; }
case 4: { /* fonksiyon yaz */ goto baslangic; }
case 5: { /* fonksiyon yaz */ goto baslangic; }
case 6: exit(0);
}

window(x , y + sayac , x + strlen((char *)secenek[sayac]) , y + sayac + 1);
textbackground(4);
yaz(x , y + sayac , 15 , (char *)secenek[sayac]);

}while(tus != cikis);
}

/* Ana program blogu */
int main(void)
{
/* Menu'nun ekrana ortalanmis olarak cikip aktif olmasini sagla*/
menu((80/2)-(strlen((char *)secenek[0])/2),10);
return 0;
}
 
Geri
Üst