آموزش زبان ++C و #C

Mohammad

Aquatic Guru
Administrator
Sep 23, 2005
675
نام
محمد
آقا من اولین بازیم رو به عنوان آخرین تمرینی که باید تو کلاس برنامه نویسی تحویل بدیم نوشتم!
بازی سنگین و پیچیده XO :cheesygri یا همون Tic Tac Toe

یکی دو روز مخ سوزوندم تا تکمیل شد تازه اونم Level ساده! ( کامپیوتر کاملاً رندوم خونه ش رو انتخاب میکنه و بسادگی میتونید برنده شید )
اگه intermediate , advance ش هم بنویسیم 40% بیشتر نمره میگیریم! این 2 هفته ای که تا امتحان مونده سعی میکنم اینم بنویسم ... باید بیشتر رو هوش مصنوعیش کار کنم :)

تست کنید اگه اشکالی چیزی داره بگید ...
system requirement :
any system !
فقط حواستون باشه برای اجرا باید آخرین نسخه Daemon tools , sfnightmare رو نصب داشته باشید ... کابل کشی هم لازم داره به این صورت که بعد از اتمامه بازی کابل برق رو میکشید :)

Source :
// X O Game

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <iomanip.h>
#include <time.h>
#include <string>

int main(void)
{
int row,colomn,n,r,s,h,p,q,t,m;
char a[3][3],choice,answer;
p=0; q=0; t=0; // p: your wins, q: your loses, t: ties

cout << "\t\t 1 2 3\n\n";
cout << "\t\t\t| " << "|" << endl;
cout << "\t\t 1 | " << "|" << endl;
cout << "\t\t ---|---|---" << endl;
cout << "\t\t 2 | " << "|" << endl;
cout << "\t\t ---|---|---" << endl;
cout << "\t\t 3 | " << "|" << endl;
cout << "\t\t\t| " << "|\n\n" << endl;

cout << "Welcome to the game of TIC-TAC-TOE!\n\n";
cout << "Please enter your first name:\n\n";
string name;
cin >> name;
do
{
cout<<"\nWell "<<name<<", let's see who has the first move, me or you!\n";
cout<<"Choose! Head or Tail ?(H/T)\n";
cin >> choice;
srand(time(NULL));
h = rand()%2; // It produce 0 or 1. if it's 0 user has the
if (h == 0) // first move, else computer has it.
cout << "\nYou are first! " << endl;
else
cout << "\nI'm first, You're next!" << endl;
bool keep = true;
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
a[j] = '\0'; // all the matrix cells are blank now.
n=0;
do
{
if (h == 0)
{
cout << "\nIt's your turn " << name <<"!" << endl;
do
{
cout<<"\nPlease enter the number of the row you wish to place in:"<<endl;
cin >> row;
if (row > 3 || row < 1)
cout<<"\nCaution! you must enter only 1 or 2 or 3 for the row\n";
}while(row > 3 || row < 1);
do
{
cout<<"Please enter the number of the colomn you wish to place in:"<<endl;
cin >> colomn;
if (colomn > 3 || colomn < 1)
cout<<"\nCaution! you must enter only 1 or 2 or 3 for the colomn\n";
}while (colomn > 3 || colomn < 1);
row = row - 1; // because in c++ arrays start from 0 not 1.
colomn = colomn - 1;
if (n>0 && a[row][colomn] != '\0')
{
do // checks that the cell is blank or not.
{
cout << "\nThis place is full ! select another\n" << endl;
cout<<"Please enter the number of the row you wish to place in:" << endl;
cin >> row;
cout<<"Please enter the number of the colomn you wish to place in:"<<endl;
cin >> colomn;
row = row - 1;
colomn = colomn - 1;
}while(a[row][colomn] != '\0');
}
a[row][colomn] = 88; // 88 is the number that produce X as a char.

cout<<"\t\t 1 2 3\n\n";
cout<<"\t\t\t| " << "|" << endl;
cout<<"\t 1 "<<a[0][0]<<" | "<<a[0][1]<<" | "<<a[0][2]<<endl;
cout<<"\t\t ---|---|---" << endl;
cout<<"\t 2 "<<a[1][0]<<" | "<<a[1][1]<<" | "<<a[1][2]<<endl;
cout<<"\t\t ---|---|---" << endl;
cout<<"\t 3 "<<a[2][0]<<" | "<<a[2][1]<<" | "<<a[2][2]<<endl;
cout<<"\t\t\t| " << "|\n" << endl;

if (a[0][0]==88 && a[0][1]==88 && a[0][2]==88) keep = false;
if (a[1][0]==88 && a[1][1]==88 && a[1][2]==88) keep = false;
if (a[2][0]==88 && a[2][1]==88 && a[2][2]==88) keep = false;
if (a[0][0]==88 && a[1][0]==88 && a[2][0]==88) keep = false;
if (a[0][1]==88 && a[1][1]==88 && a[2][1]==88) keep = false;
if (a[0][2]==88 && a[1][2]==88 && a[2][2]==88) keep = false;
if (a[0][0]==88 && a[1][1]==88 && a[2][2]==88) keep = false;
if (a[0][2]==88 && a[1][1]==88 && a[2][0]==88) keep = false;
}
m=0;
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
if (a[j] != '\0')
m++;
if (m == 9) // if m become 9 it means that all 9 cells are full
keep = false; // thus the game is tie and program should go out
// of the loop by making keep false.
if (keep == true)
{
do
{
r = rand()%3; // will produce 0 or 1 or 2.
s = rand()%3;
}while(a[r] != '\0'); // checks that the cell is blank or not.
a[r] = 79; // 79 is the number that produce O as a char.

cout << "Press any key for the computer's move \n\n";
getch();
cout<<"The computer placed an O in location "<<(r+1)<<","<<(s+1)<< endl;
cout<<"\n\t\t 1 2 3\n\n";
cout<<"\t\t\t| " << "|" << endl;
cout<<"\t 1 "<<a[0][0]<<" | "<<a[0][1]<<" | "<<a[0][2]<<endl;
cout<<"\t\t ---|---|---" << endl;
cout<<"\t 2 "<<a[1][0]<<" | "<<a[1][1]<<" | "<<a[1][2]<<endl;
cout<<"\t\t ---|---|---" << endl;
cout<<"\t 3 "<<a[2][0]<<" | "<<a[2][1]<<" | "<<a[2][2]<<endl;
cout<<"\t\t\t| " << "|\n" << endl;
}
if (a[0][0]==79 && a[0][1]==79 && a[0][2]==79) keep = false;
if (a[1][0]==79 && a[1][1]==79 && a[1][2]==79) keep = false;
if (a[2][0]==79 && a[2][1]==79 && a[2][2]==79) keep = false;
if (a[0][0]==79 && a[1][0]==79 && a[2][0]==79) keep = false;
if (a[0][1]==79 && a[1][1]==79 && a[2][1]==79) keep = false;
if (a[0][2]==79 && a[1][2]==79 && a[2][2]==79) keep = false;
if (a[0][0]==79 && a[1][1]==79 && a[2][2]==79) keep = false;
if (a[0][2]==79 && a[1][1]==79 && a[2][0]==79) keep = false;

h = 0;
n++;
}while(n < 5 && keep);

cout << "finish! last step is :" << endl;
cout << "\t\t\t| " << "|" << endl;
cout << "\t\t "<<a[0][0]<<" | "<<a[0][1]<<" | "<<a[0][2]<<endl;
cout << "\t\t ---|---|---" << endl;
cout << "\t\t "<<a[1][0]<<" | "<<a[1][1]<<" | "<<a[1][2]<<endl;
cout << "\t\t ---|---|---" << endl;
cout << "\t\t "<<a[2][0]<<" | "<<a[2][1]<<" | "<<a[2][2]<<endl;
cout << "\t\t\t| " << "|" << endl;

if (a[0][0]==88 && a[0][1]==88 && a[0][2]==88)
{cout << "you win !" << endl; p++;}
else if (a[1][0]==88 && a[1][1]==88 && a[1][2]==88)
{cout << "you win !" << endl; p++;}
else if (a[2][0]==88 && a[2][1]==88 && a[2][2]==88)
{cout << "you win !" << endl; p++;}
else if (a[0][0]==88 && a[1][0]==88 && a[2][0]==88)
{cout << "you win !" << endl; p++;}
else if (a[0][1]==88 && a[1][1]==88 && a[2][1]==88)
{cout << "you win !" << endl; p++;}
else if (a[0][2]==88 && a[1][2]==88 && a[2][2]==88)
{cout << "you win !" << endl; p++;}
else if (a[0][0]==88 && a[1][1]==88 && a[2][2]==88)
{cout << "you win !" << endl; p++;}
else if (a[0][2]==88 && a[1][1]==88 && a[2][0]==88)
{cout << "you win !" << endl; p++;}

else if (a[0][0]==79 && a[0][1]==79 && a[0][2]==79)
{cout << "you lose !" << endl; q++;}
else if (a[1][0]==79 && a[1][1]==79 && a[1][2]==79)
{cout << "you lose !" << endl; q++;}
else if (a[2][0]==79 && a[2][1]==79 && a[2][2]==79)
{cout << "you lose !" << endl; q++;}
else if (a[0][0]==79 && a[1][0]==79 && a[2][0]==79)
{cout << "you lose !" << endl; q++;}
else if (a[0][1]==79 && a[1][1]==79 && a[2][1]==79)
{cout << "you lose !" << endl; q++;}
else if (a[0][2]==79 && a[1][2]==79 && a[2][2]==79)
{cout << "you lose !" << endl; q++;}
else if (a[0][0]==79 && a[1][1]==79 && a[2][2]==79)
{cout << "you lose !" << endl; q++;}
else if (a[0][2]==79 && a[1][1]==79 && a[2][0]==79)
{cout << "you lose !" << endl; q++;}
else
{cout << "tie!" << endl; t++;}

if (p == 1)
cout <<"\nUp to this point you have won:\t\t" << p << " game" << endl;
else cout <<"\nUp to this point you have won:\t\t" << p << " games" << endl;
if ( q == 1)
cout <<"The computer has won:\t\t\t" << q << " game" << endl;
else cout <<"The computer has won:\t\t\t" << q << " games" << endl;
if ( t == 1)
cout <<"And there have been:\t\t\t" << t << " tie\n" << endl;
else cout <<"And there have been:\t\t\t" << t << " ties\n" << endl;

cout << "Do you want to play again?(Y/N)" << endl;
cin >> answer;
}while (answer == 'y' || answer == 'Y');
getch();
return 0;
}


