[C#] Sudoku

.NET este un framework software care rulează pe sistemele de operare din gama Windows.
Acest framework include o librărie mare cu soluţii pentru problemele des întâlnite de programatori. Aici vorbim despre C#, J#, VB.NET, ASP.NET, DELPHI.NET etc.

[C#] Sudoku

Postby sharky92 » 16 Aug 2011, 15:53

Dupa ce am acumulat cateva cunostinte despre C# m-am hotarat sa imi dau singur un mic test. Am facut un joc Sudoku pentru pasionati. Jocul genereaza o plansa noua la fiecare apasare a butonului Generate, si ne lasa sa modificam chiar si cifrele generate de program ( algoritmul nu e tocmai perfect asa ca se mai intampla sa genereze planse ce nu pot fi rezolvate).

Download aplicatie : http://www.2shared.com/file/EDmOASug/WindowsFormsApplication1.html

Download sursa : http://www.2shared.com/file/tx7ei47b/Form1.html
0,0p / 0 votes
User avatar
sharky92
Bit
 
Joined: 09 Nov 2010
Status: 2

Re: [C#] Sudoku

Postby smith » 16 Aug 2011, 17:37

Dacă apăs de mai multe ori pe "Generate" consecutiv, la un moment dat se blochează. :-??

M-am uitat puțin peste cod și cred că poate fi redus în dimensiuni foarte mult. Dar hey, îți apreciez răbdarea! :D
0,0p / 0 votes
Ilea Cristian
User avatar
smith
Enum
 
Joined: 29 Dec 2009
Location: Cluj-Napoca
Status: 82

Re: [C#] Sudoku

Postby sharky92 » 16 Aug 2011, 18:55

Da se blocheaza deoarece algoritmul nu poate genera cate o plansa noua la fiecare jumatate de secunda sau cat de rapid dai click si sunt deacord cu tine ca poate fi redus foarte mult dar nu am idee cum deocamdata. Banuiesc ca te referi la cele 81 de functii atribuite "butoanelor". :D
0,0p / 0 votes
User avatar
sharky92
Bit
 
Joined: 09 Nov 2010
Status: 2

Re: [C#] Sudoku

Postby Mihai » 16 Aug 2011, 19:47

Îmi place cum arată interfața - e simplă și totuși atrăgătoare (pentru mine).

Ce nu îmi place:
  • Algoritmul pentru generarea unei planșe este incorect. Pentru a genera un nou puzzle, ar trebui mai întâi să generezi o soluție corectă după care să elimini aleator cifre din ea cât timp planșa rămâne validă (adică are doar o singură soluție posibilă).
  • Modul în care completez căsuța - am făcut un mic calcul și în medie jucătorul trebuie să dea 250 de click-uri ca să termine jocul și asta mi se pare cam mult. Pentru a ușura munca, ai putea afișa (la click pe o căsuță) un numpad din care utilizatorul să poată alege cifra dorită sau ai putea citi direct cifra de la tastatură.
  • Codul - este foarte greu de urmărit/modificat și ar fi putut fi scurtat foarte mult (asta chiar ar ajuta la înțelegerea codului în cazul de față).

Cât despre faptul că uneori se blochează la generarea de soluții, eu nu cred că-i de la faptul că dăm noi click prea repede; ca să te asiguri totuși, încearcă să dezactivezi butonul de generare la începutul funcției generate() și să-l activezi abia înainte să ieși din ea.
P.S.: Ar fi frumos dacă ai putea urca întreaga soluție ca să nu trebuiască să refacem noi tot GUI-ul pentru teste/modificări :).
0,0p / 0 votes
User avatar
Mihai
Byte
 
Joined: 29 Dec 2009
Status: 25

Re: [C#] Sudoku

Postby sharky92 » 16 Aug 2011, 20:07

Multumesc pentru raspuns Mihai , pe viitor voi incerca sa il refac :D. Aici este intreaga solutie.

http://www.2shared.com/file/CKf4oUyJ/Su ... rator.html
0,0p / 0 votes
User avatar
sharky92
Bit
 
Joined: 09 Nov 2010
Status: 2

Re: [C#] Sudoku

Postby Mihai » 16 Aug 2011, 20:40

Am aflat și de ce uneori nu poți genera soluție. Din cauză că atunci când tu plasezi numerele verifici doar să nu existe conflict cu numerele din același pătrat sau de pe aceeași linie sau coloană, în unele cazuri pur și simplu nu poți umple un anumit pătrat.

Să luăm următorul caz:
  • se completează primele 8 elemente ale rândului de sus cu cifrele de la 1 la 8
  • se completează ultimul număr de pe al doilea rând cu cifra 9
  • încearcă să completezi ultima căsuță de pe primul rând

Deci ar trebui să te orientezi spre o altă metodă de generare a puzzle-ului - vezi eventual metoda descrisă de mine mai sus.
0,0p / 0 votes
User avatar
Mihai
Byte
 
Joined: 29 Dec 2009
Status: 25


Return to .NET

Who is online

Users browsing this forum: No registered users and 0 guests