Sudoku is an interesting and popular puzzle game with some simple rules. In this article, we will explore how to build a simple Sudoku Game in C++. This is a simple console based game so whether you are a beginner or an experienced C++ programmer, you will be able to follow this article easily.
Features
- Player can play the game to solve the puzzle on the screen.
- If not able to solve then the program will solve it for him.
Code for Sudoku Game in C++
We will use Code::Blocks IDE to develop this program. Open the Code::Blocks IDE and create a new project with the name sudoku. Now in the main.cpp file paste the following code and run it.
#include <iostream> #include <cstdlib> #include <cstring> using namespace std; const int N = 9; bool isSafe(int board[N][N], int row, int col, int num) { // Check if 'num' is already in the same row for (int i = 0; i < N; i++) if (board[row][i] == num) return false; // Check if 'num' is already in the same column for (int i = 0; i < N; i++) if (board[i][col] == num) return false; // Check if 'num' is already in the same 3x3 box int boxRowStart = row - row % 3; int boxColStart = col - col % 3; for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) if (board[i + boxRowStart][j + boxColStart] == num) return false; return true; } void printBoard(int grid[N][N]) { system("cls"); cout << "\t\t\t<================================================================================>" << endl; cout << "\t\t\t| WELCOME TO SUDOKU Game! |" << endl; cout << "\t\t\t| Fill in the missing numbers(represented by 0) to solve the puzzle. |" << endl; cout << "\t\t\t<================================================================================>" << endl; for (int row = 0; row < N; row++){ for (int col = 0; col < N; col++){ if(col == 3 || col == 6) cout << " | "; cout << grid[row][col] <<" "; } if(row == 2 || row == 5){ cout << endl; for(int i = 0; i<N; i++) cout << "---"; } cout << endl; } } bool solveSudoku(int board[N][N], int row, int col) { // If all cells are filled, the puzzle is solved if (row == N - 1 && col == N) return true; // Move to the next row if the current column is N if (col == N) { row++; col = 0; } // Skip the cells that already have a value if (board[row][col] != 0) return solveSudoku(board, row, col + 1); // Try filling the current cell with a number from 1 to 9 for (int num = 1; num <= 9; num++) { if (isSafe(board, row, col, num)) { board[row][col] = num; if (solveSudoku(board, row, col + 1)) return true; board[row][col] = 0; } } return false; } bool isSolvedCompletely(int grid[N][N]){ for (int row = 0; row < N; row++) for (int col = 0; col < N; col++) if (grid[row][col] == 0) return false; return true; } void playGame(int board[N][N]){ int ch; int row, col, num; while(true){ printBoard(board); cout << endl << endl; cout << "Unable to solve? Enter -1 as row, col and num to view the solved sudoku."<<endl; cout << "Enter row: "; cin >> row; cout << "Enter column: "; cin >> col; cout << "Enter number: "; cin >> num; if(row == -1 || col == -1 || num == -1){ solveSudoku(board, 0, 0); printBoard(board); cout << endl; cout << "Better luck next time!!!" << endl; return; } if (isSolvedCompletely(board)) break; row--; col--; if (!isSafe(board, row, col, num)) { cout << "Invalid move. Try again." << endl; continue; } board[row][col] = num; } // Check if the user has solved it correctly or not bool solved = true; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (board[i][j] == 0) { solved = false; break; } } } if (solved) { cout << "Congratulations! You have solved the puzzle." << endl; printBoard(board); } else { cout << "Puzzle not solved. Better luck next time." << endl; } } int main() { system("title Sudoku Game @copyassignment"); system("color B0"); int board[N][N] = { {3, 0, 6, 5, 0, 8, 4, 0, 0}, {5, 2, 0, 0, 0, 0, 0, 0, 0}, {0, 8, 7, 0, 0, 0, 0, 3, 1}, {0, 0, 3, 0, 1, 0, 0, 8, 0}, {9, 0, 0, 8, 6, 3, 0, 0, 5}, {0, 5, 0, 0, 9, 0, 6, 0, 0}, {1, 3, 0, 0, 0, 0, 2, 5, 0}, {0, 0, 0, 0, 0, 0, 0, 7, 4}, {0, 0, 5, 2, 0, 6, 3, 0, 0} }; cout << "\t\t\t<================================================================================>" << endl; cout << "\t\t\t| WELCOME TO SUDOKU Game! |" << endl; cout << "\t\t\t| Fill in the missing numbers(represented by 0) to solve the puzzle. |" << endl; cout << "\t\t\t<================================================================================>" << endl; while (true) { int choice; cout << endl << endl; cout << "\t\t[1] Solve the Sudoku" << endl; cout << "\t\t[2] Unable to solve? View the solved Sudoku" << endl; cout << "\t\t[3] Exit" << endl; cout << "\t\tEnter your choice: "; cin >> choice; switch (choice) { case 1: playGame(board); break; case 2: if (solveSudoku(board, 0, 0)) { cout << "Completely Solved Sudoku is: "<< endl; cout << endl << endl; for (int row = 0; row < N; row++){ for (int col = 0; col < N; col++){ if(col == 3 || col == 6) cout << " | "; cout << board[row][col] <<" "; } if(row == 2 || row == 5){ cout << endl; for(int i = 0; i<N; i++) cout << "---"; } cout << endl; } cout << endl; cout << "Better luck next time!!!" << endl; } else cout << "No solution found" << endl; break; case 3: exit(0); default: cout << "Invalid choice" << endl; } return 0; } }
Output for Sudoku Game in C++
Image Output:

Video Output:
Conclusion
At end, we have a fully functional Sudoku Game which you can share with your friends and continue to improve this game. Through this article on Sudoku Game in C++, we have learnt some important concepts of programming like handling user interactions, updating the game board, using backtracking algorithm to solve the Sudoku etc.
Thank you for visiting our website.
Also Read:
- Unveiling the Future of AI Detector
- CodeWithHarry Earns 20 Lakhs per month from YouTube?
- Cleaning Service Booking System in Python Tkinter
- Farmers Ecommerce App using Python Tkinter
- Guidelines for Project Collaboration Process
- The system of the binary conversion
- What is web development for beginners?
- Guide to Proxy Servers: How They Work and Why You Need Them?
- Python | Check Armstrong Number using for loop
- Python | Factorial of a number using for loop
- Link in bio
- Microsoft Giving Free Machine Learning Course: Enroll Now
- Accenture Giving Free Developer Certificate in 2023
- Python | Asking the user for input until they give a valid response
- Python | How to iterate through two lists in parallel?
- Amazon Summer Internship 2023
- Python | How to sort a dictionary by value?
- Amazon Giving Free Machine Learning Course with Certificate: Enroll Now
- Google Summer Internship 2023
- Python | How to split a list into equally-sized chunks?
- 5 Secret ChatGPT skills to make money
- Python | Remove items from a list while iterating
- Free Google Certification Courses
- 5 AI tools for coders better than ChatGPT
- Python | How to get dictionary keys as a list
- New secrets to Earn money with Python in 2023
- Flower classification using CNN
- How to represent Enum in Python?
- 5 methods | Flatten a list of lists | Convert nested list into a single list in Python
- What does if __name__ == __main__ do in Python?