2015-12-02 3 views
0

iam новичок в этом, поэтому я буду спрашивать вас прямо, и если smb может мне помочь, это было бы оценено. Я пытаюсь сделать игру Sudoku в BlueJ, и до сих пор я не получил никакой помощи от поисков и персонала Google, поэтому я размещаю здесь.Попробуйте создать случайный sudoku 3x3 на Java - BlueJ

Мне нужно, чтобы моя судоку была случайной головоломкой при нажатии кнопки, чтобы начать новую.

Тогда основная концепция и исправьте меня, если я ошибаюсь, чтобы построить одну случайную таблицу, которая будет решением для пользователя и одной таблицы, где пользователь может видеть 3 числа только из таблицы и выбрать другую. При сравнении двух таблиц, пользователей и решений, программа может видеть, правильно ли пользователь прав.

До сих пор у меня есть этот код.

import java.awt.*; 
import javax.swing.*; 
import java.util.*; 
public class MyFrame extends Frame 
{ 
    private double[] data; 
    private Button avgButton,minButton,maxButton,rndomButton; 
    private Button quit; 

    public MyFrame(String title) 
    { 
     super(title); 
     resize(200,200); 
     setResizable(false); 
     setLayout(new GridLayout(3,2)); 
     quit=new Button("QUIT"); 
     rndomButton=new Button("RANDOM"); 
     add(rndomButton); 
     add(quit); 
    } 

    public int Array() 
    { 
      Random rand = new Random(); 
      int n = rand.nextInt(3) + 1; 
      int y = rand.nextInt(2) + 1; 
      int i=0; 
      int j=0; 
      int value; 
      int[][] board = new int[3][3]; 
      value=board[0][0]; 
      int z=board[0][0]; 
      for(i=0;i<3;i++) 
      { 

        do{ 
        board[i][0]=n; 
       }while (board[i][0]!=board[i-1][0]&&board[i][0]!=board[i-2][0]); 
      } 
      for(j=0;j<3;j++) 
      { 
        do{ 
        board[0][j]=n; 
       }while (board[0][j]!=board[0][j-1]&&board[0][j]!=board[0][j-2]); 
      } 
      for(i=1;i<3;i++) 
      { 
       for(j=1;j<3;j++) 
       { 
        do{ 
        board[i][j]=n; 
       }while (board[i][j]!=board[i-1][j]&&board[i][j]!=board[i-2][j]&&board[i][j]!=board[i][j-1]&&board[i][j]!=board[i][j-2]); 
       } 
      } 
      for(i=0;i<3;i++) 
      { 
      for(j=0;j<3;j++) 
      { 
       z=board[i][j]; 
      } 
      } 
      return z; 
    } 

    public boolean action(Event evt,Object arg) 
    { 

     if(evt.target.equals(rndomButton)) 
     message("Array: "+Array()); 
     else 
     if(evt.target.equals(quit)) 
     System.exit(0); 
     return true; 
    } 
} 

я не знаю, если это правильно, потому что, когда я пытаюсь вернуть г значение его просто всплывает окно с ничего в там.

Обратите внимание, что если я получу возвращение z в последний раз, я получаю сообщение об ошибке на bluej.

Извините за свои навыки программирования.

Я надеюсь, что вы можете мне помочь или хотя бы порекомендовать мне некоторые ссылки, на которые нужно смотреть.

Заранее спасибо.

ответ

0

Возможно, вы слишком быстро вскочили в свою кодировку. Похоже, вам нужно лучше определить свой подход к проблеме. Во-первых, подумайте о том, как вы можете решить это вручную. Разбейте это на шаги и напишите эти шаги. Затем сделайте свою модель модели своим решением шаг за шагом.

Например, если вы думаете о том, чтобы построить свой доску по одной строке за раз, вы должны записать что-то вроде: «Для первой строки возьмите 1, 2, 3 и перестройте их в случайном порядке ... " Если вы думаете. вместо этого, о том, чтобы построить ваш совет по одной цифре за раз, вы можете написать: «Поместите 1 в случайном месте в первой строке. Поместите 1 в случайном месте во второй строке, но избегайте конфликта с первой строкой. Поместите 1 в единственную оставшуюся колонку в третьем ряду.

С вашей второй цифрой вы столкнетесь с большим количеством ограничений - вместо того, чтобы просто произвольно выбирать любой столбец из первой строки, вам нужно будет выбрать произвольно из колонки доступны.

1 2 . 
. 1 . 
. . 1 

в приведенном выше примере, при размещении 2 в вашем втором ряду, как определить, что имеется? (Один из вариантов приводит к решению, а другой к объявлению Свинец-конец). Как только вы сможете сформулировать шаги, которые вы предпримете для решения проблемы вручную, писать код становится намного проще, а мелкие кусочки, которые вы можете застрять, становятся более удобными для решения.