2013-07-30 4 views
0

나는 C++로 스도쿠 솔버를 만들었다. 그러나 GUI가 필요합니다. VC++에 익숙하지 않기 때문에 GUI를 만들 수는 없으며 C#으로 GUI를 만들려고합니다. 나는 C#의 기본을 지났지 만 시작을 필요로한다. 폼에 Windows Form 응용 프로그램을 만들고 데이터 격자보기를 만드는 경우 격자에서 기능을 구현하는 방법은 무엇입니까? 아래는 C++ 코드입니다. 잘스도쿠 해결사를 C로 구현하기 #

#include<iostream.h> 
#include<conio.h> 




int a[9][9],b[9][9]; 

int inputvalue(int x, int y, int value) 
{ 
    for(int i = 0; i < 9; i++) 
    { 
     if(value == b[x][i] || value == b[i][y]) 
      return 0; 
    } 

    for (i = (x/3) * 3; i <= ((x/3) * 3) + 2; i++) 
     for (int j = (y/3) * 3; j <= ((y/3) * 3) + 2; j++) 
      if(b[i][j] == value) 
       return 0; 
    return value; 
} 

int solve(int x, int y) 
{ 
    int temp; 
    if(b[x][y] == 0) 
    { 
     for(int i = 1;i < 10; i++) 
     { 
     temp = inputvalue(x, y, i); 
     if(temp > 0) 
     { 
      b[x][y] = temp; 
      if (x == 8 && y == 8) 
       return 1; 
       else if (x == 8) 
       { 
       if (solve(0, y + 1)) 
       return 1; 
      } 
      else 
      { 
      if (solve(x + 1, y)) 
        return 1; 
      } 
     } 
     } 
     if (i == 10) 
     { 
      if (b[x][y] != a[x][y]) 
      b[x][y] = 0; 
      return 0; 
     } 
    } 
    if (x == 8 && y == 8) 
     return 1; 
    else if (x == 8) 
    { 
     if (solve(0, y + 1)) 
      return 1; 
    } 
    else 
    { 
     if (solve(x + 1, y)) 
      return 1; 
    } 
} 



void main() 
{ 
    clrscr(); 
    for(int i = 0;i < 9;i++) 
     for(int j = 0;j < 9;j++) 
     { 
      gotoxy(i + 1,j + 1); 
      cin >> a[i][j]; 
     } 
    for(i = 0;i < 9;i++) 
     for(j = 0;j < 9;j++) 
      b[i][j] = a[i][j]; 
    if(solve(0,0)) 
    { 
     for(i = 0;i < 9;i++) 
      for(j = 0;j < 9;j++) 
      { 
      gotoxy(i + 1,j + 1); 
      cout << b[i][j]; 
      } 
    } 
    else 
     cout<<"no solution"; 
    getch(); 
} 
+2

폭 넓은 방법 - 귀하의 질문에 구체적인 것을 제안하는 것이 매우 어렵습니다 ... 당신이 스도쿠 해결사를 필요로한다면 - 주변에는 많은 것들이 있습니다. WinForms/WPF를 배워야하는 경우 - 샘플이 많이 있습니다. –

+2

QT 또는 TCL/TK 또는 GTK를 사용해 보셨습니까? – Ani

+0

먼저 C#에 솔버 코드를 포팅 해보십시오. 그런 다음 C#에서 GUI를 추가하십시오. – doomster

답변

1

, 난 당신이 양식을 그래서, 당신은 버튼 클릭에 등록해야합니다 "해결 시작합니다"라는 버튼이나 뭔가를해야합니다 같아요

this.button1.Click += new System.EventHandler(this.button1_Click); 

button1_Click 방법에 당신은 당신이 당신의 코드에서 보여준 것처럼 당신의 논리를 할 필요가있다. datagridview의 각 셀을 처리하는 방법을 알고 싶을 것입니다. 그 간단합니다 :

dataGridView1[CurrentColumn, CurrentRow] 

그래서

(DataGridViewTextBoxColumn)dataGridView1[CurrentColumn, CurrentRow] 

또는

dataGridView1[CurrentColumn, CurrentRow] as DataGridViewTextBoxColumn 

처럼 당신이 당신의 세포로 변환거야 DataGridViewCell (나는 DataGridViewTextBoxColumn를 추측) 반환 후 사용하여 해당 셀을 편집하는 Text :

(dataGridView1[CurrentColumn, CurrentRow] as DataGridViewTextBoxColumn).Text = MyText 
+0

고마워요, 방향을 찾았습니다. – user2632990