View previous topic :: View next topic 
Author 
Message 
 marko99
 Joined: 07 Mar 2009  Posts: 1  :   Items 

Posted: Wed Mar 11, 2009 10:04 am Post subject: Designing Sudoku 


Hi,
first post, was just wondering what the best way to design a sudoku GUI is? (Netbeans, using a grid and text boxes?)
Any advice would be great.
Cheers
M 

Back to top 


 Lunatic
 Joined: 11 Mar 2007  Posts: 166  :  Location: Ghent  Belgium  Items 

Posted: Wed Mar 11, 2009 11:18 am Post subject: 


Hi, welcome,
Most solvers are using a grid with textboxes. My solver has a pencilmarked grid whereof the cell solution is assigned with left mouseclick and impossible values can be rejected with right mouseclick. _________________ Marc
~~~<><~~~<><~~~<><~~~<><~~~ 

Back to top 


 hobiwan
 Joined: 11 Feb 2008  Posts: 83  :   Items 

Posted: Fri Mar 13, 2009 4:32 pm Post subject: 


I wouldnt use textboxes (mainly because if every cell is a textbox you cant easily use the cursor keys to switch cells).
I personally use a JPanel and do the drawing myself. 

Back to top 


 raoheal
 Joined: 18 Mar 2009  Posts: 1  :   Items 

Posted: Wed Mar 18, 2009 1:04 pm Post subject: help with soduku solver 


Hello,
Please i need someone to explain to me what is the algorithm used in this code and also how i can add a function that can generate initial state of soduku.
#include "stdafx.h"
#include <iostream>
#include<stdlib>
using namespace std;
void main()
{
int k[9][9],K[9][9];
int i,j,i1,j1,i2,j2;
int error,temp;
int count=0;
cout <<"Welcome! Please Enter your puzzle";
for(i=0;i<9;i++)
for(j=0;j<9;j++)
K[i][j]=0;
for(i=0;i<9;i++)
for(j=0;j<9>>K[i][j];
k[i][j]=K[i][j];
}
cout<<"O.K.? (Enter 0 if OK): ";
cin>>error;
if(error==0)
goto matrixvalidation;
matrixupdation:
while(1)
{
//cout<<"Enter Row, Col, Revised number:(0 to exit) " <<endl>>i;
if(i==0) break;
cin>>j>>temp;
if(i>0&&j>0&&temp>=0&&i<10&&j<10&&temp<10)
{
K[i1][j1]=temp;
k[i1][j1]=temp;
}
//else
//cout<<"Enter row/column 1 to 9 & number 0 to 9 only." <<endl;
}
matrixvalidation:
cout<< "Input matrix:" <<endl;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
cout<<k[i][j]<<" " ;
cout<< " " << endl;
}
for(i=0;i<9;i++)
for(j=0;j<9;j++)
if(k[i][j]<0>9)
{
//cout<<" "<<i+1<<" "<<j+1<<" "<<k[i][j];
cout<< "Input matrix error." ;
cout<<"Numbers should be 1 to 9 only.";
//goto matrixupdation;
}
for(i=0;i<9;i++)
for(j=0;j<9;j++)
{
if(k[i][j]==0)continue;
error=0;
for(i1=0;i1<9;i1++)
if(i!=i1&&k[i][j]==k[i1][j])
{
error=1;
i2=i1;
j2=j;
}
for(j1=0;j1<9;j1++)
if(j!=j1&&k[i][j]==k[i][j1])
{
error=1;
i2=i;
j2=j1;
}
for(i1=0;i1<9;i1++)
for(j1=0;j1<9;j1++)
if((i!=i1j!=j1)&&i/3==i1/3&&j/3==j1/3&&k[i][j]==k[i1][j1])
{
error=1;
i2=i1;
j2=j1;
}
if(error)
{
//cout<<" "<<i+1<<" "<<j+1<<" "<<k[i][j];
//cout<<" "<<i2+1<<" "<<j2+1<<" "<<k[i2][j2];
cout<< "Input matrix error." <<endl;
cout<< "A number has been repeated in the same row, col or block." <<endl ;
goto matrixupdation;
}
}
/* Logic starts: */
for(i=0;i<9;i++)
for(j=0;j<9>0) goto chksol;
for(k[i][j]++;k[i][j]<=9;k[i][j]++)
{
error=0;
for(i1=0;i1<9;i1++)
if(i!=i1&&k[i][j]==k[i1][j])error=1;
for(j1=0;j1<9;j1++)
if(j!=j1&&k[i][j]==k[i][j1])error=1;
for(i1=0;i1<9;i1++)
for(j1=0;j1<9>9)
{
k[i][j]=0;
do
{
if(i==0&&j==0)goto nomoresol;
if(j>0)j;else{j=8;i;}
}while(K[i][j]>0);
j;
}
chksol: if(i==8&&j==8)
{
cout<<" Solution:"<<endl <<" "<<endl;
++count;
for(i1=0;i1<9;i1++)
{
for(j1=0;j1<9;j1++)
cout<<k[i1][j1]<<" ";
cout<<" "<<endl;
}
if(count==50)
{
cout<<"Too many solutions.Not checking for more solutions.";
return;
}
while(K[i][j]>0)
{
if(i==0&&j==0)goto nomoresol;
if(j>0)j;else{j=8;i;}
}
k[i][j]=0;
do
{
if(i==0&&j==0)goto nomoresol;
if(j>0)j;else{j=8;i;}
}while(K[i][j]>0);
j;
}
}
nomoresol:
if(count>0)
cout<<"No more solutions." ;
else
cout<<"No solution.";
} 

Back to top 


 Pete
 Joined: 09 Jun 2008  Posts: 18  :  Location: Somerset, NJ  Items 

Posted: Wed Mar 18, 2009 10:40 pm Post subject: 


marko99,
Welcome aboard!
There are quite a few ways to create a sudoku GUI. Programmers will probably disagree as to which approach is "best." Since you're looking at NetBeans, I would presume that you're using Java.
In my own program, the sudoku grid is just a JPanel that keeps track of its cells. It overrides paintComponent(), which in turn calls paint() for each cell. Each cell is then responsible for painting either its value or its candidates. If you'd care to see some working source code, you can download mine from http://sourceforge.net/projects/dancinglinks/
Here's another approach that I've been considering: Each cell could be a component that uses JLabels to show its candidates. The puzzle grid would still be a panel, though it would use a GridLayout to arrange its cells. I'm rather fond of this idea. Life is busy now, so I can't say for sure when (or even if) I will actually implement it.
My program has no keyboard/cursor support, so there's no notion of a "current" cell and no tabbing between cells. That would be fairly easy to add to either of the above approaches.
Good luck with your program! Please let us know when you have something to show us.
Regards,
Pete 

Back to top 


 lkSudoku
 Joined: 16 May 2009  Posts: 60  :   Items 

Posted: Sat May 16, 2009 10:25 am Post subject: The GUI for my Sudoku 


I have created sudoku using Microsoft Visual C++ MFC classes.
That is, using an MFC view document template
The cells that do not have fixed values are simpy text boxes, the grid is drawn with lines and filled rectangles, fixed cells are drawn with hidden text boxes and regular text drawn 

Back to top 


 energztm
 Joined: 21 Jul 2009  Posts: 6  :   Items 

Posted: Tue Jul 21, 2009 2:57 pm Post subject: 


Whatever you do, I suggest non flash =] 

Back to top 


