علی نادری
علی نادری
خواندن ۳ دقیقه·۴ سال پیش

conio.h in C / C++

conio.h
conio.h

حتما تا الان اسم زبان C و ++C به گوشتون خورده و می دونید این دو زبان از زبان های قدرتمند جهان هستن

من می خواهم شما را با کتابخانه ای شاید ناشناخته در این دو زبان اشنا کنم به نام conio.h که برای گرفتن ورودی و خروجی به صورت خاص است.

این کتابخانه تقریبا در اکثر کامپایلر ها موجود است (turbo C++ , borland C ,......)

خب اول کتابخانه را include می کنیم

#include <conio.h>

به همین راحتی.

چگونه صفحه را پاک کنیم ؟
clrscr();

با صدا زدین این فانکشن تمام کنسول ما پاک خواهد شد

چگونه فقط یک خط را پاک کنم ؟

خیلی افراد با استفاده از چنین کد های (\e[1;1H\e[2J) و خروجی دادن ان ها و یا استفاده از r\ این کار را می کنند اما این روش ها معایبی هم دارد. پس چه کنی ؟

delline();

به راحتی می توانید با استفاده از این تابع یک خط از کنسول را پاک کنید

چگونه یک کلید از کیبرد بگیریم ؟
getch(); getche(); kbhit();

-کد اول یک کاراکتر را از کیبرد می گیرد و return می کند (مقدار برگشتی به نوع متغییر مربوط است توصیعه می شود از int استفاده کنید) ولی این کد کاربرد دیگری نیز دارد بعضی افراد برای اینکه پس از پایان برنامه، برنامه در جا بسته نشود از getch و getchar در اخر کد استفاده می کنند

-کد دوم دقیقا مثل getch است با این تفاوت که مقدار دریافتی را در کنسول خروجی می دهد

-کد سوم چک می کند که ایا کلیدی فشورده شده است یا خیر ؟

برای درک راحت تر به کد زیر توجه کنید:

#include <conio.h>
void main() {
while(1){
if(kbhit()){
if(getch() == 13){
break;
}
}
}
}

در اینجا برنامه در یک حلقه بینهایت در حال حرکت است و وقتی کلیدی فشار داده می شود چک می کند که ایا ان کلید (enter) بوده است یا خیر و اگر شرط برقرار بود برنامه از حلقه بیرون می اید

چگونه مکان cursor را تغییر دهیم !؟ یا متنی را در نقطه خاصی خروجی دهیم
cursor
cursor

حتما تا به حال متوجه این cursor شده اید اما سوال اینجاست که چگونه می توان مکان ان را تغییر داد

نکته : محلی قرار گیری خروجی های کنسول همان cursor است پس با تغییر مکان ان مکان خروجی هم تغییر می کند

gotoxy(x,y);

درستور مکان cursor را جا به می کند و دو ورودی x, y را از نوع int می گیرد

چگونه مکان فعلی cursor را بگیریم ؟
wherex();
wherey();

کار با این ها بسیار ساده است به طوری که یک int را return می کند

اما میرسیم به بخش جذاب کتابخانه

چگونه یک متن را چاپ کنیم ؟
cprintf();

شاید از خود بپرسید فرق این با printf چیست ؟ جواب این سوال این است که متن را پیکربندی می کند

یعنی به ان رنگ و حالت می دهد

چگونه رنگ متن را تغییر دهیم ؟
textcolor(a);

این دستور یک int به نام a که مربوط به رنگ است را می گیرد مثال:(2 : سبز)

چگونه رنگ پس زمینه متن را تغییر دهیم ؟
textbackground(a);

این نیز مثل مورد قبل یک متغییر عددی می گیرد

نکته : در همه این موارد می توان از ثابت های پیش تعریف شده هم استفاده کرد مثال :(RED)

چگونه هر دو را با هم تغییر بدیم ؟
textattr(a);

این هم مثل موارد قبل است ولی با فرق اینکه عدد روی همه عوامل تاثیر می گذارد

یکی از ثابت های پیش تعریف شده BLINK است که در محیط سیستم عامل داس متن را به حالت چشمک زن در می اورد

برای تمرین می تونید به راحتی چنین چیزی را مثل سیستم عامل داس بنویسید

help ms dos
help ms dos


بنده با استفاده از همین کتاب خانه این بازی را ساختم اما به دلایلی نتوانستم کاملش کنم

بازی این گونه است که سفینه ای حرکت می کد و تیر شکلیک می کند و باید اشیای را که میایند بزند تا بهش نرسند (بازی کامل نشده است)

game by C
game by C

این لینک GitHub اش

https://github.com/khod-naderi/shatel

خوشحال میشم تکمیلش کنید :)






conio hcرنگ متن
اگه خواستی می تونیم با khod.naderi@gmail.com با هم در ارتباط باشیم ;)
شاید از این پست‌ها خوشتان بیاید