Форум программистов, компьютерный форум, киберфорум
Наши страницы

Языки JVM

Войти
Регистрация
Восстановить пароль
 
Slenon
3 / 3 / 0
Регистрация: 25.07.2016
Сообщений: 135
#1

Игрушка "puzzle" - логика работает, а изображение не меняется - JVM

27.12.2017, 07:25. Просмотров 754. Ответов 3
Метки нет (Все метки)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//puzzle.groovy
package groovy
import groovy.swing.SwingBuilder
import javax.swing.*
import java.awt.FlowLayout
import java.util.*
import java.awt.*
import java.awt.event.*
 
jfrm = new JFrame('N-размерный puzzle')
gbag = new GridBagLayout()
gbc  = new GridBagConstraints()
gbc.fill = GridBagConstraints.BOTH
jfrm.getContentPane().setLayout(gbag)
jfrm.setSize(550, 550)
btnDim = new Dimension(50, 50)
gbc.weightx = 0.0       
gbc.insets  = new Insets(0, 0, 0, 0)
 
public class Spisok_2 {def spisok_2(N) {Spisok m1 = new Spisok(); def   order = m1.spisok(N)}}
                       def spisok(N) {m2 = new Spisok_2();  order = m2.spisok_2(N)}
 
//Integer N1; N1 = Math.round(Math.random()*10)
//if ( 0 <= N1 && N1 <= 2) {N = 4} else {N = N1}
N = 3; F = null
chisla = [1, 2, 3, 4, 5, 6, 7, 8, null]//spisok(N)
Oglavlenie(N)
Tablica(N, F)
jfrm.setVisible(true)
//----------------------------------------------------------------------------------
def Tablica(N, F) {
  for (int I = 0; I < N**2; I++) {
    if (I == F) {I = F}
        knopka(N, I)
   }
}
def knopka(N, I) {   
  Y = (int)(I/N); X = I%N  
  jbtnCh = new JButton(text: chisla[I], actionPerformed: {Poisk(N, I)})    
  gbc.gridy = Y+1; gbc.gridx = X+1  
  jbtnCh.setPreferredSize(btnDim)   
  gbag.setConstraints(jbtnCh, gbc)
  jfrm.getContentPane().add(jbtnCh)
  println("I = ${I}; (Y = ${Y}, X = ${X}); Znac = ${chisla[I]}")// эта строка печатает
  //логику работы проги (в NetBeans). Она показывает что происходит передвижение кнопки
  //null (или, по другому - перемещение кнопки со знаком на сободное поле, но с изображением
  // ничего не происходит!...)  Почему?!...
}
def Poisk(N, I) {
       M = chisla[I]
  if ((I-N >= 0    && chisla[I-N] == null && (F = I-N) && (chisla[I-N] = M)) ||
      (I+1 <  N**2 && chisla[I+1] == null && (F = I+1) && (chisla[I+1] = M)) ||
      (I+N <  N**2 && chisla[I+N] == null && (F = I+N) && (chisla[I+N] = M)) ||
      (I-1 >= 0    && chisla[I-1] == null && (F = I-1) && (chisla[I-1] = M)))
      {chisla[I] = null; Tablica(N, F); println("__________________________________")}   
} 
def Oglavlenie(N) {
  for (int G = 0; G < N; G++) { 
   jlabChY = new JLabel("Y = ${G}    ")
   gbc.gridy = G+1; gbc.gridx = 0
   gbag.setConstraints(jlabChY, gbc)
   jfrm.getContentPane().add(jlabChY)
//--------------------------------------
   jlabChX = new JLabel("    X = ${G}")
   gbc.gridy = 0; gbc.gridx = G+1
   gbag.setConstraints(jlabChX, gbc)
   jfrm.getContentPane().add(jlabChX)
   }
}
Добавлено через 1 минуту
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Spisok.groovy
package groovy
  public class Spisok {
    Integer S, J, T, Q
    List order, order1
def spisok (N) {
    S = (N as Integer  )**2 - 1
    order = [0]; Q = 0
  while (Q <= S) {
     J = 0; T = Math.round(Math.random() * S)
    for (i in order) {if (T != i) {++J} }
      if (J == order.size()) {order = order + T}         
       Q = order.size()
      }
    order = order - 0 + null
   }
}
Добавлено через 9 часов 3 минуты
Упрощение:
Java
1
2
3
4
5
6
7
8
def Poisk(N, I) {
       M = chisla[I]
  if (((F=I-N) >= 0    && chisla[F] == null && (chisla[F] = M)) ||
      ((F=I+1) <  N**2 && chisla[F] == null && (chisla[F] = M)) ||
      ((F=I+N) <  N**2 && chisla[F] == null && (chisla[F] = M)) ||
      ((F=I-1) >= 0    && chisla[F] == null && (chisla[F] = M)))
      {chisla[I] = null; Tablica(N, F); println("__________________________________")}   
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2017, 07:25
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Игрушка "puzzle" - логика работает, а изображение не меняется (JVM):

Напишите программу на JAVA:которая в строке "а роза упала на лапу азора" находит символ "У" и печатает символы строки до следующего символа "у" - Java
Помогите пожалуйста решить 1) Напишите программу на JAVA:которая в строке &quot;а роза упала на лапу азора&quot; находит символ &quot;У&quot; и печатает...

Почему не работает request.setCharacterEncoding("Cp1251")? - Java
тема может и замусолиная но вот столкнулся и чувствую себя идиотом - поля которые мне надо в руском тексте преобразовываю таким образом в...

Удалить запятые, которые встречаются перед первой точкой и заменять все символы "5" на "+" - Java
Дана символьная строка. на нем есть как минимум одна точка. изменить строку по следующим правилам: удалять запятые которые встречаются ...

Модифицируйте строку так, чтобы все символы "+", предшествующие первой точке, заменяются на символ "-" - Java
Пожалуйста помогите мне сделать задание (Java) Дана строка, в которой содержится хотя бы одна точка. Модифицируйте строку так, чтобы все...

Exception in thread "main" java.lang.NumberFormatException: For input string: "" - Java
public class solution { public static long NOD(long a, long b) { if (a == 0) return b; if (b == 0) return a; if (a ==...

JExcelAPI ошибка "Text Object on sheet "*" not supported - omitting" - Java
Обрабатываю excel-файлы, для этого решил использовать JExcelAPI. Некоторые excel-файлы (.xls) не получается прочитать, выдается ошибка как...

3
Slenon
3 / 3 / 0
Регистрация: 25.07.2016
Сообщений: 135
09.02.2018, 22:12  [ТС] #2
Вот на этом я застрял
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
N = 3
chisla = [1, 2, 3, 4, 5, 6, 7, 8]//spisok(N)
Tablica(N)
jfrm.setVisible(true)
 
def Tablica(N) {for (int I = 0; I < N**2 - 1; I++) {knopka(N, I)}}
def knopka(N, I) {  
  Y = (int)(I/N); X = I%N 
  jbtnCh = new JButton(text: chisla[I], actionPerformed: {e -> e.getSource().setText(null); Poisk(N, I)})    
  gbc.gridy = Y+1; gbc.gridx = X+1  
  jbtnCh.setPreferredSize(btnDim)   
  gbag.setConstraints(jbtnCh, gbc)
  jfrm.getContentPane().add(jbtnCh)
}
def Poisk(N, I) {    
  if (((F = I-N) >= 0     &&  chisla[F] == null) ||
      ((F = I+1) <  N**2  &&  chisla[F] == null) ||
      ((F = I+N) <  N**2  &&  chisla[F] == null) ||
      ((F = I-1) >= 0     &&  chisla[F] == null))
      {chisla[F] = chisla[I]; knopka(N, F); chisla[I] = null}     
}
В данный момент мне надо знать что надо поместить вместо setText(null), что-бы кнопка удалялась, и как поместить полученное в ветку then метода def Poisk(N, I) , что-бы удалялась только кнопка соседняя с пустым полем ...
0
Slenon
3 / 3 / 0
Регистрация: 25.07.2016
Сообщений: 135
26.04.2018, 13:39  [ТС] #3
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//.....................................................................................................................................
N = 3
chisla = [1, 2, 3, 4, 5, 6, 7, 8, ""]//spisok(N)
Tablica()
Oglavlenie()
jfrm.setVisible(true)
 
def Tablica() {for (int I = 0; I < N**2; I++) knopka(I, N)}
def knopka(I, N) {  
  Y = (int)(I/N); X = I%N 
  jbtnCh = new JButton(text: chisla[I], actionPerformed: {e -> e.getSource().setText(Poisk(I))})    
  gbc.gridy = Y+1; gbc.gridx = X+1  
  jbtnCh.setPreferredSize(btnDim)   
  gbag.setConstraints(jbtnCh, gbc)
  jfrm.getContentPane().add(jbtnCh)
}
def Poisk(I) {         
    def W = {chisla[F] == ""}
  if (((F = I-N) >= 0     &&  W{}) || ((F = I+1) <  N**2  &&  W{}) ||
      ((F = I+N) <  N**2  &&  W{}) || ((F = I-1) >= 0     &&  W{}))
      {chisla[F] = chisla[I]; knopka(F, N); chisla[I] = ""} else {"${chisla[I]}"}     
}
Итак, GUI кое как работает, но вот именно кое как
Просьба либо исправить код, либо указать на ошибки

Добавлено через 10 часов 32 минуты
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Spisok.groovy
package groovy
  public class Spisok {
    Integer S, J, T, Q
    List Order
def spisok (N) {
    S = (N as Integer  )**2
    Order = [0]; Q = 0
  while (Q < S) {
     J = 0; T = Math.round(Math.random() * S)
    for (i in Order) {if (T != i) {++J}}
      if (J == Order.size()) {Order = Order + T}         
       Q = Order.size()
      }
    Order = Order - 0 + ""
   }
}
0
Slenon
3 / 3 / 0
Регистрация: 25.07.2016
Сообщений: 135
20.05.2018, 14:31  [ТС] #4
Полный текст проги - на сегодняшний момент ...
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//puzzle.groovy
package groovy
 
import groovy.swing.SwingBuilder
import javax.swing.*
import java.awt.FlowLayout
import java.util.*
import java.awt.*
import java.awt.event.*
 
jfrm = new JFrame('N-размерный puzzle')
gbag = new GridBagLayout()
gbc  = new GridBagConstraints()
gbc.fill = GridBagConstraints.BOTH
jfrm.getContentPane().setLayout(gbag)
jfrm.setSize(550, 550)
btnDim = new Dimension(50, 50)
gbc.weightx = 0.0       
gbc.insets  = new Insets(0, 0, 0, 0)
 
/*N = Math.round(Math.random()*10)
if (N <= 2) {N = 4} else {N}*/
 
public class Spisok_2 {def spisok_2(N) {Spisok m1 = new Spisok(); def order = m1.spisok(N)}}
                       def spisok(N) {m2 = new Spisok_2(); order = m2.spisok_2(N)}
N = 4
chisla = spisok(N)
Tablica()
Oglavlenie()
jfrm.setVisible(true)
 
def Tablica() {for (int I = 0; I < N**2; I++) knopka(I)}
def knopka(I) {  
  Y = (int)(I/N); X = I%N 
  jbtnCh = new JButton(text: chisla[I], actionPerformed: {e -> e.getSource().setText(Poisk(I))})    
  gbc.gridy = Y+1; gbc.gridx = X+1  
  jbtnCh.setPreferredSize(btnDim)   
  gbag.setConstraints(jbtnCh, gbc)
  jfrm.getContentPane().add(jbtnCh)
}
def Poisk(I) {         
    def W = {chisla[F] == ""}
  if (((F = I-N) >= 0     &&  W{}) ||
      ((F = I+1) <  N**2  &&  W{}) ||
      ((F = I+N) <  N**2  &&  W{}) ||
      ((F = I-1) >= 0     &&  W{}))
      {chisla[F] = chisla[I]; knopka(F); chisla[I] = ""} else {"${chisla[I]}"}     
} 
def Oglavlenie() {
  for (int G = 0; G < N; G++) { 
   jLabChY = new JLabel("Y = ${G}     ")
   gbc.gridy = G+1; gbc.gridx = 0
   gbag.setConstraints(jLabChY, gbc)
   jfrm.getContentPane().add(jLabChY)
//--------------------------------------
   jLabChX = new JLabel("    X = ${G}")
   gbc.gridy = 0; gbc.gridx = G+1
   gbag.setConstraints(jLabChX, gbc)
   jfrm.getContentPane().add(jLabChX)
   }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Spisok.groovy
package groovy
  public class Spisok {
    Integer S, J, T, Q
    List Order
def spisok (N) {
    S = (N as Integer  )**2
    Order = [0]; Q = 0
  while (Q < S) {
     J = 0; T = Math.round(Math.random() * S)
    for (i in Order) {if (T != i) {++J}}
      if (J == Order.size()) {Order = Order + T}         
       Q = Order.size()
      }
    Order = Order - 0 + ""
   }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2018, 14:31
Привет! Вот еще темы с ответами:

Дети, widt="80%" height = "90%" от size окна апплета - Java
Дети, widt='80%' height = '90%' от size окна апплета Это я для подгонки размеров А как узнать в самом аппплете- какой у него размер?...

Запуск "MineCraft.jar" - Exception in thread "main" - Java
Что-то с Java приключилось на компе. --------------------------- Java Virtual Machine Launcher --------------------------- A...

Проверка правописания ("Жи", "ши", с буквой "и" ) - Java
Всем привет! У меня появилась странная,но интересная задача по правописанию. Необходимо объяснить программе именно само правило. т.е....

Создать классы "Подъемный кран" и "Грузовик". - Java
Создать классы &quot;Подъемный кран&quot; и &quot;Грузовик&quot;. Схематично изображенный грузовик может привозить груз к подъемному крану и отвозить груз от...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru