این یه دستور اصیل زبان c و cpp هستش که قبلا توی turbo c وجود داشته ولی الان توسط کامپایلر های جدید شناخته نمیشه ، منم گشتم تو نت ببینم موضوع از چه قراره ی راهکاری پیدا کردم که بهتون میگم .
بگیم که این دستور چی هس ؟ چی کار میکنه ؟
- با استفاده از این دستور شما میتونین خیلی راحت تو هر جای کنسول ( همون صفحه سیاهه ) چیزی رو چاپ کنین .. فرضا برای ساخت بازی Snake شما نیازمنده این دستور خاهید شد چون باید کاراکتر بدنه ی مار رو یجایی از کنسول پرینت کنین ..
* سینتکس1 دستور به این شکل :
gotoxy( int a , int b ) //syntax
ی مثال دیگه بزنم براتون :
gotoxy ( 40 , 10 ) ;
cout << " Codingtime.blogfa.com" ;
خط اول دستور gotoxy ، نقطه شروعه کنسول ( که همیشه گوشه بود ) رو به اندازه 10 خط به پایین و 40 کاراکتر به راست منتقل میکنه
اتفاق اینی میشه که تو عکس میبینین :
همونطورم ک تو عکس میبینین همچین اتفاقی ک توضیح دادم ، افتاد ...
شاید تا الان که تست کردین به ارورر مواجه شدین ؟ چون این تابع رو هم باید مثله تابع رنگ تعریف کنیم تو کدمون
برای ساخت این تابع کد زیر رو بالای تابع main قرار میدیم :
COORD coord = { 0 , 0 } ;
void gotoxy(int x, int y) //goto x y function
{
coord.X=x;
coord.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
نکته مهم اینه که باید کتابخونه Windows.h رو هم اینکلود کنین
.
.
#include
using namespace std ;
COORD coord = { 0 , 0 } ;
void gotoxy(int x, int y) //goto x y function
{
coord.X=x;
coord.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
int main()
{
gotoxy ( 10 , 0 ) ;
cout << "Welcome" ;
gotoxy ( 20 , 5 ) ;
cout << "To" ;
gotoxy ( 30 , 10 ) ;
cout << "my blog" ;
gotoxy ( 10 , 15 ) ;
cout << "codingtime.blogfa.com" ;
getch() ; //#include
}
یک مساله دیگه، این روش مختص ویندوز هست، عزیزانی ک از سیستم عامل های یونیکس بیس استفاده میکنن میتونن از این لینک استفاده بهینه رو ببرن :)
https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/printw.html#PRINTWCLASS
سینتکس : قواعد نوشتاری زبان
اینجا فقط الگوریتم من درآوردیمو ( شاید هم زیاد بهینه نباشه ) میگم بهتون، در کل روش های زیادی رو میشه بکار برد برای ایجاد اعداد تصادفی بدون تکرار اینی هم ک من میگم قطعا استاندارد نیست :) ولی کاراییشو داره به هر حال ..
* اول بگم که برای این کار دست به دامن آرایه و دستور goto هم میشیم،
سوال : n عدد تصادفی در بازه a تا b تولید شود ..
الگوریتم کار :
1- یک عدد تصادفی در بازه دلخواه تولید و در temp ریخته میشود
2- چک میکنیم عدد تصادفی temp در آرایه نباشه ( با استفاده از حلقه for )
3- شرط: اگه temp در ارایه وجود داشت .. دوباره یک عدد تصادفی دیگه انتخاب بشه .
4- اگه 3 نبود پس temp رو در ارایه ذخیره کن
5- برگشت به مورد اول
البته این الگوریتمی ک گفتم فقط برای اون قسمت تولید عدد تصادفی غیر تکراریه، و فقط برای اینکه متوجه
بشین قضیه از چه قراره گفتم ..
1 for ( i = 0 ; i < n ; ++ i )
2 {
3 again :
4 temp = ( rand()%a + b ) ; // عدد تصادفی تولید میشه و ریخته میشه تو تمپ //
5 for ( j = i ; j < n ; ++ j ) // از همون آی شروع میشه چون خونه قبلیش چک شده که تکراری نباش //
6 {
7 if ( arr[j] == temp ) // چک میشه که عدد تصادفی تولید شده تو کد آرایه هس یا ن //
8 {
9 goto again ;
10 }
11 }
12 arr[ i ] = temp ;
13 }
highlighting by me v1.2 
کلله کده سوالمو تو این فایل قرار میدم خاستین دانلود کنین : دانلود

| نسخه فارسی | دانلود |
| نسخه انگلیسی | دانلود |
*لینک ها از سایت مهندس یار
- از نظر گرافیکی برای من یخورده مشکل داره برا همین من از همون ورژن قبلیش استفاده میکنم ..
- این نسخه دارای کامپایلر میباشد ، در حال حاظر (تا به این تاریخ :)، ورژن آخرش توی نت فقط یجا هست ک اونم بدون کامپایلر داخلیه ..
- لینک دانلود نرم افزار تو خود سایتشون هست ولی تحریمیم ..
دانلود ورژن 17.12 به همراه کامپایلر
rand () ;
srand ( time ( 0 ) ) ; // be jaye 0 az NULL ham estefade mishe
آشنا شدیم
حالا اینا برای چی هستن و چجوری ازشون استفاده باید کنیم ؟!
تابع اول همون تابعیه ک عدد تصادفی برامون تولید میکنه، ( خروجیش ی عدد تصادفیه صحیح هستش ممولن بین 1 تا 5 رقم .. )
حالا تابع دومی چیه ؟ تابع دومی باعث میشه هر بار که برناممون اجرا میشه ی عدد تصادفی جدید بهمون بده
اگه تابع دوم نباشه ما هر بار با اعداد تصادفی یکسانی ربرو خاهیم شد .. اگه میخاین امتحان کنین فقط کافیه توی کد، همون تابع اول رو حذف کنین
نکته ریز : برای استفاده از تابع rand در زبان c باید کتابخونه رو اینکلود کنین
و در زبان cpp علاوه بر کتابخونه بالا کتابخونه رو هم اینکلود کنین ../
خب حالا میریم سراغ اینکه چجوری از این توابع استفاده کنیم :
int a = rand() ;
// یک عدد 6 رقمی تصادفی بدون هیچ بازه ای تعریف میکنه
int b = rand() % 10 ;
// یه عدد بین 0 تا 9 بصورت تصادفی ایجاد میکنه *1
int c = rand() % 10 + 5
// اول یه عدد تصادفی بین 0 تا 9 انتخاب میکنه و بعد اون رو بعلاوه 5 // میکنه ینی در کل یه عدد تصادفی بین 5 تا 14 انتخاب میشود
*1 : در مورد %10 توضیح بدم .. هر عددی که تو تابع رندوم درست شد رو تقسیم بر 10 میکنه و هر چی که باقی ماندش شد رو میریزه تو متغیر b مون ...
) چن تا کار میتونیم کنیم
بهترین نوعش از نظرم این مدلیه ک اول میگم .. حالا اگه حوصله داشتین راه های دیگه رو هم تو اینترنت هست امتحان کنین ..
1- استفاده از تابع رنگی ک خودمون میسازیم ..
باید کتابخونه رو اینکلود کنیم ..
به کدمون تابع رو اضافه میکنیم که توش از دستورای سیستمی استفاده میشه .
#include
void set_color ( int color_code )
{
SetConsoleTextAttribute ( GetStdHandle (STD_OUTPUT_HANDLE) , color_code ) ;
}
** کد رنگ هارو هم میتونین تو این عکس ببینین
.: برای دیدن اندازه اصلی روش کلیک کنین :.
بعد به این صورت باید استفاده کنیم ..
set_color ( 10 ) // کد رنگ سبز با پیش زمینه سیاه //
printf ( " codingtime.blogfa.com ") ; // رنگه این متن سبز میشه تو خروجی //
set_color ( 7 ) // اینم برای اینه که فقط همین سلام رو سبز کنه و بقیه همون رنگ اصلیش کنه //
پ.ن : برای زبان سی پلاس پلاس فقط به جای printf از cout استفاده میکنیم :)
پ.ن 1 : این کد هایی ک گفتم رو ide :code::blocks و کامپایلر GCC تست شده است ..
> دانلود کد هایی که گفتم : دانلود
اگه میخاین مهارت بالایی کسب کنین تو زمینه کد نویسی
باید تلاش کنین :) .. میدونم نمیدونستین ...... استفاده کنین ....
مرسی .. آریا_پ