المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : لعبة x-o


معتصم بكري
03-06-2008, 01:43 PM
السلام عليكم هذه لعبة x-o طبعاً أنا سويتا حسب مصرنا أخدين في المعهد و أرجو من الطلاب أن يفهموها ويستفادوا منها
#include<iostream>
using namespace std;
#include<conio.h>
bool readplayer(char num[][3],short player);
void drawing(char num[][3]);
bool search(char num[][3]);
bool nowinner(char num[][3]);
//------------------------------------------------------------------------------
void main()
{
char countinue;
char num[3][3]={ {'7','8','9'} , {'4','5','6',} , {'1','2','3'} };
do
{
bool resu=0;
char num[3][3]={ {'7','8','9'} , {'4','5','6',} , {'1','2','3'} };
while(1<2)
{

resu=readplayer(num,1);
if(resu==1)
{
cout<<"The Winner is O"<<endl;
break;
}
if(nowinner(num)==1)
{
cout<<" N O W I N N E R "<<endl;
cout<<"to play again press y else n"<<endl;
countinue=cin.get();
break;
}
resu=readplayer(num,2);
if(resu==1)
{
cout<<"The Winner is X"<<endl;
break;
}

}
}while(countinue == 'y' || countinue== 'Y');
}
//---------------------------------------------------------------------------------
bool readplayer(char num[3][3],short player)
{
drawing(num);
char test;
bool resu=0;
bool store=0;
while(store==0)
{
test=getch();
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if(num[i][j]==test)
{
if(player==1)
num[i][j]='O';
else if(player==2)
num[i][j]='X';
store=1;
}
}

drawing(num);
resu=search(num);
return resu;
}

void drawing(char num[][3])
{
system("cls");
cout<<"\n\n\n"<<endl;
cout<<"\t\t\t"<<(char)197<<(char)196<<(char)197<<(char)196<<(char)197<<(char)196<<(char)197<<endl;
cout<<"\t\t\t"<<(char)179<<num[0][0]<<(char)179<<num[0][1]<<(char)179<<num[0][2]<<(char)179<<endl;
cout<<"\t\t\t"<<(char)197<<(char)196<<(char)197<<(char)196<<(char)197<<(char)196<<(char)197<<endl;
cout<<"\t\t\t"<<(char)179<<num[1][0]<<(char)179<<num[1][1]<<(char)179<<num[1][2]<<(char)179<<endl;
cout<<"\t\t\t"<<(char)197<<(char)196<<(char)197<<(char)196<<(char)197<<(char)196<<(char)197<<endl;
cout<<"\t\t\t"<<(char)179<<num[2][0]<<(char)179<<num[2][1]<<(char)179<<num[2][2]<<(char)179<<endl;
cout<<"\t\t\t"<<(char)197<<(char)196<<(char)197<<(char)196<<(char)197<<(char)196<<(char)197<<endl;
}
bool search(char num[][3])
{
bool result=0;
if(num[0][0] == num[0][1] && num[0][1]==num[0][2] || num[1][0] == num[1][1] && num[1][1]==num[1][2] || num[2][0] == num[2][1] && num[2][1]==num[2][2])
result=1;

else if(num[0][0] == num[1][0] && num[1][0]==num[2][0] || num[0][1] == num[1][1] && num[1][1]==num[2][1] || num[0][2] == num[1][2] && num[1][2]==num[2][2])
result=1;

else if( (num[0][0] == num[1][1] && num[1][1]==num[2][2]) || (num[0][2] == num[1][1] && num[1][1]==num[2][0]) )
result=1;

if(result==1)
return 1;

return 0;
}
bool nowinner(char num[][3])
{
int test=0;
for(int i=0 ; i<3 ; i++)
for(int x=0 ; x<3 ; x++)
if(num[i][x]=='X' || num[i][x]=='O' )
test++;
if(test==9)
return 1;
return 0;
}

lasko
03-06-2008, 04:45 PM
That what i am talking about man 5smil
4smilbut you are unfithful
nevertheless you are the best

مــحــمــد
03-07-2008, 06:43 AM
السلام عليكم ....
أخي معتصم بصراحة هيك عم تضرنا أكتر ما تفيدنا :) ....
فأنا عندي هالحل بطريقتين وهي أجت التالتة :)وأكيد مالح أستفاد شي ....
لأنو ما بعرف لشو هي المكاتب اللي مضمنها ولا حتى فكرة الحل أو خوارزمية الحل....
فحبذا يا أخي العزيز أن تعطينا الخوارزمية التي اتبعتها في الحل وماذا استخدمت من اللغة لتطبيق هذه الخوارزمية..هذا إن أردت أن تفيدنا ....

تقبل صراحة أخوك وصديقك محمد ....
مع كامل مودتي واحترامي لجهودك في نشر الفائدة بين الطلاب:rolleyes: ....
والسلام عليكم ورحمة الله وبركاته....

معتصم بكري
03-08-2008, 12:34 AM
السلام عليكم أخي نمرالبرمجة لح حاول اد مافيني انو اشرح الكود
أولاً مشان المكاتب:
مكتبة <iostream> في معروفة مكتبة الدخل والخرج ومشان h. فلا أضعها من أجل أن استخدم
using namespace std; والتي تحوي عدة توابع جديدة أنا استخدمت هنا
system("cls"); وهو أمر مسح الشاشة
حيث تمكنك من التعامل مع أوامر الدوس
<conio.h> فوضعتها من أجل الأمر ()getch الذي يقوم بأخذ محرف واحد عند ضغطه مباشرة من لوحة المفاتيح وتخزينه في المتحول المسند إليه
ومشان خوارزمية الحل:
أنشأت مصفوفة محرفية ووضعت فيها الأرقام متل موموجدين في اللعبة بحيث إذا ادخل المستخدم رقم فيقوم بالبحث عنه ضمن هذه المصفوفة فإذا وجده نظر إلى الرقم المرسل فإذا
كان الرقم (1)أي الاعب الأول فيضع (O) وإذا القم (2) يضع (X)وإذا لم يجده فيكون الرقم مدخل مسبقأ فيعيد الإدخال مرة اخرى
ثم يقوم برسم المصفوفة من جديد مع تعديلات الإدخال
ويوجد تابع يقوم بعد كل مرة إدخال بالبحث ان كان قد فاز احد وذللك حسب قوانين اللعبة المعروفة واذا امتلأت المصفوفة دون فوز احد تنتهي اللعبة
وكل تابع مسؤول عن مهمة من المهمات السابقة

لعيونك أخ نمرالبرمجة

D@RE DEVIL
03-12-2008, 11:49 AM
THANK YOU AGAIN MOATASEM VERY MUCH

doha mokdad
04-04-2008, 11:03 AM
بصراحة أخي معتصم لم أستطع فهم الحل جيدا
كما أني لم أعرف ماذا أكتب عند الادخال
أرقام أم حرفي الx أو o