Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2018, 22:04   #21
leprekod
Пользователь
 
Регистрация: 18.12.2016
Сообщений: 37
По умолчанию

Вот на этом я застрял
Код:
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) , что-бы удалялась только кнопка соседняя с пустым полем ...
leprekod вне форума Ответить с цитированием
Старый 26.04.2018, 13:57   #22
leprekod
Пользователь
 
Регистрация: 18.12.2016
Сообщений: 37
По умолчанию

Код:
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 кое как работает, но, вот именно кое как
leprekod вне форума Ответить с цитированием
Старый 20.05.2018, 14:34   #23
leprekod
Пользователь
 
Регистрация: 18.12.2016
Сообщений: 37
По умолчанию

Код:
//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)
   }
}
Код:
//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 + ""
   }
}
leprekod вне форума Ответить с цитированием
Старый 13.05.2019, 16:46   #24
leprekod
Пользователь
 
Регистрация: 18.12.2016
Сообщений: 37
По умолчанию

Код:
//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)
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
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)}

K = (int)Math.round(Math.random()*10)
if(K in 3..10) {N = K} else {N = 7}
E = N**2 - 1
chisla = spisok(E)
Tablica()
Oglavlenie()
jfrm.setVisible(true)

def Tablica() {jbtnCh = new ArrayList(); for(I in 0..<E) knopka(I)}
def knopka(I) {    
  jbtnCh[I] = new JButton(text: chisla[I], actionPerformed: {Poisk(I)})
  gbc.gridy = (int)(I/N)+1; gbc.gridx = I%N+1  
  jbtnCh[I].setPreferredSize(btnDim)  
  gbag.setConstraints(jbtnCh[I], gbc)
  jfrm.getContentPane().add(jbtnCh[I]) 
}
def Poisk(I) {
  P = (I+1)%N 
  def W  = {chisla[F] == null}
  def W0 = {P != 0 && W{}}
  def W1 = {P != 1 && W{}}        
   if(((F = I-N) >= 0  &&  W{} ) || ((F = I+1) <= E  &&  W0{}) || 
      ((F = I+N) <= E  &&  W{} ) || ((F = I-1) >= 0  &&  W1{})) {
        jfrm.getContentPane().remove(jbtnCh[I])
        chisla[F] = chisla[I]; knopka(F); chisla[I] = null    
   }    
} 
def Oglavlenie() {
  for(G in 0..<N) { 
    jLabChX = new JLabel("    X = ${G}")
    gbc.gridy = 0; gbc.gridx = G+1
    gbag.setConstraints(jLabChX, gbc)
    jfrm.getContentPane().add(jLabChX)
    //--------------------------------------
    jLabChY = new JLabel("Y = ${G}     ")
    gbc.gridy = G+1; gbc.gridx = 0
    gbag.setConstraints(jLabChY, gbc)
    jfrm.getContentPane().add(jLabChY)
   }
}
Код:
//Spisok.groovy
package groovy
public class Spisok {
  Integer J, T, n1
  List order
def spisok(n) {
  n1 = n as Integer; order = [0]; def W  = {order.size()}
   while (W{} <= n1) {
       label: J = 0; T = Math.round(Math.random() * n1)
        for(I in order) {if(T != I) {++J} else {break label}}
          if(J == W{}) {order += T}
      }
      order -= 0
   }
}
Код:
//Main.java
package javaclass;
public class Main {
  public static void main(String args[]) {
    Puzzle m2  =  new Puzzle();
    m2.run();
    }
}
Код:
//Puzzle.java
package javaclass;
class Puzzle {
    void run() {
        throw new UnsupportedOperationException("Not yet implemented");
    }
}
leprekod вне форума Ответить с цитированием
Старый 13.05.2019, 17:18   #25
leprekod
Пользователь
 
Регистрация: 18.12.2016
Сообщений: 37
По умолчанию

Приложение работает, но есть одна закавыка …
При нажатии на кнопку со "свободной стороной"
ни чего не происходит! Но если после этого
окно с изображением свернуть а потом развернуть
то передвижение кнопки (паззла) происходит!
То есть проблема состоит в следующем - как
изменить код, что бы кнопка двигалась сразу
после нажатия на неё? ...
leprekod вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод/вывод в Groovy leprekod Общие вопросы по Java, Java SE, Kotlin 15 08.03.2017 09:09
Плагин для groovy Senatorik Общие вопросы по Java, Java SE, Kotlin 4 10.04.2016 00:14
GROOVY AlyonaM Помощь студентам 0 19.03.2014 10:30
Swing JLayer&&LayerUI mir_zol Общие вопросы по Java, Java SE, Kotlin 0 14.04.2013 20:00