ParsX.com
پذیرش پروژه از دانشجویی ... تا سازمانی 09376225339
 
   ProfileProfile   Log in to check your private messagesLog in to check your private messages  |  FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups Log inLog in   RegisterRegister 

کد بازی دوز همراه با اشکال

 
Post new topic   Reply to topic    ParsX.com Forum Index -> C/C++ Programming
View previous topic :: View next topic  
Author Message
lkjk123456
مهمون يكي دو روزه


Joined: 16 Aug 2005
Posts: 8

PostPosted: Wed Aug 17, 2005 11:50 pm    Post subject: کد بازی دوز همراه با اشکال Reply with quote

--------------------------------------------------------------------------------

سلام
این یک برنامه بازی.بازی دوز.ولی اشکال داره.لطفا اگر امکان داره این برنامه را اجرا کنید و اشکالات اون را به 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;
}
}
Back to top
arash
مدير بخش سي
مدير بخش سي


Joined: 27 Nov 2004
Posts: 1232
Location: www.parsx.com

PostPosted: Fri Aug 19, 2005 1:18 pm    Post subject: Reply with quote

یکم صبر کنی حلش می کنم .
Back to top
arash
مدير بخش سي
مدير بخش سي


Joined: 27 Nov 2004
Posts: 1232
Location: www.parsx.com

PostPosted: Sat Aug 20, 2005 11:04 pm    Post subject: Reply with quote

بیبینم این چطوره !!!
اگه بخواهی بهترم می شه .
هم می شه بستش داد .
Back to top
arash
مدير بخش سي
مدير بخش سي


Joined: 27 Nov 2004
Posts: 1232
Location: www.parsx.com

PostPosted: Sun Aug 21, 2005 6:00 am    Post subject: Reply with quote

فعلا حسش و وقتش نبود وگرنه با حال تر از این ها می شه نوشتش .
در ضمن در مورد تکه های برنامت یکم بیشتر توضیح بده .
#include<stdio.h>
#include<conio.h>

void kadr();
void show();
void get();
void help();
int won_();

// http://www./Parsx.com
const i1=30,i2=i1+3,i3=i2+3, /*  */ j1=10,j2=j1+2,j3=j2+2;
char xo[3][3],f;

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();
}
/*****************************************************/
Back to top
lkjk123456
مهمون يكي دو روزه


Joined: 16 Aug 2005
Posts: 8

PostPosted: Mon Aug 22, 2005 3:02 am    Post subject: Reply with quote

ارش دستت درد نكنه
لينك((اين))باز نميشه
در مورد بر نامه هم توضيحات كاملي ميدم.چون ميخوام اشكالاتم رو خود بر نامه رفع بشه
البته الان فرصتشو ندارم
بزودي
Back to top
Display posts from previous:   
Post new topic   Reply to topic    ParsX.com Forum Index -> C/C++ Programming All times are GMT + 3.5 Hours
Page 1 of 1

 
Jump to:  
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