از اونجا که من مبتدی هستم! یه چیزی حدود 200 تا If , cout داره :) فکر کنم خیلی کوتاه تر از اینم میشد نوشت.

فقط امیدوارم بچه های کلاس اینجا رو پیدا نکنن و سورسه من لو نره :-"

نمایی از بازی!! :

]

خود بازی و سورسش :
 

Attachments

  • XO Game.zip
    44.9 KB · مشاهده: 13
  • source.zip
    1.9 KB · مشاهده: 7

mostafa_cpp

کاربر سایت
Jan 29, 2006
977
نام
مصطفي
تمام اين كد رو خودت نوشتي ؟

1 - اگه موقع وارد كردن رديف يا ستون ، به جاي عدد صحيح چيز ديگه اي واردكني ( مثل كاراكتر يا عدد اعشاري ) برنامه وارد يك حلقه نا متناهي ميشه

2 - بدون شرح ! :
cin >> choice;
srand(time(NULL));
h = rand()%2; // It produce 0 or 1. if it's 0 user has the
if (h == 0) // first move, else computer has it.
cout << "\nYou are first! " << endl;
else
cout << "\nI'm first, You're next!" << endl;


3 - تمام حالتهاي برد و باخت رو براش تعريف كردي كه اصلا كار قشنگي نيست ، اگر جدولت 10x10 يا بيشتر بود باز هم ميتونستي از اين روش استفاده كني ؟!
بايد با حلقه آرايه رو پيمايش و حالتهاي برد رو بررسي كني

4 - با استفاده از كلاس ميتونستي كد بهتري بنويسي ( حداقل براي چاپ جدول از يك تابع استفاده ميكردي ! )

5 - فايل هدر iomanip.h رو بي دليل اضافه كردي ، با توجه به مورد شماره 2 نيازي هم به Time.h نيست

6 - بهتره بعد از هر بار علامت خوردن جدول ، صفحه پاك بشه و جدول دوباره ترسيم بشه ، اگه برنامه Fullscreen هم اجرا بشه خيلي بهتره

7 - موفق باشي
 
آخرین ویرایش:

Mohammad

Aquatic Guru
Administrator
Sep 23, 2005
675
نام
محمد
نوشته شده توسط mostafa_cpp:
تمام اين كد رو خودت نوشتي ؟

1 - اگه موقع وارد كردن رديف يا ستون ، به جاي عدد صحيح چيز ديگه اي واردكني ( مثل كاراكتر يا عدد اعشاري ) برنامه وارد يك حلقه نا متناهي ميشه

2 - بدون شرح ! :
cin >> choice;
srand(time(NULL));
h = rand()%2; // It produce 0 or 1. if it's 0 user has the
if (h == 0) // first move, else computer has it.
cout << "\nYou are first! " << endl;
else
cout << "\nI'm first, You're next!" << endl;


3 - تمام حالتهاي برد و باخت رو براش تعريف كردي كه اصلا كار قشنگي نيست ، اگر جدولت 10x10 يا بيشتر بود باز هم ميتونستي از اين روش استفاده كني ؟!
بايد با حلقه آرايه رو پيمايش و حالتهاي برد رو بررسي كني

4 - با استفاده از كلاس ميتونستي كد بهتري بنويسي ( حداقل براي چاپ جدول از يك تابع استفاده ميكردي ! )

5 - فايل هدر iomanip.h رو بي دليل اضافه كردي ، با توججه به مورد شماره 2 نيازي هم به Time.h نيست

6 - بهتره بعد از هر بار علامت خوردن جدول ، صفحه پاك بشه و جدول دوباره ترسيم بشه ، اگه برنامه Fullscreen هم اجرا بشه خيلي بهتره

7 - موفق باشي
0 - آره همش رو خودم نوشتم ... هیچ مثال یا راهنمایی و اینجور چیزها هم نداشتم
همونطور که خیلی وقت پیش ها گفته بودم! من هیچ تجربه و آشنایی با برنامه نویسی نداشتم تا اینکه بالاخره این ترم مجبور شدم برنامه نویسی بردارم! انقدر هم ازش میترسیدم که از همون اول قشنگ سر کلاس همه چی رو گوش میدادم و همون روز تو خونه تمرین میکردم !
الانم کلاس تموم شده چیز پیشرفته ای هم درس ندادن به ما .... اکثراً مبانی بود پس انتظار نداشته باشین چیزه خفنی تو برنامم ببینین! ما کلاً حدود 20 جلسه کلاس داشتیم ...

1 - اتفاقاً تو ذهنم بود که اینجا بپرسم که چجوری این مشکلو حل کنم ... البته فکری هم روش نکردم ...

2 - اینجا کاربر یکی از شیر یا خط رو انتخاب میکنه بعد برنامه بوسیله h = rand()%2 یکی از اعداد 0 یا 1 رو بصورت تصادفی انتخاب میکنه اگه 0 شد کاربر اولین حرکت رو انجام میده اگه 1 شد کامپیوتر. البته این وسط اون انتخابه شیر یا خط نقش هویج رو داره :) و تشریفاتیه ! ولی بهر حال شانس اینکه کدومشون اول بشن 50 - 50 هست ... اشکالش چیه :cheesygri
یه مورده دیگه ای هم که داره اینه که جای شیر یا خط هر حرف دیگه ای هم انتخاب کنه مهم نیست!! ( چی چی نوشتم تو این برنامه من :) ) اینم کاری نداره میشه یه حلقه گذاشت که یارو فقط بتونه h یا t رو وارد کنه ..... بهر حال این عملیات بصورت 50-50 یکیشون رو انتخاب میکنه مشکلی هم نداره از نظر من :-"
کلاً چند جای برنامه کاملاً برام تازگی داشت چون تا حالا با همچین مواردی روبرو نشده بودم کتاب و مثال و تمرین اضافی و این چیزا هم در کار نبوده ( حسش نبوده در طول ترم! ) بنابراین از خودم ایده در کردم!!

