توضیحاتی در مورد کتابخانه های پرکاربرد در C++ میباشد که در ذیل آمده است .توجه شود که به ترتیب نمیباشد.
graphics.h:
کتابخانه graphics.h یک واسط برنامهنویسی قدیمی و مبتنی بر DOS (معمولاً در کامپایلرهای Borland/Turbo C++) بود که برای ترسیم اشکال گرافیکی ساده با استفاده از توابع دسترسی مستقیم به حافظه کارت گرافیک (VGA) طراحی شده بود و در محیطهای مدرن مانند C++ استاندارد یا سیستمعاملهای جدید پشتیبانی نمیشود.
Thread:
کتابخانه std::thread در C++ استاندارد (از C++11 به بعد) یک رابط شیگرا و قابل حمل (Portable) برای مدیریت اجرای همزمان (Concurrency) و اجرای موازی (Parallelism) با ایجاد، مدیریت و همگامسازی رشتههای اجرایی (Threads) در سطح سیستمعامل فراهم میکند.
Conio.h:
کتابخانه conio.h یک کتابخانه غیر استاندارد و مخصوص سیستمعامل DOS (یا کامپایلرهای قدیمیتر مانند Turbo C) بود که توابعی برای ورودی/خروجی کنسولی (مانند دریافت کاراکتر بدون نیاز به فشردن Enter، مانند تابع getch()) و کنترل صفحه نمایش فراهم میکرد و در محیطهای مدرن C++ پشتیبانی نمیشود.
iostream :
کتابخانه iostream (Input/Output Stream) در C++ یک مؤلفه حیاتی است که کلاسهایی مانند std::cin، std::cout، و std::cerr را برای مدیریت ورودی/خروجی استاندارد مبتنی بر جریان (Stream-based I/O) فراهم میکند که قابلیت توسعهپذیری بالایی از طریق Overloading عملگرها دارد.
vector :
کتابخانه std::vector در C++ یک الگوی کانتینر دنبالهای پویا (Dynamic Sequence Container) از کتابخانه استاندارد قالب (STL) است که آرایهای با قابلیت تغییر اندازه خودکار (Automatic Resizing) را پیادهسازی میکند و امکان دسترسی سریع به عناصر با استفاده از اندیس را فراهم میآورد.
chrono :
کتابخانه std::chrono در C++ یک چارچوب قدرتمند برای مدیریت زمان و زمانبندی (Timing and Clock operations) است که امکان اندازهگیری دقیق بازههای زمانی (Durations)، نمایش زمانهای سیستمی و مدیریت تقویم را با دقت بالا و به شکلی قابل حمل (Portable) فراهم میسازد.
time :
کتابخانه time.h (در C) یا معادل آن ctime (در C++) یک مجموعه تابع قدیمیتر و مبتنی بر استاندارد C برای انجام عملیات اساسی زمان مانند تبدیل ساختارهای زمان (مانند struct tm)، اندازهگیری زمان سپری شده و فرمتبندی تاریخ و زمان است که اغلب در پروژههای مدرن با std::chrono جایگزین میشود.
math :
کتابخانه cmath (یا math.h در C) مجموعهای از توابع استاندارد ریاضی برای انجام محاسبات عددی پیچیده مانند توابع مثلثاتی، لگاریتمی، توانی و توابع خاص مانند قدر مطلق و سقف/کف را برای کار با اعداد ممیز شناور (Floating-Point Numbers) فراهم میآورد.
iomanip :
کتابخانه iomanip مجموعهای از دستگیرهها (Manipulators) را برای کنترل دقیق قالببندی خروجی در جریانهای ورودی/خروجی C++ (مانند std::cout) فراهم میکند، از جمله تنظیم عرض فیلد، دقت ممیز شناور، و نمایش اعداد در مبنایهای مختلف (اعشاری، هشتتایی، شانزدهتایی).
sstream
کتابخانه sstream امکان کار با جریانهای ورودی/خروجی (Streams) را درون رشتههای متنی فراهم میکند؛ به این معنی که میتوانید از عملگرهای آشنای << و >> برای خواندن و نوشتن دادهها به/از یک متغیر نوع std::string استفاده کنید، که برای تبدیل نوع (Type Conversion) و تجزیه متن (String Parsing) بسیار کارآمد است.
ofstream:
ofstream در ++C شیئی از کلاس std::ofstream است که برای نوشتن داده در فایلها (خروجی فایل) استفاده میشود.
تابع GetAsyncKeyState() در زبان C++ (در واقع یکی از توابع WinAPI در ویندوز) برای بررسی وضعیت لحظهای کلیدهای صفحهکلید استفاده میشود — یعنی بهصورت asynchronous یا «بدون وابستگی به event queue» وضعیت کلید را مستقیماً از سختافزار یا سیستمعامل میخواند.
?? این تابع در هدر زیر تعریف شده:
#include <windows.h>
پارامترها:
vKeyکدی است که نشاندهنده کلید مورد نظر است (Virtual-Key Code).مثلاً:
VK_LEFT کلید جهت چپ
VK_RIGHT کلید جهت راست
'A' کلید A
VK_SPACE فاصله (space)
نوع خروجی SHORT (16 بیتی) است.
دو بخش مختلف این مقدار، اطلاعات متفاوتی را نشان میدهند:
بیت معنی
بیت 15 (بالاترین بیت) اگر 1 باشد یعنی کلید در حال حاضر فشرده است
بیت 0 (پایینترین بیت) اگر 1 باشد یعنی از آخرین فراخوانی تابع، کلید حداقل یک بار فشرده شده است
?? نکات مهم:
به event queue وابسته نیست ? یعنی حتی اگر برنامه فریمها را از دست بدهد یا پنجره غیرفعال باشد، همچنان میتواند کلیدها را تشخیص دهد.
برای polling استفاده میشود، نه برای event-driven design.اگر برنامه نیاز به پردازش دقیق ورودیها (مانند بازیها) دارد، معمولاً با PeekMessage() یا GetMessage() ترکیب میشود.
در محیط غیر ویندوز قابل استفاده نیست (تابع خاص Win32 API است).
تشریح کامل تابع clearmouseclick(event)
در محیطهای گرافیکی، ورودیهای کاربر (مانند فشار دادن کلید، حرکت ماوس، یا کلیک ماوس) به صورت رویداد (Events) در یک صف (Queue) ذخیره میشوند. برنامه شما در یک حلقه (Loop) مدام این صف را بررسی میکند.
1. هدف اصلی: مدیریت صف رویداد (Event Queue Management)
هدف اصلی clearmouseclick(event) این است که یک رویداد خاص را که قبلاً تشخیص داده شده و پردازش شده است، از این صف خارج کند تا از پردازش مجدد آن در تکرارهای بعدی حلقه جلوگیری شود.
2. ساختار آرگومانها: event
آرگومان event مشخص میکند که کدام نوع رویداد باید از صف پاک شود. در محیطهایی که از این تابع استفاده میشود، این آرگومانها معمولاً با مقادیری مانند:
WM_LBUTTONDOWN: رویداد فشار دادن دکمه چپ ماوس.
WM_LBUTTONUP: رویداد رها کردن دکمه چپ ماوس.
WM_RBUTTONDOWN: رویداد فشار دادن دکمه راست ماوس.
و… (که در ویندوز با نامهای WM_... شناخته میشوند).
تفاوت با ismouseclick()
ismouseclick(event): فقط بررسی میکند که آیا رویداد مورد نظر در حال حاضر در صف وجود دارد یا خیر (عملیات Read-Only).
clearmouseclick(event): رویداد مورد نظر را از صف حذف میکند (عملیات Write/Mutating).
ismouseclick();
یک تابع نوع بولین برای تعیین وضعیت کلیک انجام شده بطورمثال:
ismouseclick(WM_LBUTTONDOWN);
تعیین میکند که آیا دکمه چپ ماوس فشرده شده یا خیر ودرون یک شرط قابل برقراری هست یا خیر.نمونه کد آن برای استفاده در شرط بگونه زیر است:
if (ismouseclick(WM_LBUTTONDOWN)){
outtext("LEFT BUTTON DETECTED");
}
این تابع می تواند 6 وضعیت را تعیین تکلیف کند که عبارت اند از:
WM_LBUTTONDOWN کلیک دکمه چپ ماوس (فشرده شدن)
WM_RBUTTONDOWN کلیک دکمه راست ماوس (فشرده شدن)
WM_MBUTTONDOWN کلیک دکمه وسط ماوس (فشرده شدن)
WM_LBUTTONUP رها شدن دکمه چپ ماوس
WM_RBUTTONUP رها شدن دکمه راست ماوس
WM_MBUTTONUP رها شدن دکمه وسط ماوس
برای رسم دایره در محیط گرافیکی C++ از تابع زیر استفاده میکنیم .که x1 نقطه x دایره y1نقطه y دایره و R1 را شعاع دایره میگویند.
circle(x1,y1,R1);
برای رسم یک مستطیل در محیط گرافیکی در C++ شما بایستی از تابع زیر استفاده کنید .که x1وy1 نقطه شروع رسم و x2 وy2 نقطه پایانی رسم مستطیل هستند.در ادامه اگر سوالی داشتید از طریق بخش نظرات بپرسید حتما پاسخگو هستیم.
rectangle(x1, y1, x2, y2);
لینک های مرتبط: