#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<stdbool.h>
#include<windows.h>
#include<conio.h>
#include <unistd.h>
void SetColor (unsigned short color)
{
HANDLE hCon=GetStdHandle (STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hCon, color);
}
void COMPARE(int m[9][9],int CON[9][9])
{ int i,j;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(m[i][j]!=CON[i][j])
{
SetColor(4);
printf("\nr: %i ; c: %i ERROR\n");
SetColor(15);
}
}
}
}
void cursoroff ()
{
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO CCI;
GetConsoleCursorInfo(hOut, &CCI);
CCI.bVisible = false;
SetConsoleCursorInfo(hOut, &CCI);
}
void gotoxy( int column, int line ){
COORD coord;
coord.X = column;
coord.Y = line;
SetConsoleCursorPosition(
GetStdHandle( STD_OUTPUT_HANDLE ),
coord);
}
void TITOLO();
int scelta();
void FACILE();
void MEDIO();
void EXTREME();
void CONTROLLO(int c[9][9],int N);
void CARICA(int m[9][9],int numeri);
void COPIATABELLA(int m[9][9],int copia[9][9]);
void SUDOKU(int m[9][9],int numeri,int copia [9][9],int CON[9][9] );
void TABELLA(int m[9][9],int copia[9][9]);
void COMPARE(int m[9][9],int CON[9][9]);
int main()
{ int i,j,n,difficolta;
gotoxy(52,8);
printf("BENVENUTI NEL : ");
TITOLO();
difficolta=scelta();
if(difficolta==1)
{
FACILE();
}
else if(difficolta==2)
{
MEDIO();
}
else if (difficolta==3)
{
EXTREME();
}
}
void FACILE()
{ int M[9][9],NUM,C[9][9],n,COPIA[9][9],controllo[9][9];
CARICA(M,NUM);
CONTROLLO(C,n);
TABELLA(M,COPIA);
COPIATABELLA(M, COPIA);
SUDOKU(M,NUM,COPIA,controllo);
}
void MEDIO()
{
}
void EXTREME()
{
}
void CARICA(int m[9][9],int numeri)
{ int i,j,N;
numeri=0;
FILE *fr;
srand(time(NULL));
N=1;
if (N==0)
{
fr=fopen("input0.txt","r");
}
else
if (N==1)
{
fr=fopen("input1.txt","r");
}
else
if (N==2)
{
fr=fopen("input2.txt","r");
}
else
if (N==3)
{
fr=fopen("input3.txt","r");
}
else
if (N==4)
{
fr=fopen("input4.txt","r");
}
else
if (N==5)
{
fr=fopen("input5.txt","r");
}
else
if (N==6)
{
fr=fopen("input6.txt","r");
}
else
if (N==7)
{
fr=fopen("input7.txt","r");
}
else
if (N==8)
{
fr=fopen("input8.txt","r");
}
else
if (N==9)
{
fr=fopen("input9.txt","r");
}
else
if (N==10)
{
fr=fopen("input10.txt","r");
}
if (N==11)
{
fr=fopen("input11.txt","r");
}
else
if (N==12)
{
fr=fopen("input12.txt","r");
}
else
if (N==13)
{
fr=fopen("input13.txt","r");
}
else
if (N==14)
{
fr=fopen("input14.txt","r");
}
else
if (N==15)
{
fr=fopen("input15.txt","r");
}
else
if (N==16)
{
fr=fopen("input16.txt","r");
}
else
if (N==17)
{
fr=fopen("input17.txt","r");
}
else
if (N==18)
{
fr=fopen("input18.txt","r");
}
else
if (N==19)
{
fr=fopen("input19.txt","r");
}
else
if (N==20)
{
fr=fopen("input20.txt","r");
}
else
if (N==21)
{
fr=fopen("input21.txt","r");
}
if (N==22)
{
fr=fopen("input22.txt","r");
}
else
if (N==23)
{
fr=fopen("input23.txt","r");
}
else
if (N==24)
{
fr=fopen("input24.txt","r");
}
else
if (N==25)
{
fr=fopen("input25.txt","r");
}
else
if (N==26)
{
fr=fopen("input26.txt","r");
}
else
if (N==27)
{
fr=fopen("input27.txt","r");
}
else
if (N==28)
{
fr=fopen("input28.txt","r");
}
else
if (N==29)
{
fr=fopen("input29.txt","r");
}
else
if (N==30)
{
fr=fopen("input30.txt","r");
}
else
if (N==31)
{
fr=fopen("input31.txt","r");
}
else
if (N==32)
{
fr=fopen("input32.txt","r");
}
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
fscanf(fr,"%i",&m[i][j]);
numeri++;
}
}
}
void CONTROLLO(int CON[9][9], int N)
{
int i,j;
FILE *fr;
N==1;
if (N==0)
{
fr=fopen("control0.txt","r");
}
else
if (N==1)
{
fr=fopen("control1.txt","r");
}
else
if (N==2)
{
fr=fopen("control2.txt","r");
}
else
if (N==3)
{
fr=fopen("control3.txt","r");
}
else
if (N==4)
{
fr=fopen("control4.txt","r");
}
else
if (N==5)
{
fr=fopen("control5.txt","r");
}
else
if (N==6)
{
fr=fopen("control6.txt","r");
}
else
if (N==7)
{
fr=fopen("control7.txt","r");
}
else
if (N==8)
{
fr=fopen("control8.txt","r");
}
else
if (N==9)
{
fr=fopen("control9.txt","r");
}
else
if (N==10)
{
fr=fopen("control10.txt","r");
}
else
if (N==11)
{
fr=fopen("control11.txt","r");
}
else
if (N==12)
{
fr=fopen("control12.txt","r");
}
else
if (N==13)
{
fr=fopen("control13.txt","r");
}
else
if (N==14)
{
fr=fopen("control14.txt","r");
}
else
if (N==15)
{
fr=fopen("control15.txt","r");
}
else
if (N==16)
{
fr=fopen("control16.txt","r");
}
else
if (N==17)
{
fr=fopen("control17.txt","r");
}
else
if (N==18)
{
fr=fopen("control18.txt","r");
}
else
if (N==19)
{
fr=fopen("control19.txt","r");
}
else
if (N==20)
{
fr=fopen("control20.txt","r");
}
else
if (N==21)
{
fr=fopen("control21.txt","r");
}
else
if (N==22)
{
fr=fopen("control22.txt","r");
}
else
if (N==23)
{
fr=fopen("control23.txt","r");
}
else
if (N==24)
{
fr=fopen("control24.txt","r");
}
else
if (N==25)
{
fr=fopen("control25.txt","r");
}
else
if (N==26)
{
fr=fopen("control26.txt","r");
}
else
if (N==27)
{
fr=fopen("control27.txt","r");
}
else
if (N==28)
{
fr=fopen("control28.txt","r");
}
else
if (N==29)
{
fr=fopen("control29.txt","r");
}
else
if (N==30)
{
fr=fopen("control30.txt","r");
}
else
if (N==31)
{
fr=fopen("control31.txt","r");
}
else
if (N==32)
{
fr=fopen("control32.txt","r");
}
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
fscanf(fr,"%i",&CON[i][j]);
}
}
}
void TABELLA(int m[9][9],int copia[9][9])
{ int i,j,x=0;
printf(" 0 1 2 3 4 5 6 7 8 ");
for(i=0;i<9;i++)
{if(i%3)
{
printf ("\n +---+---+---|---+---+---|---+---+---+\n |");
}
else
printf ("\n *===========|===========|===========*\n |");
for(j=0;j<9;j++)
{
if(m[i][j]==0)
{ printf(" ");
}
else
{
printf(" %i ",m[i][j]);
}
if(j==2 || j==5)
{
printf("|");
}
else
printf("|");
}
}
printf("\n *===========|===========|===========*");
}
void COPIATABELLA(int m[9][9],int copia[9][9])
{ int i,j;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
copia[i][j]=m[i][j];
}
}
}
void SUDOKU(int m[9][9],int numeri,int copia[9][9],int CON[9][9])
{int i,j,r,c,n;
do
{
numeri=0;
printf("\nInserisci la riga:");
scanf("%i",&r);
printf("Inserisci la colonna:");
scanf("%i",&c);
printf("Quale numero vorresti mettere?");
scanf("%i",&n);
system("CLS");
if(copia[r][c]==0)
{
m[r][c]=n;
m[i][j]=m[r][c];
}
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(m[i][j]!=0)
numeri++;
}
}
TABELLA(m, copia);
}while(numeri!=81);
COMPARE( m, CON);
}
int scelta()
{ char controllo;
int selezione=1;
int scelta=0;
do{
system("CLS");
gotoxy(49,28+selezione); //selezione c la variabile che segue le frecce su e giu
printf("%c",(char)26);
gotoxy(52,8);
printf("BENVENUTO NEL:\n ");
TITOLO();
gotoxy(50,25);
printf("MENU' DI SCELTA");
gotoxy(50,29);
printf("FACILE");
gotoxy(50,31);
printf("MEDIO");
gotoxy(50,33);
printf("EXTREME");
controllo=getch();
if ((int)controllo==80 && selezione!=5) selezione=selezione+2; //mi muovo con i tasti freccia giu (80) saltando una riga
if ((int)controllo==72 && selezione!=1) selezione=selezione-2; //o freccia su (72) saltando una riga
if ((int)controllo==13) scelta=1; //quando clicco invio significa che ho scelto
}while (scelta!=1);
system("CLS");
if (selezione==1) return 1;
if (selezione==3) return 2;
if (selezione==5) return 3;
}
void TITOLO()
{
gotoxy(21,10);
SetColor(170);
printf("000000");
gotoxy(21,11);
printf("00");
gotoxy(21,12);
printf("00");
gotoxy(21,13);
printf("00");
gotoxy(21,14);
printf("00");
gotoxy(21,15);
printf("000000");
gotoxy(25,16);
printf("00");
gotoxy(25,17);
printf("00");
gotoxy(25,18);
printf("00");
gotoxy(25,19);
printf("00");
gotoxy(21,20);
printf("000000");
gotoxy(29,10);
printf("00");
gotoxy(29,11);
printf("00");
gotoxy(29,12);
printf("00");
gotoxy(29,13);
printf("00");
gotoxy(29,14);
printf("00");
gotoxy(29,15);
printf("00");
gotoxy(29,16);
printf("00");
gotoxy(29,17);
printf("00");
gotoxy(29,18);
printf("00");
gotoxy(29,19);
printf("00");
gotoxy(31,20);
printf("0000000");
gotoxy(38,19);
printf("00");
gotoxy(38,18);
printf("00");
gotoxy(38,17);
printf("00");
gotoxy(38,16);
printf("00");
gotoxy(38,15);
printf("00");
gotoxy(38,14);
printf("00");
gotoxy(38,13);
printf("00");
gotoxy(38,12);
printf("00");
gotoxy(38,11);
printf("00");
gotoxy(38,10);
printf("00");
gotoxy(42,10);
printf("0000000");
gotoxy(42,11);
printf("00");
gotoxy(42,12);
printf("00");
gotoxy(42,13);
printf("00");
gotoxy(42,14);
printf("00");
gotoxy(42,15);
printf("00");
gotoxy(42,16);
printf("00");
gotoxy(42,17);
printf("00");
gotoxy(42,18);
printf("00");
gotoxy(42,19);
printf("00");
gotoxy(42,20);
printf("000000000");
gotoxy(49,11);
printf("00");
gotoxy(50,12);
printf("00");
gotoxy(51,13);
printf("00");
gotoxy(52,14);
printf("00");
gotoxy(53,15);
printf("00");
gotoxy(53,16);
printf("00");
gotoxy(52,17);
printf("00");
gotoxy(51,18);
printf("00");
gotoxy(50,19);
printf("00");
gotoxy(49,20);
printf("00");
gotoxy(59,10);
printf("000000");
gotoxy(57,11);
printf("00");
gotoxy(57,12);
printf("00");
gotoxy(57,13);
printf("00");
gotoxy(57,14);
printf("00");
gotoxy(57,15);
printf("00");
gotoxy(57,16);
printf("00");
gotoxy(57,17);
printf("00");
gotoxy(57,18);
printf("00");
gotoxy(57,19);
printf("00");
gotoxy(59,20);
printf("000000");
gotoxy(65,19);
printf("00");
gotoxy(65,18);
printf("00");
gotoxy(65,17);
printf("00");
gotoxy(65,16);
printf("00");
gotoxy(65,15);
printf("00");
gotoxy(65,14);
printf("00");
gotoxy(65,13);
printf("00");
gotoxy(65,12);
printf("00");
gotoxy(65,11);
printf("00");
gotoxy(69,10);
printf("00");
gotoxy(69,11);
printf("00");
gotoxy(69,12);
printf("00");
gotoxy(69,13);
printf("00");
gotoxy(69,14);
printf("00");
gotoxy(69,15);
printf("00");
gotoxy(69,16);
printf("00");
gotoxy(69,17);
printf("00");
gotoxy(69,18);
printf("00");
gotoxy(69,19);
printf("00");
gotoxy(69,20);
printf("00");
gotoxy(70,15);
printf("00");
gotoxy(71,14);
printf("00");
gotoxy(72,13);
printf("00");
gotoxy(73,12);
printf("00");
gotoxy(74,11);
printf("00");
gotoxy(75,10);
printf("00");
gotoxy(70,15);
printf("00");
gotoxy(71,16);
printf("00");
gotoxy(72,17);
printf("00");
gotoxy(73,18);
printf("00");
gotoxy(74,19);
printf("00");
gotoxy(75,20);
printf("00");
gotoxy(79,10);
printf("00");
gotoxy(79,11);
printf("00");
gotoxy(79,12);
printf("00");
gotoxy(79,13);
printf("00");
gotoxy(79,14);
printf("00");
gotoxy(79,15);
printf("00");
gotoxy(79,16);
printf("00");
gotoxy(79,17);
printf("00");
gotoxy(79,18);
printf("00");
gotoxy(79,19);
printf("00");
gotoxy(81,20);
printf("0000000");
gotoxy(88,19);
printf("00");
gotoxy(88,18);
printf("00");
gotoxy(88,17);
printf("00");
gotoxy(88,16);
printf("00");
gotoxy(88,15);
printf("00");
gotoxy(88,14);
printf("00");
gotoxy(88,13);
printf("00");
gotoxy(88,12);
printf("00");
gotoxy(88,11);
printf("00");
gotoxy(88,10);
printf("00");
SetColor(7);
}