Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Κάνω μία άσκηση(ντάμα η checkers στα αγγλικά) πάνω σε dev c++ εδώ και κάτι μέρες η οποία προς στιγμήν δούλευε μια χαρά(δεν είναι ολοκληρωμένη αλλά τα κομμάτια που έχω κάνει δούλευαν μια χαρά. Έβαλα ubuntu επειδή σε ubuntu πρέπει να τρέχει η άσκηση και πήγα να την τρέξω. Μου έβγαλε ένα error που δε μου εβγαζε στο dev c++ τίποτα σοβαρό το έφτιαξα. Αλλά επίσης μου έβγαλε άπιρα warnings. Τέλοσπάντων παραβλέπω τα warnings και την τρέχω και ενώ στον dev c++ έτρεχε μια χαρά με τον ubuntu κατέρευσε κατευθείαν. Ένα παράδειγμα ξεκινάει το πρόγραμμα δίνει ο χρήστης μία κίνηση και αντί να κάνει την κίνηση λέει. Ο χρήστης Χ έχασε. Το οποίο με τον dev C++ συνέβενε όταν όντως έχανε ο χρήστης. Πως είναι εφικτό να γίνεται τόσο διαφορετικά με 'αλλο compiler.

Δημοσ.

Γιατί δεν το πας κομμάτι-κομμάτι να δεις που τρώει το σκάλωμα?!

 

Μη ξεχνάς οτι έφυγες από ένα λειτουργικό και πήγες σε άλλο. Χωρίς κώδικα, δεν μπορούμε να βοηθήσουμε και πολύ ...

Δημοσ.

πραγματικά έχω σοκαριστεί θα γράψω όλον τον κώδικα και θα βάλω βελάκι στο 1ο λάθος που βγάζει..ο κώδικας μου είναι πάνω απο 1000 γραμμές. Έχω υποδείξει το 1ο warning που μου βγάζει με βελάκι.

ps:χρησιμοποιώ το Geany.

 

 

>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


typedef struct node
{
       char array[8][8];
       struct node *next;
}NODE;

typedef struct stack
{
       NODE *top;
       int size;
}STACK;

typedef struct FourCoords
{
       int x0,y0,x1,y1,x2,y2,x3,y3,t;
}FourCoords;

void gemisma(char [8][8]); //vazei ta poulia stis arxikes tous theseis
void printBoard(char [8][8]); //ektupwnei to tamplo
void play(char [8][8]);  //ulopoiei to paixnidi
int isValidMove(char[8][8], char[] , int, int, FourCoords); //elenxei an mia kinhsh einai egurh
int emptyBlock(char[8][8] , int, int); //elenxei ama h sugekrimenh thesh einai kenh
void recursion(char[8][8], int, int);  //anadromiko "fagwma" kaleitai otan o xrhsths kanei mia egurh kinhsh
void help(); //ektypwnei vohtheia
struct FourCoords checking(char[8][8], int);  //
int checkLoose(char[8][8], int); //elenxei an kapoios exei xasei to paixnidi
void pushStack(char[8][8], STACK*); //push sth stoiva
void popStack(char[8][8], STACK*); //pop apo th stoiva
int xfrom(char[]); //kanoun thn allagh gt o xrhsths ousiastika dinei anapoda tis suntetagmenes
int yfrom(char[]); //kai epishs metatrpeoun tis syntetagmenes poy dinei o xrhsths se arithmous
int xto(char[]);
int yto(char[]);  
void usersMove(char[8][8], char[]); //ulopoiei thn kinhsh tou paixth
int changeTurn(int); //allagh seiras
void terminating(); //ama epileksei o xrhsths na termatisei to paixnidi
char intToChar(int); //metatrepei int se char
void transformToK(char[8][8]); //metatrepei X se K kai O se k

int main(int argc, char *argv[])
{
   char board[8][8];
   gemisma(board);  
   play(board);
   system("PAUSE");	
   return 0;
}



void play(char board[8][8])
{
    printf("~~~~~~~~~~New Game~~~~~~~~~~\n");
    int pass;
    int turn=1; //X
    int k;
    FourCoords c;
    char string[10];
    STACK stack1;
    STACK *ptr;
    ptr= &stack1;
    stack1.top=NULL;
    stack1.size=0;
    do
    {
       k=0;
       pass=1;
       printBoard(board);
       if(checkLoose(board, turn)==1)
       {
               printf("mpravo exases\n");
               exit(1);             
       }
       printBoard(board);
       c=checking(board, turn); //lathos me ta oria
       if(c.x0!=-1)
       {
            if(c.x2==-1)
            {                   
                   k=1;
                   printf("The disc at the location %c-%d can eat the disc and move at the location %c-%d\n", intToChar(c.y0),c.x0+1,intToChar(c.y1),c.x1+1);     
                   printf("You have to move this disc\n"); 
            }
            else
            {
                   k=2;//mlkia ena den mporei na faei 2 ektos an einai k 
                   printf("The disc at the location %c,%d can eat the disc and move at the location %c,%d\n", intToChar(c.y0),c.x0+1,intToChar(c.y1),c.x1+1);
                   printf("Also the disc at the location %c,%d can eat the disc and move at the location %c,%d\n", intToChar(c.y2),c.x2+1,intToChar(c.y3),c.x3+1);
                   printf("You have to move 1 of these discs\n"); 
            }
                          
       }
       if(turn==1)
       {
               printf("player X give your move: ");
       }
       else
       {
               printf("player O give your move: ");
       }
       do
       {
            scanf("%s", string); 
            if(isValidMove(board, string, turn, k, c)==0)
            {
                  printf("give a valid move\n");
                  pass=0;                                 
            }
       }while(pass==0);
       if(string=="z9-z9")//termatismos //<----------------------------------------
       {
    
       }
       else if(string=="u9-u9")//anairesh
       {
            popStack(board, ptr);
            turn=changeTurn(turn);
       }
       else
       {
            usersMove(board, string);
            if(k!=0)//if the is an eating
            {
               recursion(board, xto(string), yto(string));
            }
            pushStack(board, ptr);
            turn=changeTurn(turn);    
       }
       transformToK(board);
   }while(string!="z9-z9"); 
}


void recursion(char board[8][8], int x, int y)
{
         int k1=0,k2=0;
         srand((int)time(NULL));
         if(board[x][y]=='X')
         {
                if(board[x+1][y+1]=='O' || board[x+1][y+1]=='k')
                {
                   if(((x+2)<8) && ((y+2)<8))
                   {
                       if(emptyBlock(board , x+2, y+2)==1)
                       {
                              k1=1;             
                       }   
                   }              
                }
                if(board[x+1][y-1]=='O' || board[x+1][y-1]=='k')
                {
                    if(((x+2)<8) && ((y-2)>-1))    
                    {               
                       if(emptyBlock(board , x+2, y-2)==1)
                       { 
                              k2=1;                                                 
                       } 
                    }                
                }
                if(k1==1 && k2==1)
                {
                      if(rand()%2==0)
                      {
                             board[x+2][y+2]=board[x][y];
                             board[x][y]='.';
                             board[x+1][y+1]='.';
                             recursion(board, x+2, y+2);                                           
                      }
                      else
                      {
                             board[x+2][y-2]=board[x][y];
                             board[x][y]='.';
                             board[x+1][y-1]='.';
                             recursion(board, x+2, y-2); 
                      }   
                }
                else if(k1==1)
                {
                      board[x+2][y+2]=board[x][y];
                      board[x][y]='.';
                      board[x+1][y+1]='.';
                      recursion(board, x+2, y+2);
                } 
                else if(k2==1)
                {
                      board[x+2][y-2]=board[x][y];
                      board[x][y]='.';
                      board[x+1][y-1]='.'; 
                      recursion(board, x+2, y-2);
                }           
         }
         else if(board[x][y]=='O')
         {
                if(board[x-1][y+1]=='X' || board[x-1][y+1]=='K')
                {
                   if(((x-2)>-1) && ((y+2)<8))
                   {
                       if(emptyBlock(board , x-2, y+2)==1)
                       {
                              k1=1;             
                       }    
                   }             
                }
                if(board[x-1][y-1]=='X' || board[x-1][y-1]=='K')
                {
                   if(((x-2)>-1) && ((y-2)>-1))
                   {
                       if(emptyBlock(board , x-2, y-2)==1)
                       {
                              k2=1; 
                                                   
                       }   
                   }              
                }
                if(k1==1 && k2==1)
                {
                      if(rand()%2==0)
                      {
                             board[x-2][y+2]=board[x][y];
                             board[x][y]='.';
                             board[x-1][y+1]='.';
                             recursion(board, x-2, y+2);                                           
                      }
                      else
                      {
                             board[x-2][y-2]=board[x][y];
                             board[x][y]='.';
                             board[x-1][y-1]='.';
                             recursion(board, x-2, y-2); 
                      }   
                }
                else if(k1==1)
                {
                      board[x-2][y+2]=board[x][y];
                      board[x][y]='.';
                      board[x-1][y+1]='.';
                      recursion(board, x-2, y+2);
                } 
                else if(k2==2)
                {
                      board[x-2][y-2]=board[x][y];
                      board[x][y]='.';
                      board[x-1][y-1]='.'; 
                      recursion(board, x-2, y-2);
                }           
         }
    
}


void pushStack(char board[8][8], STACK *s)
{
    int i,j;
    NODE *p;
    p=(NODE *)malloc(sizeof(NODE));
    if(p==NULL)
    {
               printf("System out of memory. Exiting...\n");
               exit(1);
    }
    for(i=0;i<8;i++)
    {
         for(j=0;j<8;j++)
         {
             p->array[i][j] = board[i][j];
         }
    }
    p->next = s->top;
    s->top = p;
    (s->size)++;
}

void popStack(char board[8][8], STACK *s)
{
    int i,j;
    NODE *p;
    if(s->size==0)
    {
         printf("Sorry, stack is empty. Exiting...\n");
         exit(1);
    }
    for(i=0;i<8;i++)
    {
         for(j=0;j<8;j++)
         {
             board[i][j] = (s->top)->array[i][j];
         }
    }
    p=s->top;
    s->top=p->next;
    (s->size)--;
    free(p);
}

int checkLoose(char board[8][8], int turn)//etoimh nomizw na prosthesw se ola genika gia ta oria 
{
   int r=1,i=0,j=0; //epistrefei 1 an einai na termatistei
   if(turn==1)
   {
        do//to kanw me do while wste na vgei me to pou vrei kapoio
        {
              if(board[i][j]=='X')
              {
                  if(emptyBlock(board, i+1, j+1)==1)
                  {
                      r=0;
                  }
                  else if(board[i+1][j+1]=='O' || board[i+1][j+1]=='k')
                  {
                      if(emptyBlock(board, i+2, j+2)==1)
                      {
                            r=0;
                      } 
                  }
                  if(emptyBlock(board, i+1, j-1)==1)
                  {
                      r=0;
                  }
                  else if(board[i+1][j-1]=='O' || board[i+1][j-1]=='k')
                  {
                      if(emptyBlock(board, i+2, j-2)==1)
                      {
                            r=0;
                      } 
                  }
              }
              else if(board[i][j]=='K')
              {
                  if(emptyBlock(board, i+1, j+1)==1)
                  {
                      r=0;
                  }
                  else if(board[i+1][j+1]=='O' || board[i+1][j+1]=='k')
                  {
                      if(emptyBlock(board, i+2, j+2)==1)
                      {
                            r=0;
                      } 
                  }
                  if(emptyBlock(board, i+1, j-1)==1)
                  {
                      r=0;
                  }
                  else if(board[i+1][j-1]=='O' || board[i+1][j-1]=='k')
                  {
                      if(emptyBlock(board, i+2, j-2)==1)
                      {
                            r=0;
                      } 
                  }
                  if(emptyBlock(board, i-1, j+1)==1)
                  {
                      r=0;
                  }
                  else if(board[i-1][j+1]=='O' || board[i-1][j+1]=='k')
                  {
                      if(emptyBlock(board, i-2, j+2)==1)
                      {
                            r=0;
                      } 
                  }
                  if(emptyBlock(board, i-1, j-1)==1)
                  {
                      r=0;
                  }
                  else if(board[i-1][j-1]=='O' || board[i-1][j-1]=='k')
                  {
                      if(emptyBlock(board, i-2, j-2)==1)
                      {
                            r=0;
                      } 
                  }
                   
              }
              j=j+1;// gia na stamataei me to poy vrei kapoio pou mporei na kinithei
              if(j==8)
              {
                      i=i+1;
              }
              if(j==8)
              {
                      j=0;
              }
        }while(i!=8 && r!=1);
              
   }
   else
   {
        do//to kanw me do while wste na vgei me to pou vrei kapoio
        {
              if(board[i][j]=='O')
              {
                  if(emptyBlock(board, i-1, j+1)==1)
                  {
                      r=0;
                  }
                  else if(board[i-1][j+1]=='X' || board[i-1][j+1]=='K')
                  {
                      if(emptyBlock(board, i-2, j+2)==1)
                      {
                            r=0;
                      } 
                  }
                  if(emptyBlock(board, i-1, j-1)==1)
                  {
                      r=0;
                  }
                  else if(board[i-1][j-1]=='X' || board[i-1][j-1]=='K')
                  {
                      if(emptyBlock(board, i-2, j-2)==1)
                      {
                            r=0;
                      } 
                  }
              }
              else if(board[i][j]=='k')
              {
                  if(emptyBlock(board, i+1, j+1)==1)
                  {
                      r=0;
                  }
                  else if(board[i+1][j+1]=='X' || board[i+1][j+1]=='K')
                  {
                      if(emptyBlock(board, i+2, j+2)==1)
                      {
                            r=0;
                      } 
                  }
                  if(emptyBlock(board, i+1, j-1)==1)
                  {
                      r=0;
                  }
                  else if(board[i+1][j-1]=='X' || board[i+1][j-1]=='K')
                  {
                      if(emptyBlock(board, i+2, j-2)==1)
                      {
                            r=0;
                      } 
                  }
                  if(emptyBlock(board, i-1, j+1)==1)
                  {
                      r=0;
                  }
                  else if(board[i-1][j+1]=='X' || board[i-1][j+1]=='K')
                  {
                      if(emptyBlock(board, i-2, j+2)==1)
                      {
                            r=0;
                      } 
                  }
                  if(emptyBlock(board, i-1, j-1)==1)
                  {
                      r=0;
                  }
                  else if(board[i-1][j-1]=='X' || board[i-1][j-1]=='K')
                  {
                      if(emptyBlock(board, i-2, j-2)==1)
                      {
                            r=0;
                      } 
                  }
                   
              }
              j=j+1;// gia na stamataei me to poy vrei kapoio pou mporei na kinithei
              if(j==8)
              {
                      i=i+1;
              }
              if(j==8)
              {
                      j=0;
              }
        }while(i!=8 && r!=0);
              
   }
   return r;
}


//synarthsh gia to an uparxei anagastiko fagwma
struct FourCoords checking(char board[8][8], int turn) //mallon komple
{                                                      //na valw thn peritpwsh poy exei toixo isws?
   int i,j,k=0;
   FourCoords r = {-1,-1,-1,-1,-1,-1,-1,-1,0};
   for(i=0;i<8;i++)
   {
      for(j=0;j<8;j++)
      {             
         if(turn==1)
         {
                if(board[i][j]=='X' || board[i][j]=='K')//gia X kai K
                {
                       if(board[i+1][j+1]=='O' || board[i+1][j+1]=='k')
                       {
                          if(((i+2)<8) && ((j+2)<8))//auth einai h diorthosh
                          {
                             if(board[i+2][j+2]=='.') //mporei na vgei eksv apo ta oria na to tsekarw meta
                             {
                                  if(k==1)
                                  {
                                      r.x2=i;
                                      r.y2=j;
                                      r.x3=i+2;
                                      r.y3=j+2;
                                      r.t=r.t+1;  
                                  }
                                  else
                                  {
                                      r.x0=i;
                                      r.y0=j;
                                      r.x1=i+2;
                                      r.y1=j+2;
                                      r.t=r.t+1;
                                      k=1; 
                                  }                  
                             } 
                         }                    
                       }
                       else if(board[i+1][j-1]=='O' || board[i+1][j-1]=='k')
                       {
                          if(((i+2)<8) && ((j-2)>-1))
                          {
                            if(board[i+2][j-2]=='.')
                            {
                                  if(k==1)
                                  {
                                     r.x2=i;
                                     r.y2=j;
                                     r.x3=i+2;
                                     r.y3=j-2;
                                     r.t=r.t+1;
                                  }
                                  else
                                  {                 
                                     r.x0=i;
                                     r.y0=j;
                                     r.x1=i+2;
                                     r.y1=j-2;
                                     r.t=r.t+1;
                                     k=1;  
                                  }                
                            }
                          }
                            
                       }                                      
                }
                if(board[i][j]=='K')//gia K
                {
                       if(board[i-1][j+1]=='O' || board[i-1][j+1]=='k')
                       {
                          if(((i-2)>-1) && ((j+2)<8))
                          {
                             if(board[i-2][j+2]=='.') //mporei na vgei eksw apo ta oria na to tsekarw meta
                             {
                                  if(k==1)
                                  {
                                     r.x2=i;
                                     r.y2=j;
                                     r.x3=i-2;
                                     r.y3=j+2;
                                     r.t=r.t+1;     
                                  }
                                  else
                                  {
                                     r.x0=i;
                                     r.y0=j;
                                     r.x1=i-2;
                                     r.y1=j+2;
                                     r.t=r.t+1;
                                     k=1; 
                                  }                  
                             }
                          }                  
                       }
                       if(board[i-1][j-1]=='O' || board[i-1][j-1]=='k')
                       {
                           if(((i-2)>-1) && ((j-2)>-1))
                           {
                             if(board[i-2][j-2]=='.')
                             {
                                  if(k==1)
                                  {
                                     r.x2=i;
                                     r.y2=j;
                                     r.x3=i-2;
                                     r.y3=j-2;
                                     r.t=r.t+1;     
                                  }
                                  else
                                  {
                                     r.x0=i;
                                     r.y0=j;
                                     r.x1=i-2;
                                     r.y1=j+2;
                                     r.t=r.t+1;
                                     k=1; 
                                  }                  
                             } 
                           }                 
                       }
                                                    
                }    
         }
         
         else//turn=2
         {
                if(board[i][j]=='O' || board[i][j]=='k')//gia X kai K
                {
                       if(board[i-1][j+1]=='X' || board[i-1][j+1]=='K')
                       {
                           if(((i-2)>-1) && ((j+2)<8))
                           {
                             if(board[i-2][j+2]=='.') //mporei na vgei eksv apo ta oria na to tsekarw meta
                             {
                                  if(k==1)
                                  {
                                      r.x2=i;
                                      r.y2=j;
                                      r.x3=i-2;
                                      r.y3=j+2;
                                      r.t=r.t+1;  
                                  }
                                  else
                                  {
                                      r.x0=i;
                                      r.y0=j;
                                      r.x1=i-2;
                                      r.y1=j+2;
                                      r.t=r.t+1;
                                      k=1; 
                                  }                  
                             }
                           }                  
                       }
                       else if(board[i-1][j-1]=='X' || board[i-1][j-1]=='K')
                       {
                         if(((i-2)>-1) && ((j-2)>-1))
                         {
                            if(board[i-2][j-2]=='.')
                            {
                                  if(k==1)
                                  {
                                     r.x2=i;
                                     r.y2=j;
                                     r.x3=i-2;
                                     r.y3=j-2;
                                     r.t=r.t+1;
                                  }
                                  else
                                  {                 
                                     r.x0=i;
                                     r.y0=j;
                                     r.x1=i-2;
                                     r.y1=j-2;
                                     r.t=r.t+1;
                                     k=1;  
                                  }                
                            }
                         }
                            
                       }                                      
                }
                if(board[i][j]=='k')//gia K
                {
                       if(board[i+1][j+1]=='X' || board[i+1][j+1]=='K')
                       {
                          if(((i+2)<8) && ((j+2)<8))
                          {
                             if(board[i+2][j+2]=='.') //mporei na vgei eksw apo ta oria na to tsekarw meta
                             {
                                  if(k==1)
                                  {
                                     r.x2=i;
                                     r.y2=j;
                                     r.x3=i+2;
                                     r.y3=j+2;
                                     r.t=r.t+1;     
                                  }
                                  else
                                  {
                                     r.x0=i;
                                     r.y0=j;
                                     r.x1=i+2;
                                     r.y1=j+2;
                                     r.t=r.t+1;
                                     k=1; 
                                  }                  
                             } 
                          }                 
                       }
                       if(board[i-1][j-1]=='X' || board[i-1][j-1]=='K')
                       {
                          if(((i+2)<8) && ((j-2)>-1))
                          {
                             if(board[i+2][j-2]=='.')
                             {
                                  if(k==1)
                                  {
                                     r.x2=i;
                                     r.y2=j;
                                     r.x3=i+2;
                                     r.y3=j-2;
                                     r.t=r.t+1;     
                                  }
                                  else
                                  {
                                     r.x0=i;
                                     r.y0=j;
                                     r.x1=i+2;
                                     r.y1=j+2;
                                     r.t=r.t+1;
                                     k=1; 
                                  }                  
                             }
                          }                  
                       }
                                                    
                }    
         }
      }             
   }
   return r;
}


int emptyBlock(char board[8][8] , int i, int j)//etoimh O_o
{
   int r=0;
   if(board[i][j]=='.')
   {
       r=1;
   }
   return r;
   
}


int isValidMove(char board[8][8], char n[], int turn, int k, FourCoords l)//mallon etoimh mporei na exei kanena lathos
{
   int r=1,a,b,c,d;
   a=xfrom(n);
   b=yfrom(n);
   c=xto(n);
   d=yto(n);
   if(strlen(n)!=5)
   {
       printf("The length of the input should be 5 letters long example: b6-c5\n");
       r=0;
   }
   else if( (isalpha(n[0])==0) || (isdigit(n[1])==0) || (n[2]!='-') || (isalpha(n[3])==0) || (isdigit(n[4])==0) )
   {
       printf("The input should be like this b6-c5\n");
       r=0;
   }
   else if(n=="z9-z9" || n=="u9-u9")
   {
        if(n=="z9-z9")
        {
              printf("you choosed to terminate the program\n");
        }
        else
        {
            printf("you choosed to recall a move\n");
        }
   }
   else if(a<0 || a>7 || b<0 || b>7 || c<0 || c>7 || d<0 || d>7)
   {
        printf("The input should be like this b6-c5.You can't move out of the board. You can use letter from a to h and numbers from 1 to 8\n"); 
        r=0;
   }
   if(turn==1)
   {
        if(emptyBlock(board, a, ==1)    
        {
            printf("there is no disc at the location you choosed\n");
            r=0;                  
        } 
        else if(board[a][b]=='O' || board[a][b]=='k' ) //ama paizei ta swsta poulia
        {
            printf("you can't move your anemies discs\n");
            r=0;
        }
        else if((c-a)!=1)   // ama einai swsth h grammh    <-----edw einai to provlhma
        {
             if(k==0) //k k=0 an den uparxei anagastiko fagwma
             {
                 printf("wrong move\n");
                 r=0;
             }
        }                        
        else if(b-d!=1 && d-b!=1)  //ama einai swsth h sthlh
        {
             if(k==0)
             {
                  printf("wrong move\n");
                  r=0;
             }
        }
        else if(emptyBlock(board, c, d)==0) 
        {              
              printf("you can't move at the location you choosed because there is oneother disc\n"); 
              r=0;                                    
        }                                
   }
   else
   {
        if(emptyBlock(board, a, ==1)    
        {
            printf("there is no disc at the location you choosed\n");
            r=0;                  
        } 
        else if(board[a][b]=='X' || board[a][b]=='K') //ama paizei ta swsta poulia
        {
            printf("you can't move your anemies discs\n");
            r=0;
        }
        else if((a-c)!=1)   // ama einai swsth h grammh <--- epishs edw
        {
             if(k==0)
             {
                 printf("wrong move\n");
                 r=0;
             }
        }                        
        else if(b-d!=1 && d-b!=1)  //ama einai swsth h sthlh
        {
             if(k==0)
             {
                 printf("wrong move\n");
                 r=0;
             }
        }
        else if(emptyBlock(board, c, d)==0) 
        {              
              printf("you can't move at the location you choosed because there is oneother disc\n"); 
              r=0;                                    
        }                                
   }
   if(k==1)
   {
         if(l.x0!=a || l.y0!=b || l.x1!=c || l.y1!=d)
         {
              printf("You have to eat the disc, you aren't allowed to make oneother move\n");
              r=0;      
         }  
   }
   if(k==2)
   {
         if((l.x0!=a || l.y0!=b || l.x1!=c || l.y1!=d) && (l.x2!=a || l.y2!=b || l.x3!=c || l.y3!=d))
         {
                printf("You have to eat the disc, you aren't allowed to make oneother move\n");    
                r=0;    
         }            
   }
   
   return r;
}
    



void printBoard(char board[8][8])//etoimh
{
    int i,j;
    printf("    a b c d e f g h\n");
    printf("  -------------------\n");
    for(i=0;i<8;i++)
    {
                    printf("%d | ", i+1);
                    for(j=0;j<8;j++)
                    {
                                    printf("%c ", board[i][j]);
                    
                    }
                    printf(" | %d\n", i+1);
    }
    printf("  -------------------\n");
    printf("    a b c d e f g h\n");
}



void gemisma(char board[8][8])//etoimh
{
    int i,j;
    for(i=0;i<8;i++)
    {
                    for(j=0;j<8;j++)
                    {
                                    board[i][j]= '.';
                    
                    }
    }
    board[0][0]='X';
    board[0][2]='X';
    board[0][4]='X';
    board[0][6]='X';
    board[1][1]='X';
    board[1][3]='X';
    board[1][5]='X';
    board[1][7]='X';
    board[2][0]='X';
    board[2][2]='X';
    board[2][4]='X';
    board[2][6]='X';
    board[5][1]='O';
    board[5][3]='O';
    board[5][5]='O';
    board[5][7]='O';
    board[6][0]='O';
    board[6][2]='O';
    board[6][4]='O';
    board[6][6]='O';
    board[7][1]='O';
    board[7][3]='O';
    board[7][5]='O';
    board[7][7]='O';

}

void usersMove(char board[8][8], char string[10])
{
    if(board[xfrom(string)][yfrom(string)]=='X')
    {
           if(yto(string)-yfrom(string)<0)
           {
                board[xfrom(string)+1][yfrom(string)-1]='.';                        
           }
           else
           {
                board[xfrom(string)+1][yfrom(string)+1]='.';      
           }
           board[xto(string)][yto(string)]=board[xfrom(string)][yfrom(string)];
           board[xfrom(string)][yfrom(string)]='.';
                                             
    }
    else if(board[xfrom(string)][yfrom(string)]=='O')
    {
           if(yto(string)-yfrom(string)<0)
           {
                board[xfrom(string)-1][yfrom(string)-1]='.';                        
           }
           else
           {
                board[xfrom(string)-1][yfrom(string)+1]='.';      
           }
           board[xto(string)][yto(string)]=board[xfrom(string)][yfrom(string)];
           board[xfrom(string)][yfrom(string)]='.';
         
    }
    else if(board[xfrom(string)][yfrom(string)]=='K')
    {
           if(yto(string)-yfrom(string)<0)
           {
                if(xto(string)-xfrom(string)<0)
                {
                    board[xfrom(string)-1][yfrom(string)-1]='.'; 
                }
                else
                {
                    board[xfrom(string)+1][yfrom(string)-1]='.'; 
                }
                                        
           }
           else
           {
                if(xto(string)-xfrom(string)<0)
                {
                    board[xfrom(string)-1][yfrom(string)+1]='.'; 
                }
                else
                {
                    board[xfrom(string)+1][yfrom(string)+1]='.'; 
                }     
           }
           board[xto(string)][yto(string)]=board[xfrom(string)][yfrom(string)];
           board[xfrom(string)][yfrom(string)]='.';
         
         
    }
    else if(board[xfrom(string)][yfrom(string)]=='k')
    {
           if(yto(string)-yfrom(string)<0)
           {
                if(xto(string)-xfrom(string)<0)
                {
                    board[xfrom(string)-1][yfrom(string)-1]='.'; 
                }
                else
                {
                    board[xfrom(string)+1][yfrom(string)-1]='.'; 
                }
                                        
           }
           else
           {
                if(xto(string)-xfrom(string)<0)
                {
                    board[xfrom(string)-1][yfrom(string)+1]='.'; 
                }
                else
                {
                    board[xfrom(string)+1][yfrom(string)+1]='.'; 
                }     
           }
           board[xto(string)][yto(string)]=board[xfrom(string)][yfrom(string)];
           board[xfrom(string)][yfrom(string)]='.';
         
    }
}

int xfrom(char string[10])
{
   int r;
   r=(int)string[1]-49;
   return r;
}

int yfrom(char string[10])
{
   int r;
   r=(int)string[0]-97;
   return r;
}

int xto(char string[10])
{
   int r;
   r=(int)string[4]-49;
   return r;
}

int yto(char string[10])
{
   int r;
   r=(int)string[3]-97;
   return r;
}

char intToChar(int i)
{
    char c;
    c=(char)(i+97);
    return c;
}

int changeTurn(turn)
{
   if(turn==1)
   {
       turn=2;
   }
   else
   {
       turn=1;
   }
   return turn;
}

void transformToK(char board[8][8])
{
    int i;
    for(i=0;i<8;i++)
    {
         if(board[0][i]=='O')
         {
             board[0][i]=='k';
         }
         else if(board[7][i]=='X')//else if gia na mhn xanetai adika xronos afou den einai dunaton na ginoun kai ta duo mazi
         {
             board[7][i]=='K';
         }
    }
}

void help()
{
    printf("bla bla bla bla se voithaw twra bla bla bla\n");    
}

 

 

Δημοσ.

Κάνοντας compile μου έβγαλε δύο σφάλματα. Γραμμή 771 και 881 αν θυμάμαι καλά. Έχεις από ένα κεφαλαίο 'Β' σε εκείνες τις γραμμές που δεν είναι δηλωμένο πουθενά αλλού. Μόλις τα έκανα μικρά τρέχει κανονικά ο κώδικας. Τώρα από εκεί και πέρα δεν ξέρω τι συμπεριφορά πρέπει να περιμένω από το εκτελέσιμο για να συνεχίσω.

Δημοσ.

με το Geany μου βγάζει πολλά warnings όχι 2. Τσέκαρε μία αν μπορείς το λάθος που έχω με βελάκι στο spoiler από πάνω.

μου γράφει main1.c:114:18: warning: comparison with string literal results in unspecified behavior [-Waddress]

 

δίνει εντολές με τη μορφή θεση που ειναι-θεση που θες να πάει.από περιέργεια τρέχτω και γράψε c3-d4

 

Κάνοντας compile μου έβγαλε δύο σφάλματα. Γραμμή 771 και 881 αν θυμάμαι καλά. Έχεις από ένα κεφαλαίο 'Β' σε εκείνες τις γραμμές που δεν είναι δηλωμένο πουθενά αλλού. Μόλις τα έκανα μικρά τρέχει κανονικά ο κώδικας. Τώρα από εκεί και πέρα δεν ξέρω τι συμπεριφορά πρέπει να περιμένω από το εκτελέσιμο για να συνεχίσω.

 

Δεν βρίσκς το 'Β' που λες. Σίγουρα είναι σε εκείνη τη γραμή?

Δημοσ.

Δεν είπα για warning αλλά για error. Είναι η ίδια εντολή και τις δύο φορές. Κάνε μια αναζήτηση για το παρακάτω

>if(emptyBlock(board, a, ==1)

 

Από warning μου βγάζει και εμένα αρκετά.

 

Επίσης έχεις ξεχάσει δύο includes

 

>
#include <string.h>
#include <ctype.h>

 

Μόλις έδωσα πάντως το "c3-d4" μου έβγαλε οτι έχασα.

 

Επιπλέον για να συγκρίνεις string χρησιμοποίησε την strcmp(), όχι όπως το κάνεις εσύ.

Δημοσ.

Σε ευχαριστώ πολύ για τη βοήθεια. Οσο για το Β εμένα μου βγάζει ότι είναι μικρό(στην isValidMove).

Μπορεί κάποιος να μου πει ποιο είναι το λάθος σε αυτό? if(string=="z9-z9")

Πληροφοριακά το string το δηλώνω έτσι char string[10]; και το χρησιμοποιώ εδώ scanf("%s", string);

 

strcmp() με το dev c++ μια χαρά δεχότανε το =... :(

Δημοσ.

Βάλε σε ένα spoiler τα warnings που σου βγάζει ο gcc του Ubuntu.

 

Αυτό που πρέπει να κάνεις πάντως πρώτα από όλα είναι να ΑΡΧΙΚΟΠΟΙΗΣΕΙΣ ΟΛΕΣ τις τοπικές μεταβλητές που ορίζεις σε ΟΛΕΣ τις συναρτήσεις. Ο mingw32 gcc (που χρησιμοποιεί και το Dev-C++) έχει την τάση να μηδενίζει αυτόματα μη-αρχικοποιημένες μεταβλητές, κάτι που δεν είναι στάνταρ. Ο κανονικός gcc (του Ubuntu) ΔΕΝ τις μηδενίζει αυτόματα. Κατά πάσα πιθανότητα αυτό είναι το πρόβλημα.

Δημοσ.

Εγώ πήρα copy paste τον κώδικα που έχεις πιο πάνω. Και εκεί με κεφαλαίο είναι. Τέλος πάντων.

 

Μια χαρά το δέχεται ο compiler ναι. Το θέμα είναι οτι δεν είναι σωστό και δεν κάνει αυτό που νομίζεις οτι κάνει. Στην ουσία χρησιμοποιώντας το '==' ελέγχεις αν οι pointers που δείχνουν αυτά τα string είναι ίδιοι και όχι το περιεχόμενο αυτό καθέ αυτό. Για να συγκρίνεις το περιεχόμενο πρέπει να χρησιμοποιήσεις την strcmp().

Δημοσ.

By the way, το κεφαλαίο B είναι πρόβλημα του code tag εδώ στο φόρουμ.

 

EDIT:

 

Σε ευχαριστώ πολύ για τη βοήθεια. Οσο για το Β εμένα μου βγάζει ότι είναι μικρό(στην isValidMove).

Μπορεί κάποιος να μου πει ποιο είναι το λάθος σε αυτό? if(string=="z9-z9")

Πληροφοριακά το string το δηλώνω έτσι char string[10]; και το χρησιμοποιώ εδώ scanf("%s", string);

 

strcmp() με το dev c++ μια χαρά δεχότανε το =... :(

 

Το λάθος είναι πως αντί να συγκρίνεις τα περιεχόμενα των 2 strings συγκρίνεις τις διευθύνσεις τους. Πρέπει να χρησιμοποιήσεις την strcmp() ή ακόμα καλύτερα την strncmp(),. όπως είπε κι ο computeras.

 

Επίσης, βεβαιώσου πως το αρχείο σου είναι σε κωδικοποίηση UTF-8 (έχει σχετική επιλογή το Geany). Αν δεν είναι, κάντο UTF-8 εσύ. Κατά πάσα πιθανότητα θα είναι σε κωδικοποίηση ANSI το αρχείο σου από το Dev-C++, ενώ στο Ubuntu η default κωδικοποίηση είναι η UTF-8.

Δημοσ.

@migf1 δεν το ήξερα αυτό για το tag. BTW, μου αρέσει που γράφουμε τα ίδια :P (πέραν της κωδικοποίησης)

 

:lol:

Είναι επειδή γράφουμε ταυτόχρονα.

Δημοσ.

Βρήκα το λάθος ευτυχώς. Σας ευχαριστώ παααρα πολύ πραγματικά.

Δύο τελευταία warning μου βγάζει για το ίδιο πράγμα εκεί που έχω βελάκι

main1.c:1070:15: warning: statement with no effect [-Wunused-value]

 

>
void transformToK(char board[8][8])
{
    int i;
    for(i=0;i<8;i++)
    {
         if(board[0][i]=='O')
         {
             board[0][i]=='k'; //<--------------------------
         }
         else if(board[7][i]=='X')
         {
             board[7][i]=='K'; //<----------------------
         }
    }
}

 

να τους δώσω σημασία η όχι?

Δημοσ.

Μάλλον είναι ώρα για διάλειμα δε βλέπω λάθοι που είναι μπροστά μου. Ευχαριστώ πολύ και πάλι! :)

Και όμως δεν το βρήκα. να γράψω if(strcmp(board[0], "O")==0)?

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...