我正在使用GTK作为UI在C语言中创建数独。我正在通过回溯实现数独,我希望它具有一定的动画效果,也就是说,我希望它显示每个单元格中发生变化的数字,并返回矩阵中,但不是,对Gtk不太熟悉,所以我不是很成功。该程序通过读取具有数独功能的数独文件开始,并在我按下“解决”按钮时尝试完成。
我尝试使用sleep()
,但是它冻结了整个应用程序。我尝试使用g_usleep
,但是它的作用是等待一秒钟,然后显示数独立即解决。
int solve_sudoku()
{
int row=0;
int col=0;
if(isEmpty(&row, &col) == 0) return 1;
int i;
for(i=1;i<=9;i++)
{
sudoku[row][col] = i;
char c[2];
sprintf(c,"%d",sudoku[row][col]);
gtk_entry_set_text(GTK_ENTRY(mat[row][col]),c);
g_usleep(1000);
if(validate_Cell(i, row, col))
{
if(solve_sudoku()) return 1;
sudoku[row][col]=0;
char k[2];
sprintf(k,"%d",sudoku[row][col]);
gtk_entry_set_text(GTK_ENTRY(mat[row][col]),k);
g_usleep(1000);
}
}
return 0;
}
我希望输出像动画的数独,但是实际输出是一秒钟等待解决的数独。我想不断使用每个单元格尝试使用的每个数字更新界面,并显示热点通过返回单元格等来执行回溯。