سلام
این یک برنامه بازی.بازی دوز.ولی اشکال داره.لطفا اگر امکان داره این برنامه را اجرا کنید و اشکالات اون را به email من بفرستید.اگر کمکم کنید منم قول میدم به شما کمک کنم.
// 10 mohreye man
//200 mohreye computer
//0 meghdare khali
#include <iostream.h>
#include <conio.h>
void moveman(int &x, int &y);
void search(int arr[3][3], int &k,int &l, int &t, int mani[3], int manj[3], int computeri[3], int computerj[3], int blanki[3], int blankj[3]);
void closedanger(int arr[3][3], int &k, int mani[3], int manj[3], int &n, int &e, int&f);
void findplace(int arr[3][3], int &l, int computeri[3], int computerj[3], int &n, int &e, int &f);
void fainalytest(int arr[3][3], int &test);
main(){
int i,j,z,k,l,t,test=0,n=0; //n dar tabe closedanger yek parcham ast ###
int e,f;
int iman,jman; //makane harekate avale bazigar
int mani[3],manj[3],computeri[3],computerj[3],blanki[3],blankj[3];
int arr[3][3];
for(i=0; i<3; i++) //meghdar khli dadan be khnehaye bazi
for(j=0; j<3; j++)
arr[i][j]=0;
cout<<"makane mohreye khod ra vared konid: ";
cin>>iman>>jman; /* harekat avale bazigar */
arr[iman][iman]=10;
if(arr[1][1]==0){ /* harekate avale computer */
arr[1][1]=200;
cout<<"1 1 ";
}
else{
arr[0][0]=200;
cout<<"0,0 ";
}
for(z=1; z<1000; z++){
cout<<"makane mohreye khod ra vared konid: ";
moveman(i,j);
arr[i][j]=10;
search(arr,k,l,t,mani,manj,computeri,computerj,blanki,blankj);
closedanger(arr,k,mani,manj,n,e,f);
if(n==1)
cout<<e<<f;
findplace(arr,l,computeri,computerj,n,e,f);
if(n==1)
cout<<e<<f;
fainalytest(arr,test);
if(test==1)
break;
}
getch();
}
//tabe moveman harakate bazigar ra taein mikonad
void moveman(int &x, int &y){
cin>>x>>y;
}
/* tabe search makane mohrehaye bazigar,computer va hamchenin
makane mohrehaye khali ra moshakhs mikonad*/
void search(int arr[3][3], int &k, int &l, int &t, int mani[3], int manj[3], int computeri[3], int computerj[3], int blanki[3], int blankj[3]){
int i,j;
k=0;
l=0;
t=0;
for(i=0; i<3; i++)
for(j=0; j<3; j++){
if(arr[i][j]==10){
mani[k]=i;
manj[k]=j;
k+=1;
}
if(arr[i][j]==200){ //makane mohrehaye computer
computeri[l]=i;
computerj[l]=j;
l+=1;
}
if(arr[i][j]==0){
blanki[t]=i;
blankj[t]=j;
t+=1;
}
}
}
/* tabe closedanger makane mohreye computer ra be gonei taein mokonad ke
khatar az an bartaraf shavad yani 3 mohreye bazigar dar yek radif
gharar nagirad*/
void closedanger(int arr[3][3], int &k, int mani[3], int manj[3], int &n, int &e, int &f){
int i,j;
/* n yek parcham ast.agar computer harekate khod ra anjam dad meghdare
1 migirad */
for(i=0; i<k; i++)
if(mani[k]==mani[k+1]){ //i ha yeki bashand
for(j=0; j<3; j++){
if(arr[mani[k]][j]==0){
arr[mani[k]][j]=200;
e=mani[k];
f=j;
n=1;
break; //az halgheye for aval khareg mishavad
}
}
if(n==1)
break; //az halgheye for dovoom khareg mishavasd
}
else if((mani[k]==manj[k]) && (mani[k+1]==manj[k+1])){ // i ha va j ha yeki bashad
for(j=0; j<3; j++){
if(arr[j][j]==0){
arr[j][j]=200;
e=j;
f=j;
n=1;
break;
}
}
if(n==1)
break;
}
else if((arr[1][3]==10 && arr[3][1]==10) ||
(arr[1][3]==10 && arr[2][2]==10) ||
(arr[3][1]==10 && arr[2][2]==10)){ //mohreha dar ghotr bashand manand ghabli
/*for(j=0; j<3; j++){ chon har 3 mored ra jodagane baresi kardeim */
if(arr[1][3]==0){
arr[1][3]=200;
e=1;
f=3;
n=1;
break;
}
if(arr[2][2]==0){
arr[2][2]=200;
e=2;
f=2;
n=1;
break;
}
if(arr[3][1]==0){
arr[3][1]=200;
e=3;
f=1;
n=1;
break;
}
//}
// if(n==1)
// break; //az halgheye for dovom kharej mishavad
}
else if(manj[k]==manj[k+1]){
for(j=0; j<3; j++){
if(arr[manj[k]][j]==0){
arr[manj[k]][j]=200;
e=manj[k];
f=j;
n=1;
break;
}
}
if(n==1)
break;
}
}
/* tabe findplace dar sorati ke tabe closedanger makniu baraye mohreyecomputer
taein nakarde bashad, makani taein mikonad */
void findplace(int arr[3][3], int &l,int computeri[], int computerj[], int &n, int &e, int &f){
int i,j;
l=0;
n=0;
if(n==1)
goto end;
else
for(i=0; i<3; i++)
for(j=0; j<3; j++)
if(arr[i][j]==200){
computeri[l]=i;
computerj[l]=j;
l+=1;
}
for(i=0; i<l; i++)
if(computeri[l]==computerj[l]){ // i ha yeki bashad
for(j=0; j<3; j++){
if(arr[computeri[l]][j]==0){
arr[computeri[l]][j]=200;
e=computeri[l];
f=j;
n=1;
break;
}
}
if(n==1)
break;
}
else if(computeri[l]==computerj[l] && computeri[l+1]==computerj[l+1]){ // i ha va j ha yeki bashand
for(j=0; j<3; j++){
if(arr[j][j]==0){
arr[j][j]=200;
e=j;
f=j;
n=1;
break;
}
}
if(n==1)
break;
}
else if((arr[1][3]==200 && arr[3][1]==200) ||
(arr[1][3]==200 && arr[2][2]==200) ||
(arr[3][1]==200 && arr[2][2]==200)){
if(arr[1][3]==0){
arr[1][3]=200;
e=1;
f=3;
break;
}
if(arr[2][2]==0){
arr[2][2]=200;
e=2;
f=2;
break;
}
if(arr[3][1]==0){
arr[3][1]=200;
e=3;
f=1;
break;
}
}
else if(computeri[l]==computerj[l+1]){
for(j=0; j<3; j++){
if(arr[computerj[l]][j]==0){
arr[computerj[l]][j]=200;
e=computerj[l];
f=j;
n=1;
break;
}
}
if(n==1)
break;
}
end:
}
/* tabe finalytest dar sorati ke 3 mohreye bazigar va ya computer dar yek radif
gharar dashte bashand an ra moshakhs mikonad */
void fainalytest(int arr[3][3], int &test){
int i,j;
int sum=0;
test=0;
for(i=0; i<3; i++){
for(j=0; j<3; j++)
sum=sum+arr[i][j];
if(sum==30 || sum==600){
test=1;
break;
}
if(test==1)
break;
}
}
void main()
{
int i,j=0,won=0;
clrscr();
for(;j<3;j++)
for(i=0;i<3;xo[i][j]=' ',i++);
kadr();
do{ gotoxy(1,5);
printf("What is first (X/O) :");
f=getch();
if(f=='x')f='X';
if(f=='o')f='O';
}while( (f!='O')&&(f!='X'));
printf("%c",f);
do{
get();
show();
}while(!(won=won_()));
gotoxy(30,20);
switch(won){
case 1:printf("X is won !!! \n");
break;
case 2:printf("O is won !!! \n");
break;
case 3:printf("Eqaul \n");
break;
}
getch();
}// END
/*****************************************************/
void kadr(){
int i,j;
for(j=j1+1;j<=j3;j+=2)
for(i=i1-1;i<=i3+1;gotoxy(i,j),printf("-"),i++);
for(i=i1+1;i<=i3;i+=4)
for(j=j1;j<=j3;gotoxy(i,j),printf("|"),j++);
}//end of kadr
/*****************************************************/
void show(){
int i,j,x=0,y=0;
clrscr();
kadr();
for(j=j1;j<=j3;j+=2,y++)
for(i=i1,x=0;i<=i3;i+=3,x++)
{
gotoxy(i,j);
printf("%c",xo[x][y]);
}
}//end of show
/*****************************************************/
int won_(){
char x[3];
int i,j;
//ofoghy
for(j=0;j<3;j++)
{
for(i=0;i<3;i++)
x[i]=xo[i][j];
if((x[0]==x[1])&&(x[2]==x[1])&&(x[1]!=' '))
if(x[1]=='X')return 1;
else return 2;
}//amody
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
x[j]=xo[i][j];
if((x[0]==x[1])&&(x[2]==x[1])&&(x[1]!=' '))
if(x[2]=='X')return 1;
else return 2;
} //movarab
for(j=0,i=0;j<3;j++,i++)
x[j]=xo[i][j];
if((x[0]==x[1])&&(x[2]==x[1])&&(x[1]!=' '))
if(x[2]=='X')return 1;
else return 2;
for(j=2,i=0;i<3;j--,i++)
x[i]=xo[i][j];
if((x[0]==x[1])&&(x[2]==x[1])&&(x[1]!=' '))
if(x[2]=='X')return 1;
else return 2;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(xo[i][j]==' ') return 0;
return 3;
}//end of won_
/*****************************************************/
void get(){
char c='f';
while(c=='f'){
show();
gotoxy(15,3);
printf("Press >>F<< for Help");
gotoxy(10,7);
printf("Enter number between 1 till 9 ");
gotoxy(20,20);
printf("Now is : %c",f);
if((c=getche())=='F')c='f';
switch(c)
{ case 'f':help();
break;
case '1':if(xo[0][0]==' ')
xo[0][0]=f;
else continue;
break;
case '2':if(xo[1][0]==' ')
xo[1][0]=f;
else continue;
break;
case '3':if(xo[2][0]==' ')
xo[2][0]=f;
else continue;
break;
case '4':if(xo[0][1]==' ')
xo[0][1]=f;
else continue;
break;
case '5':if(xo[1][1]==' ')
xo[1][1]=f;
else continue;
break;
case '6':if(xo[2][1]==' ')
xo[2][1]=f;
else continue;
break;
case '7':if(xo[0][2]==' ')
xo[0][2]=f;
else continue;
break;
case '8':if(xo[1][2]==' ')
xo[1][2]=f;
else continue;
break;
case '9':if(xo[2][2]==' ')
xo[2][2]=f;
else continue;
break;
}
if((f=='X')&&(c!='f'))f='O';
else if((f=='O')&&(c!='f'))f='X';
}
}
/*****************************************************/
void help(){
int i,j,x=0;
clrscr();
kadr();
for(j=j1;j<=j3;j+=2)
for(i=i1;i<=i3;i+=3)
{
gotoxy(i,j);
printf("%d",++x);
}
getch();
}
/*****************************************************/
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum