数独游戏代码实现
具体思路和说明见前几篇博客。
主函数(对外窗口):
main.cpp:
主要实现从命令行读入指令,然后判断输入是否正确,正确则执行指令。
/// <summary>
/// 功能:1.实现向文件输出1 ~ 100 0000个数独终局 (本项目设计最多生成 290 3040 个不重复的数独终局)
/// 2.实现从指定文件读取数独残局,解数独
/// </summary>
/// <author> 李林峰 </author>
/// <student_number> 1120161918 </student_number>
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include "define.h"
#include "initial.h"
#include "create.h"
#include "solve.h"
int main(int argc,char* argv[])
{
if( strcmp(argv[1],"-c") == 0 ) {
int num = change_num(argv[2]);
if(num==-1)
printf("\nWrong: Please input correctly!\n");
else if(num==-2)
printf("\nWrong: The number you entered exceeds the maximun range!\n");
else if(num==-3)
printf("\nWrong: The number you entered exceeds the maximun range!\n");
else if(num==0)
printf("\nWrong: Please input correctly!\n");
else {
if(origin[0][0]==0) {
initial_origin();
}
int examine = create_sudoku(num);
if(examine==-1)
printf("\nProgram Execution Error: Wrong on creation of the end of sudoku.\n");
}
}
else if( strcmp(argv[1],"-s") == 0 ) {
FILE *fp;
fp = fopen(argv[2],"r");
if( fp == NULL ) {
printf("\nWrong: File open failed.\n");
}
solve_sudoku(fp);
}
return 0;
}
数据结构定义模块:
define.h
#ifndef __DIFINE__
#define __DIFINE__
// 数独边界大小
#define SIZE 9
// 解数独棋盘结构
typedef struct {
int map[SIZE][SIZE]; // 待解数独盘面
int row[SIZE]; // 行
int col[SIZE]; // 列
int grid[SIZE]; // 九宫格
} BOARD;
// 输入的字符变为数字
int change_num(char s[]);
// 输出写入文件
void print(FILE* fp,BOARD board,int flag);
#endif
define.cpp
<