3 - آره قبول دارم این جالب نیست ... ولی خداییش حوصله نداشتم فکر کنم روی الگوریتمش !

4 - تابع خوندیم ولی کلاس نمیدونم چیه!؟ این رو همین دیروز تونستم جمع و جورش کنم هنوز بهینه سازی نشده ! تابع هم اگه وقت شد میچپونم توش چند تا .... مسئله اینه که با همین هم نمرم رو میگیرم!

5 - iomanip.h رو همین الان هم نمیدونم چیه اصلاً ! کلاً من اوله برنامه برداشتم هر چی library بود گذاشتم که احیاناً مشکلی پیش نیاد در ادامه :cheesygri
اون time هم فکر کردم چون باید از srand(time(NULL)); استفاده کنم باید time رو بذارم اون بالا ... لازم نیست بذارم؟
srand(time(NULL)); هم برای این که عدد رندوم رو درست بده! اگه نذارم همیشه یه عدده رندوم ثابت میده

6 - اول برنامم همینجوری بود که هر بار پاک میشد ولی دیدم لزومی نداره اینجوری باشه چند خط هم کوتاه تر شد وقتی حذف کردم این رو ... حالا نمیدونم اگه دلیلی داره بگو بفهمم
فول اسکرین هم تا حالا نداشتیم بلد نیستم ...

7 - ممنون بابت نظرات و راهنمایی ها
 

mostafa_cpp

کاربر سایت
Jan 29, 2006
977
نام
مصطفي
همونطور که خیلی وقت پیش ها گفته بودم! من هیچ تجربه و آشنایی با برنامه نویسی نداشتم تا اینکه بالاخره این ترم مجبور شدم برنامه نویسی بردارم! انقدر هم ازش میترسیدم که از همون اول قشنگ سر کلاس همه چی رو گوش میدادم و همون روز تو خونه تمرین میکردم !
خب من هم از خيلي درسا ميترسم ولي از هر درسي بيشتر بترسم كمتر هم بهش توجه ميكنم :p
برنامه نويسي خيلي شيرين و دوست داشتنيه ولي ممكنه خيلي ها به خاطر محيط خشكي كه داره ازش بترسن

1 - اتفاقاً تو ذهنم بود که اینجا بپرسم که چجوری این مشکلو حل کنم ... البته فکری هم روش نکردم ...
از اين راه استفاده كن :

Code:
int row;
    char r[10];
    do
    {
    cin >> r;
    row=atoi(r);
    if (row>3 || row<1) 
        cout << "please enter again \n";
    } while (row>3 || row<1);


2 - اینجا کاربر یکی از شیر یا خط رو انتخاب میکنه بعد برنامه بوسیله h = rand()%2 یکی از اعداد 0 یا 1 رو بصورت تصادفی انتخاب میکنه اگه 0 شد کاربر اولین حرکت رو انجام میده اگه 1 شد کامپیوتر. البته این وسط اون انتخابه شیر یا خط نقش هویج رو داره :) و تشریفاتیه ! ولی بهر حال شانس اینکه کدومشون اول بشن 50 - 50 هست ... اشکالش چیه :cheesygri
یه مورده دیگه ای هم که داره اینه که جای شیر یا خط هر حرف دیگه ای هم انتخاب کنه مهم نیست!! ( چی چی نوشتم تو این برنامه من :) ) اینم کاری نداره میشه یه حلقه گذاشت که یارو فقط بتونه h یا t رو وارد کنه ..... بهر حال این عملیات بصورت 50-50 یکیشون رو انتخاب میکنه مشکلی هم نداره از نظر من:-"
برنامه يا بايد شروع كننده رو از كار بر بگيره ، يا اينكه خودش يكي رو انتخاب كنه
اگر ميخواي بصورت رندم نفر اول مشخص بشه ، cin >> choice رو حذف كن
اگر ميخواي كاربر انتخاب كنه كه اول شروع كنه يا دوم ، h = rand()%2 رو بردار

4 - تابع خوندیم ولی کلاس نمیدونم چیه!؟ این رو همین دیروز تونستم جمع و جورش کنم هنوز بهینه سازی نشده ! تابع هم اگه وقت شد میچپونم توش چند تا .... مسئله اینه که با همین هم نمرم رو میگیرم!
كلاس نوع داده تعريف شده توسط كاربره مثلا يه نوع داده تعريف ميكني به نام tictactoe و متغير xo رو از اون نوع تعريف ميكني بعد ميتوني مثلا براي چاپ جدول فقط بنويسي xo.print () s

5 - iomanip.h رو همین الان هم نمیدونم چیه اصلاً ! کلاً من اوله برنامه برداشتم هر چی library بود گذاشتم که احیاناً مشکلی پیش نیاد در ادامه :cheesygri
خسته نباشي :)

اون time هم فکر کردم چون باید از srand(time(NULL)); استفاده کنم باید time رو بذارم اون بالا ... لازم نیست بذارم؟
srand(time(NULL)); هم برای این که عدد رندوم رو درست بده! اگه نذارم همیشه یه عدده رندوم ثابت مید
اگر در مورد 2 ، از h = rand()%2 استفاده كني وجود اين هدر لازمه ولي اگر از h = rand()%2 استفاده نكني ديگه لازم نيست اين هدر رو اضافه كني

6 - اول برنامم همینجوری بود که هر بار پاک میشد ولی دیدم لزومی نداره اینجوری باشه چند خط هم کوتاه تر شد وقتی حذف کردم این رو ... حالا نمیدونم اگه دلیلی داره بگو بفهمم
فول اسکرین هم تا حالا نداشتیم بلد نیستم ...
خب اين به خاطر زيبايي برنامس ، تو دوست داري اگر داري XO بازي ميكني و يك خونه از جدول رو علامت ميزني همونجا نمايش داده بشه يا يه جا ديگه نشون بده ؟

فول اسكرين هم اگر به دردت ميخوره بگو بهت بگم
 
آخرین ویرایش:

Mohammad

Aquatic Guru
Administrator
Sep 23, 2005
675
نام
محمد
خب من هم از خيلي درسا ميترسم ولي از هر درسي بيشتر بترسم كمتر هم بهش توجه ميكنم
برنامه نويسي خيلي شيرين و دوست داشتنيه ولي ممكنه خيلي ها به خاطر محيط خشكي كه داره ازش بترسن
من از بس وحشت داشتم توی 5 ترم قبلی برنامه نویسی رو برنداشتم ولی این ترم دیدم دیگه مجبورم پاسش کنم! توی رشته ما زبان Fortran بیشتر کار میشه دانشکده ما هم فقط همین زبان رو ارائه میده ولی خوشبختانه برنامه من طوری بود که فرترن با یه درس دیگم تداخل داشت و مجبور شدم C++ با دانشکده برق بگیرم و الان بسیار خوشحالم از واقعه :)
هم بخاطر اینکه C باحالتره هم اینکه استادی که سر کلاسش رفتم یکی از بهترین استاد هایی بود که تا حالا دیده بودم و باعث شد من کاملاً نظرم در مورد برنامه نویسی عوض بشه ... الان خیلی دوست دارم برنامه نویسی رو ! در طول ترم هم تنها درسی که روش کار کردم همین بود!
از اين راه استفاده كن
اگه میشه یه توضیحی بده !
atoi چکار میکنه؟

برنامه يا بايد شروع كننده رو از كار بر بگيره ، يا اينكه خودش يكي رو انتخاب كنه
اگر ميخواي بصورت رندم نفر اول مشخص بشه ، cin >> choice رو حذف كن
اگر ميخواي كاربر انتخاب كنه كه اول شروع كنه يا دوم ، h = rand()%2 رو بردار
میخوام شروع کننده رندوم انتخاب بشه ... کاربر هم یه شیر یا خط انتخاب میکنه و خوشحال میشه واسه خودش :)

كلاس نوع داده تعريف شده توسط كاربره مثلا يه نوع داده تعريف ميكني به نام tictactoe و متغير xo رو از اون نوع تعريف ميكني بعد ميتوني مثلا براي چاپ جدول فقط بنويسي xo.print () s
نخوندیم ما !
خسته نباشي
سلامت باشی :)

اگر در مورد 2 ، از h = rand()%2 استفاده كني وجود اين هدر لازمه ولي اگر از h = rand()%2 استفاده نكني ديگه لازم نيست اين هدر رو اضافه كني
غیر از h = rand()%2 یک جای دیگه هم از rand استفاده کردم برای اینکه کامپیوتر خونش رو رندوم انتخاب کنه ... پس فکر کنم هدر time لازمه

خب اين به خاطر زيبايي برنامس ، تو دوست داري اگر داري XO بازي ميكني و يك خونه از جدول رو علامت ميزني همونجا نمايش داده بشه يا يه جا ديگه نشون بده ؟
من میخوام بتونم برگردم بالاتر و حرکت های قبلی رو بررسی کنم :)

فول اسكرين هم اگر به دردت ميخوره بگو بهت بگم
واسه این برنامه لازم ندارم ... الانم حس چیز جدید یاد گرفتن نیست !
بعدآً لازم شد بهت میگم ... ممنون
 

mostafa_cpp

کاربر سایت
Jan 29, 2006
977
نام
مصطفي
اگه میشه یه توضیحی بده !
atoi چکار میکنه؟

چرا كه نه

وقتي يه متغير صحيح داري و به جاي مقدار صحيح چيزي ديگه اي بهش نسبت بديم ، مقداري از حافظه رو داخل اون خونه ميريزه و عملا باعث از كار افتادن متغير ميشه
براي جلوگيري از اين راه ما ميايم به جاي عدد صحيح ، كاراكتر ميگيريم تا اگر كاربر هرچيزي وارد كرد به عنوان رشته در نظر بگيردش و ديگه مستقيم پردازش نكنه تا باعث بروز مشكل بشه
رشته رو از كاربر ميگيريم و اون رو به عدد صحيح تبديل ميكنيم
كار تابع atoi اينه كه يك رشته رو به عنوان وردوي ميگيره و معادل عدد صحيح اون رو بر ميگردونه
براي مثال معادل '10' عدد 10
معادل 'A' عدد 0
و معادل 2.5 عدد 2 هستش
به اينصورت ميتونيم از بروز اون حلقه نامتناهي جلوگيري كنيم

میخوام شروع کننده رندوم انتخاب بشه ... کاربر هم یه شیر یا خط انتخاب میکنه و خوشحال میشه واسه خودش :)

:)

نخوندیم ما !

يكي از امكانات فوق العاده قوي زبون C++ كه باعث برتريش نسبت به C شده شي گرايي هستش
يعني اصلا C++ بدون شي گرايي معني نداره
اگه دوست داشتي برنامه نويسي C++ رو ادامه بدي حتما مباحث شي گرايي اون رو مطالعه كن

غیر از h = rand()%2 یک جای دیگه هم از rand استفاده کردم برای اینکه کامپیوتر خونش رو رندوم انتخاب کنه ... پس فکر کنم هدر time لازمه
كامپيوتر براي انتخاب يك عدد رندوم الگوريتم فوق العاده پيچيده اي داره ، در واقع اصلا عدد رندومي توليد نميكنه !
نميخوام وارد بازهاي پيچيده بشم ! :) ولي همينقدر بدون براي اينكه Cpu بتونه انتخاب يك عدد رندوم رو شبيه سازي كنه بايد يك پارامتر متغير بهش پاس بديم
بهترين راه استفاده از ساعت سيستمه كه هميشه در حال تغييره ، پس اگر از تابع rand استفاده ميكني بايد time(0) رو به تابع srand پاس بدي ، كه همين كار رو هم كرده بودي

من میخوام بتونم برگردم بالاتر و حرکت های قبلی رو بررسی کنم :)
:)

واسه این برنامه لازم ندارم ... الانم حس چیز جدید یاد گرفتن نیست !
بعدآً لازم شد بهت میگم ... ممنون

در خدمت هستيم
 

Mohammad

Aquatic Guru
Administrator
Sep 23, 2005
675
نام
محمد
یادم رفته بود ازت تشکر کنم :)

در مورد اون بازی های پیچیده ! یه چیزایی یادم میاد تو مایه های اینکه عدد رندوم از بین ثانیه هایی که از ژانویه 1970 تا حالا گذشته انتخاب میشه ...
 

