Heroine Heroine n Trimmingsexystrippedmomanddaughter i Heroine e Super L Handling H Super n New l Trimmingsexystrippedmomanddaughter n New search3 New 6 Online 0search6 Super s Heroine asearchcsearch2 Super esearchr Trimmingsexystrippedmomanddaughter hsearchs
a Heroine N
w Heroine csearchS1p Trimmingsexystrippedmomanddaughter rsearch
14
أبيض
WHITE
15
لكن يجب أن نتتبه أنه مع هذه الدوال يجب أن تستخدم
cprintf بدل printf
ونستبدل علامة سطر جديد New Line
' n '
بــ ' rn '
________________________________________________________________________________
4.دوال تغيير لون الخلفية:
وتستخدم لتغيير لون خلفية الكتابة وتأخذ الصيغة :
textbackground(color number);
OR
textbackground(color name);
ومعاملاتها هي نفس معاملات الـ textcolor مع
ملاحظة أن هذه الدالة لا تأخذ غير الألوان من الرقم 1 إلى 7 المذكورين في
الجدول.
و تستبدل جميع دوال الإدخال و الإخراج عند إستخدام الالوان من صيغتها الطبيعية
إلى صيغتها مسبوقة بالحرف c المأخوذ من color .
لذا تصبح الــ cscanf <----
scanf.
ملاحظة:
إذا إستخدمة الدالة textbackground لتحديد لون
لخلفية و أتبعتها بالدالة clrscr سيتم مسح الشاشة
باللون الذي تم تحديدة .
أما إذا لم تستخدم الدالة clrscr فإن لون الخلفية
سيخصص للكلمات التي تكتب فقط بينما يبقى لون الشاشه كما هو .
وأذكر أن جميع هذه الدوال تندرج تحت
الهيدر فايل conio.h
أي يجب أن تكتب في أول البرنامج:
#include
_______________________________________________________________________________
*أما إذا كنت من مستخدمي منتجات ماسكروسوفت مثل
++Visual C فإن الدوال السابفة الذكر لن
تعمل معك بل لا بد من كتابتها
و هذه هي الدوال السابقة مكتوبة
بلغة السي بإستخدام win API
:
void clrscr()
{};
DWORD cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO csbi;
DWORD dwConSize;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsole, &csbi);
dwConSize = csbi.dwSize.X * csbi.dwSize.Y;
FillConsoleOutputCharacter(hConsole, TEXT(' '), dwConSize, coordScreen,
&cCharsWritten);
GetConsoleScreenBufferInfo(hConsole, &csbi);
FillConsoleOutputAttribute(hConsole, csbi.wAttributes, dwConSize,
coordScreen, &cCharsWritten);
SetConsoleCursorPosition(hConsole, coordScreen);
}
//---------------------------------------------------------------------------------
void gotoxy(int
x, int y)
{}
//----------------------------------------------------------------------------------
void textbackground(int
color)
{}
//-----------------------------------------------------------------------
void textcolor(int
color)
{}
________________________________________________________________________________
*مثال
شامل للمفاهيم السابقة :
ومن التطبيقات المثير في السي في رسم القوائم Menu
وهذا مثال عام يمكنكم تعديله لبرامجكم حسب الحاجة:
#include
"stdio.h"
#include "conio.h"
#define numberchoices 6
#define menulength 9
#define menuposx 40-menulength/2
#define menuposy (25-numberchoices)/2
#define UP 72
#define DOWN 80
#define ENTER 13
#define ESCAPE 27
void center(char
word[], int totallen);
void border(int
x1,int y1,int x2,int
y2);
void main()
{};
char ch;
int
x,currentchoice=1;
_setcursortype(0);
border(3,2,77,24);
do
{}
textbackground(7);
textcolor(0);
gotoxy(menuposx,menuposy+currentchoice-1);
center(menuchoice[currentchoice-1],menulength);
/*position cursor on current option*/
do
{} while((ch != ENTER) && (ch !=
ESCAPE));
textbackground(0);
textcolor(7);
_setcursortype(2);
if (ch == ENTER)
{}
}
} while(ch != ESCAPE);
}
void center(char
word[], int totallen)
{}
void border(int
x1,int y1,int x2,int
y2)
{}
gotoxy(x1,y2);
cprintf("ب");
for (temppos=x1;x2-temppos>1;temppos++)
cprintf("ح");
cprintf("¼");
gotoxy(x1,y1);
}
____________________________________________________________________________
وهذا مثال آخر بسيط نوع ما:
وهو لتببين كيفية إستخدام الدوال السابقة:
#include
"conio.h"
int main(void)
{}
return 0;
}
______________________________________________________________________________
وهذا مثال آخر على دالة
gotoxy :
#include
"conio.h"
int main(void)
{}
______________________________________________________________________________
و هناك أيضاً الدالتين :
int
wherex( void ); // Return
the current x location of the cursor
int wherey( void
); // Return the current y location of the cursor
وهي من ضمن الملف
conio.h وهذا إذا كانت من مستخدمي منتجات
بورلاند أما إذا كنت من مستخدمي الفجول سي كمبايلر فهذه هي
دوال بلغة السي بإستخدام الــ win API :
int
wherex( void )
{}
int wherey( void )
{}
_______________________________________________________________________________
والدالة دليلي
void
delay(int);
وهي دالة تؤخر العمل بحسب القيمة
المعطاة وهذا أيضاً إذا كنت من
مستخدمي منتجات بورلاند و إذا كنت من مستخدمي منتجات
مايكروسوفت فهذه هي طريقة محاكاة الدالة
مكتوبة بلغة السي:
for (int
j = 0; j < 0xFFFFFF; j++)
; // delay loop
كل ما عليك هو وضع هذه الــ for
داخل اللوب تبعك مثل: