本程序是基于API 技术,用VC++ 6.0 MFC 开发工具编写的,实现了数独小游戏。 以下为全部源程序代码。 //written by luweikang// shudu.cpp : Defines the entry point for the application. //finished 2010-06-20 #include #include "stdafx.h" #include #include #define tPaint 2 //重绘定时器的标识(编号) #define tPaintTime 50 //窗口重绘的时间间隔 #define ROW 9 //方格的行数与列数 #define COL 9 //方格的行数与列数 #define LEN 40 //每个方格大小为40×40 像素 #define StartY 3 // #define StartX 3 //绘制方格地图时的边界起始位置 int CurrentX=0; int CurrentY=0; //当前操作位置 void InitMap_show( ); //初始化地图 int value[ROW][COL]; //记录每个方格中的数字 void Initvalue( ); //初始化方格中的数字为0 int judge(); //判断当前位置是否能输入用户想要输入的数字 void random(); //实现随机生成整张地图上的数字 int change[9][9]; //用于记录各个位置的数字是否可改变,0 不可变,1 可变 void Initchange(); //初始化change 数组中的值 int IsSuccess(); //判断是否完成 int answer[9][9][9]; //用于保存每个方格可以填入的数字 void Initanswer(); //初始化answer[81][9][9]全部为0 void bauto(int n); //自动求解 void showhelp(); //求辅助数据 bool help=0; //是否显示辅助数据 bool f; //成功标志 int tmp=20; //记录当前地图是哪副 int easy[21][9][9]={ //用于存储初级地图 { {0,0,0,0,3,0,2,0,8}, {0,2,8,0,4,0,1,3,0}, {0,0,9,5,8,0,0,4,7}, {0,3,1,0,2,0,5,9,0}, {0,0,5,3,9,1,7,0,0}, {0,9,0,4,7,5,8,1,3}, {0,0,0,0,6,0,4,0,2}, {0,0,0,0,0,3,0,6,0}, {0,7,6,2,5,4,0,8,0} }, { {0,0,0,0,0,4,0,5,2}, {0,0,5,0,0,7,0,1,4}, {0,0,1,0,0,8,3,0,6}, {0,1,2,0,0,6,4,3,9}, {0,0,9,0,4,1,6,8,5}, {0,0,6,0,3,5,2,7,1}, {0,6,7,0,1,0,0,0,0}, {1,5,0,0,0,3,0,2,8}, {0,2,0,0,5,9,0,6,0} }, { {0,7,8,4,0,0,0,3,6}, {4,1,9,0,0,8,2,0,0}, {0,0,6,0,7,0,0,0,9}, {0,9,5,0,6,4,0,7,1}, {1,0,7,5,0,0,0,0,0}, {0,3,4,0,1,7,5,6,8}, {0,8,1,0,0,9,6,2,4}, {0,0,2,0,0,0,0,0,3}, {0,4,0,0,2,0,0,8,5} }, { {0,9,0,0,0,8,0,2,...