mohammad1365

کاربر سایت
Mar 1, 2006
128
دوستان من يك سوال داشتم. چطوري ميشه تو محيط visual c++6 از c++ استفاده كرد؟من هر كاري ميكنم نميتونم خروجي بگيرم هيچ اخطاري هم نميده.اگر كمكم كنيد ممنون ميشم. اگر هم يه كامپايلر سي پلاس پلاس معرفي كنيد ممنون ميشم.من كد ها رو توي توربو سي مينويسم بازم ارور ميده.پس لطف كنيد يا طرز استفاده از سي پلاس پلاس رو توي ويژوال سي پلاس پلاس به من ياد بديد يا يه كامپايلر درست حسابي معرفي كنيد. بازم ممنون.در طي روزهاي اينده بازم مزاحمتون ميشم.
 

hlozeie

کاربر سایت
Sep 25, 2005
180
نام
Hamed
سلام
آقايون خواهش ميکنم به من کمک کنيد من ميخوام توي محيط C يه برنامه بنويسم که با استفاده از آرايه ي چند بعدي نام نام خوانوادگي و نام پدر 5 نفر رو بگيره و نمايش بده
چيز ساده اي هست خواهش ميکنم اينو يکي برام تا ساعت 3 ظهر بنويسه چون خودم يه مشکل دارم
دستتون درد نکنه
 

Saman

Administrator
Sep 22, 2005
1,069
من ميخوام توي محيط C يه برنامه بنويسم که با استفاده از آرايه ي چند بعدي نام نام خوانوادگي و نام پدر 5 نفر رو بگيره و نمايش بده
چيز ساده اي هست خواهش ميکنم اينو يکي برام تا ساعت 3 ظهر بنويسه چون خودم يه مشکل دارم

من كه برات نمينويسم ! چون برنامه هاي مربوط به خودم رو هم نمينويسم :cheesygri ساعت هم كه از سه بعد از ظهر گذشته !
اما اگه يه روز خواستي برناه اي بنويسي كه اين كار رو انجام بده، بهت پيشنهاد ميكنم با Structure بنويسي كه بسيار براي اين كار مناسبه.

موفق باشي.
 

hlozeie

کاربر سایت
Sep 25, 2005
180
نام
Hamed
خيلي جواب دندان شکني دادي :cheesygri دستت درد نکنه خيلي کمک بزرگي کردي امروز که گذشت و من ضايع شدم ولي از اين به بعد هرکي مشکل داشت بگه خودم رفعش کنم
درضمن کسي انجمني با موضوع برنامه نويسي بلده خواهشا بگه:blushing:
به قول يکي از اعضاي سايت
باي باي:cheesygri
 

gamer220

کاربر سایت
Sep 29, 2005
301
ممنون میشم بگید اینکه Vb چقدر مزیت نسبت به C داره که من از اول برم دوباره دنبال یه زبان دیگه؟

VB مزییتی نصبت به c نداره ، شما اول از vb شروع باید بکنی ( نه حتما ) چون راحت میتونی اساس برنامه نویسی رو باهاش یاد بگیری و بعد بری روی یک زبان قویتر و رو اون کار کنی . این c هست که نسبت به vb مزیت داره در اصل c زبان سخت افزاری به حساب میاد و رابطه ی تنگا تنگی با assembly داره . بهترین مکان برای شروع هر زبانی www.flazx.com هست (اگه انگلیسیت خوب باشه ) .

موفق باشید
 

mostafa_cpp

کاربر سایت
Jan 29, 2006
977
نام
مصطفي
با استفاده از آرايه ي چند بعدي
وقتي آرايه از دو بعد بيشتر ميشه ، نوشتن برنامه هم به مراتب سخت تر ميشه
آرايه هاي بيشتر از سه بعد هم از درك انسان خارجه !
كلا سوال عجيب غريبيه ، هيچوقت براي اينكار از آرايه استفاده نميكنن
 

کاربرانی که این قسمت را مشاهده می‌کنند

Top
رمز عبور خود را فراموش کرده اید؟
or ثبت‌نام سریع از طریق سرویس‌های زیر