#include <iostream> //Using for input and output
#include <iomanip>  //To set each number a determined place in the print function

/*
                                          This program will try to move a knight
                                           around a chess board to each space 
                                           exactly one time.
                                          How I will do that?
                                          I will first create the board by a determined size.
                                          I will fill the board with 0s.
                                          I will define whether a move is in bounds,
                                          and I will define whether a move is already taken
                                          I will define if there is a next move to be made 
                                            from a given space.
                          
                          If a space is determined to be in bounds, free, and a next move
                          is possible. Then I want to write that space. 
                                          
                                          Knight Moves
                                          Row    Col
                                          +1      +2
                                          -1      +2
                                          +1      -2
                                          -1      -2
                                          +2      +1
                                          -2      +1
                                          +2      -1
                                          -2      -1

 */
void createboard();     //Creates the Board and fills its contents with 0s
     int board[8][8];             //array 
          int rm[]= {-2,+2,+2,-2,-1,+1,-1,+1},        //how the knight movs
              cm[] ={+1,+1,-1,-1,+2,+2,-2,-2};

void write(int,int,int);   //IN: are the Row, Col, and Move
bool inbounds(int,int);    //IN: are the Row, Col OUT: Is it in Bounds?
bool free(int,int);        //IN:are the Row, Col OUT: Is the space free? 
bool move(int,int,int);    //IN: The Starting Coordinates, and Move to begin at
void printboard();         //Prints The Board
using namespace std;       //used to set the variable scope
int main()
{
    createboard();         //Creates the 8x8 Board
    move(0,0,1);           //Sends 5 5 as the Starting Spot, and 1 is the move
    printboard();          //Prints the Board
   
    system("pause");       //Pause the System 
    return 1;
}//end of Main
void createboard()         //This will create the board
{                                 //Size 8 x 8
     int r = 0;                 //  Filled with 0s
     int c = 0;
  
      while (r < 8)
 {
       while (c < 8)
             {
                board[r][c] = 0;
                c++;        //New Colomn
             }
 r++;                       //New Space
 c = 0;                          //Back to the beginning of the column
 } } //End of While and end of CreateBoard
 

void write(int r, int c, int m)           //Will set the move number
                                         //to the given coordinates
     { board[r][c] = m; }
     
bool inbounds(int r,int c)               //Are the coordinates on the board?
{
     if (r >=0 && c >=0 && r<8 && c<8)  //if 0 or more for Rows and Cols
        {return true;}                  //and less than 8, then its fine
     else {return false;}                     //other wise, No!
}                                      // end of inbounds

bool free(int r, int c)                //Is this space free?
{    
     if (board[r][c] == 0)             //If its a 0, then its free
     { return true; }
     else { return false;}             //Otherwise its taken
}                                      //end of free

                                                //end of nextmove

bool move(int r, int c, int m)              //move the horse from the 
{                                         
            


for (int i=0; i<8;++i)                    //loop designed to try each of
    {                                           //the 8 possible moves
    write(r,c,m);                               //Writes the number on the table
    int currentRow = r + rm[i];
    int currentCol= c + cm[i];
    cout <<i<<endl;
    if (free(r,c) && inbounds(r,c) && move(currentRow,currentCol,m+1)  )

          return true;
    }
write(r,c,0);
return false;
}//end of move

void printboard()                  //Print the board on the screen
{ 
int r = 0; //set the first row to 0 ---r for row
int c = 0; //set the column to to 0 ---m for column
cout << endl;

      while (r < 8)
      {
       while (c < 8)
             {
                cout << setw(3) << board[r][c] <<" "; //write board number in the right place
                c++;            //next space
             }//end of c while
       r++;                     //next row after the columns have been filled
       cout <<endl;                    //new line
       c = 0;                   //back to the first line
       }//end of r while
 }//end of print board

I am just getting 0s as an output. I thought this would work. Someone can tell me what Im doing wrong?

Hey nevermind all I figured it out. Thanks!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.