Воскресенье, 16 Мая 2021, 07:07

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Скриптовые языки программирования » Программирование на Groovy (Что лучше Swing или Tk ...)
Программирование на Groovy
colencorДата: Вторник, 30 Мая 2017, 13:56 | Сообщение # 1
был не раз
Сейчас нет на сайте
Код
import groovy.swing.SwingBuilder
import javax.swing.*
import java.awt.FlowLayout
/*def download(address) {
    def file = new FileOutputStream(address)
    def out  = new BufferedOutputStream(file)
    out      << file (address).openStream()
    out.close()
    }
download(chisla)*/
swinger = new SwingBuilder()
  gui = swinger.frame(title:'Арабские << >> Римские', size: [448, 160]) {
    panel(layout: new FlowLayout()) {
    arabrim =  new JLabel('Это приложение переводит из арабской cистемы счисления в римскую и обратно!')
    arabrim.setBorder(BorderFactory.createEtchedBorder())
    panel().add(arabrim)
    panel(layout: new FlowLayout()) {
      arab = new JLabel('Арабское число:'); panel().add(arab)
      message1 = textField(columns: 12)
      button = swinger.button(text: 'Вычислить', actionPerformed: {
               JOptionPane.showMessageDialog(gui, ArabRim(message1.text))})         
      button = swinger.button(text: 'Очистить', actionPerformed: {         
               message1.selectAll(); message1.cut()})
}
      rim  = new JLabel('Римское__число:'); panel().add(rim)         
      message2 = textField(columns: 12)
      button = swinger.button(text: 'Вычислить', actionPerformed: {
               JOptionPane.showMessageDialog(gui, RimArab(message2.text))})
      button = swinger.button(text: 'Очистить', actionPerformed: {         
               message2.selectAll(); message2.cut()})
}}
gui.show()

def ArabRim (Arab) {
List Rim = [ "I", "V", "X", "L", "C", "D", "M"]
A = Arab.reverse(); i = 0; L = []
for( v in A){ x = v as Integer; iI = i*2; iV = 2*i+1; iX = 2*i+2
              switch (x){
                  case 4:    r  = Rim[iI] + Rim[iV]; break
                  case 9:    r  = Rim[iI] + Rim[iX]; break
                  case 1..3: r  = ""; for( int j = 0; j < x;  j++){ r  = r  + Rim[iI]}; break
                  case 5..8: r2 = ""; x1 = x - 5; for( int j = 0; j < x1; j++){ r2 = r2 + Rim[iI]}; r1 = Rim[iV]; r = r1 + r2; break
                  case 0:    r  = ""; break
                        }; ++i; L = L + r}                        
Rim = L.reverse(); return Rim.join()
                  }
def RimArab (Rim) {
Map rimArab = [ "I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000]
f = Rim.replace("IV", "IIII").replace("IX", "VIIII").replace("XL", "XXXX").replace("XC", "LXXXX").replace("CD", "CCCC").replace("CM", "DCCCC")
Arab = 0; for(i in f) { Arab = Arab + rimArab[i]}; return Arab
                  }

В комментарии моя попытка подключить файл chisla.groovy в котором находятся методы ArabRim и RimArab ...
Пока неудачно ... help

Добавлено (06 апреля 2017, 05:11)
---------------------------------------------
Переделанный на Groovy код создающий список длиной равной N, без 0, без повторов чисел, без лакун ...
Код
package demo
def Vvod () {print "Vvedite n = "; s = System.in.newReader().readLine(); n = s as Integer}
def Spisok (n) {
     order = []
  for (int i = 1; i <= n; i++) {
     j = Math.round(Math.random() * n)
  if (j == 0) {order << ( j + 1)}
    else      {order <<   j }
    }
    return order
}
def Bez_X (order) {
     len  = order.size() - 1
     len1 = len + 1
  for (int i = 0; i <= len; i++) {
    for (int j = (i + 1); j <= len1; j++) {
      if (order[j] == order[i]) {order.remove(j)}        
        }
        len1 = order.size()
    }
    return order
}
def Ok_Spisok (n) {
      order = Bez_X (Spisok (n))
   for (int k = 1; k <= n; k++) {
      order = Bez_X (order + k)
                    }
      return order
                  }
def Vivod () { print "order = "; println order}

while (1)  {
  Vvod (); if(n == "n") {break}
  Ok_Spisok (n)
  Vivod ()
           }


Добавлено (16 апреля 2017, 08:21)
---------------------------------------------
Код
def Ok_Spisok (n) {
      order = Bez_X (Spisok (n))
   for (int k = n; 1 <= k; k--) {
      order = Bez_X (order + k)
                    }
      return order
                  }


Добавлено (11 мая 2017, 22:00)
---------------------------------------------
Следующий код не работает как отдельная прога,
а только "в" IDE ...

Код
//Main.java
public class Main {
      public static void main(String args[]) {
        chislo m2 = new chislo();
        m2.run();
    }
}


Код
//chislo.groovy
import groovy.swing.SwingBuilder
import javax.swing.*
import java.awt.FlowLayout

public class ArabRim_2 {
  def Arabrim_2(Arab) { ArabRim m2 = new ArabRim(); def   Rim = m2.Arabrim(Arab); return Rim }}
  def Arab_Rim(Arab) {ArabRim_2 m3 = new ArabRim_2();  Rim = m3.Arabrim_2(Arab)}

public class RimArab_2 {
  def Rimarab_2(Rim) { RimArab m1 = new RimArab(); def   Arab = m1.Rimarab(Rim); return Arab }}
  def Rim_Arab(Rim) {RimArab_2 m2 = new RimArab_2();  Arab = m2.Rimarab_2(Rim)}

  swinger = new SwingBuilder()
  gui = swinger.frame(title:'Арабские << >> Римские', size: [510, 160]) {
    panel(layout: new FlowLayout()) {
    arabrim =  new JLabel('Это приложение переводит из Арабской системы счисления в Римскую и обратно!')
    arabrim.setBorder(BorderFactory.createEtchedBorder()); panel().add(arabrim)
    panel(layout: new FlowLayout()) {
      arab = new JLabel('Арабское  число:'); panel().add(arab)
        message1 = textField(columns: 12)
          button = swinger.button(text: 'Вычислить', actionPerformed: {
                   JOptionPane.showMessageDialog(gui, Arab_Rim(message1.text))})
          button = swinger.button(text: 'Очистить', actionPerformed: {
                   message1.selectAll(); message1.cut()})}
      rim  = new JLabel('Римское__число:'); panel().add(rim)
        message2 = textField(columns: 12)
          button = swinger.button(text: 'Вычислить', actionPerformed: {
                   JOptionPane.showMessageDialog(gui, Rim_Arab(message2.text))})
          button = swinger.button(text: 'Очистить', actionPerformed: {
                   message2.selectAll(); message2.cut()})}}
gui.show()


Код
//ArabRim.groovy
public class ArabRim {
    String Rim, A, r, r2, r1
    Integer i, x, iI, iV, iX, x1
    List L, rim = [ "I", "V", "X", "L", "C", "D", "M"]
  def Arabrim (Arab) {
    A = Arab.reverse(); i = 0; L = []
  for( v in A){ x = v as Integer; iI = i*2; iV = 2*i+1; iX = 2*i+2
    switch (x){
      case 4:    r  = rim[iI] + rim[iV]; break
      case 9:    r  = rim[iI] + rim[iX]; break
      case 1..3: r  = ""; for( int j = 0; j < x;  j++){ r  = r  + rim[iI]}; break
      case 5..8: r2 = ""; x1 = x - 5; for( int j = 0; j < x1; j++){ r2 = r2 + rim[iI]}; r1 = rim[iV]; r = r1 + r2; break
      case 0:    r  = ""; break }
           ++i; L = L + r }
    Rim = L.reverse().join(); return Rim } }


Код
//RimArab.groovy
public class RimArab {
    String  f; Integer Arab
    Map rimArab = ["I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000]
  def Rimarab (Rim) {
    f = Rim.replace("IV", "IIII").replace("IX", "VIIII").replace("XL", "XXXX").replace("XC", "LXXXX").replace("CD", "CCCC").replace("CM", "DCCCC")
    Arab = 0; for(i in f) { Arab = Arab + rimArab[i]}; return Arab } }


Код
class chislo {
    void run() {
        throw new UnsupportedOperationException("Not yet implemented");
    }
}


Добавлено (14 мая 2017, 21:26)
---------------------------------------------
"Случайность" списка "усилена" ...
Код
def Ok_Spisok (n) {
      order1 = Bez_X (Spisok (n))
   for (int k = n; 1 <= k; k--) {
      order1 = Bez_X (order1 + k)
                    }
   order = Bez_X (Spisok (n))
   for (i in order1) {
      order = Bez_X (order + i)
                    }
      return order
                  }


Добавлено (30 мая 2017, 13:56)
---------------------------------------------
При таком изменении кода вывод становится более "информативным":
Код
button = swinger.button(text: 'Вычислить', \
                        actionPerformed: { swinger.optionPane(message: \
                    "Арабское $message1.text  ==>  Римское ${Arab_Rim(message1.text)}"). \
                    createDialog(null, 'Арабские в Римские').show()})

Код
button = swinger.button(text: 'Вычислить', \
                        actionPerformed: { swinger.optionPane(message: \
                    "Римское $message2.text  ==>  Арабское ${Rim_Arab(message2.text)}"). \
                    createDialog(null, 'Римские в Арабские').show()})


litl

Сообщение отредактировал colencor - Вторник, 30 Мая 2017, 13:58
flatingoДата: Вторник, 30 Мая 2017, 17:33 | Сообщение # 2
участник
Сейчас нет на сайте
Поддержу тебя. Молодец что что-то делаешь и развиваешься. Это главное, мазохист ^_^


colencorДата: Четверг, 26 Апреля 2018, 13:45 | Сообщение # 3
был не раз
Сейчас нет на сайте
Дубль программы на Tcl'Tk:
Код
-----------------------------------------------------------------------------------------------------------------------------------
swinger = new SwingBuilder()
gui = swinger.frame(title:'Арабские << >> Римские', size: [760, 160]) {
  panel(layout: new FlowLayout()) {
  arabrim =  new JLabel('Это        приложение        переводит       из       арабской        системы        счисления       в       римскую        и           обратно!')
  arabrim.setBorder(BorderFactory.createEtchedBorder())
  panel().add(arabrim)
  panel(layout: new FlowLayout()) {
    arab1 = new JLabel('Арабское число:')
      panel().add(arab1)
        message11 = textField(columns: 12)
          button11 = swinger.button(text: 'Вычислить', actionPerformed: {message12.setText("${Arab_Rim(message11.text)}")})
            /*JRootPane rootPane = SwingUtilities.getRootPane(button11)
                      rootPane.setDefaultButton(button11)*/
          button12 = swinger.button(text: 'Очистить', actionPerformed: {
                     message11.selectAll(); message11.cut();message12.selectAll(); message12.cut()})
    arab2 = new JLabel('Римское   число:')
      panel().add(arab2)
        message12 = textField(columns: 12)}

    rim1  = new JLabel('Римское   число:')
      panel().add(rim1)
        message21 = textField(columns: 12)
          button21 = swinger.button(text: 'Вычислить', actionPerformed: {message22.setText("${Rim_Arab(message21.text)}")})
            /* JRootPane rootPane = SwingUtilities.getRootPane(button21)
                    rootPane.setDefaultButton(button21)*/
          button22 = swinger.button(text: 'Очистить', actionPerformed: {
                     message21.selectAll(); message21.cut();message22.selectAll(); message22.cut()})
    rim2  = new JLabel('Арабское число:')
      panel().add(rim2)
        message22 = textField(columns: 12)}}
gui.show()


Добавлено (09 августа 2017, 04:36)
---------------------------------------------
Другая версия проги:
Код
//chislo.groovy
import groovy.swing.SwingBuilder
import javax.swing.*
import java.awt.FlowLayout
import java.util.*
import java.awt.*
import java.awt.event.*

public class ArabRim_2 {
  def Arabrim_2(Arab) { ArabRim m2 = new ArabRim(); def   Rim = m2.Arabrim(Arab); return Rim }}
  def Arab_Rim(Arab) {ArabRim_2 m3 = new ArabRim_2();  Rim = m3.Arabrim_2(Arab)}

public class RimArab_2 {
  def Rimarab_2(Rim) { RimArab m1 = new RimArab(); def   Arab = m1.Rimarab(Rim); return Arab }}
  def Rim_Arab(Rim) {RimArab_2 m2 = new RimArab_2();  Arab = m2.Rimarab_2(Rim)}

swinger = new SwingBuilder()
gui = swinger.frame(title:'Арабские << >> Римские', size: [540, 160]) {
  panel(layout: new FlowLayout()) {
  arabrim =  new JLabel('Это  приложение  переводит  из  арабской  системы  счисления  в  римскую  и  обратно !')
  arabrim.setBorder(BorderFactory.createEtchedBorder())
  panel().add(arabrim)
  panel(layout: new FlowLayout()) {
    arab = new JLabel('Арабское число:')
      panel().add(arab)
        message1 = textField(columns: 12)
          button11 = swinger.button(text: 'Вычислить', actionPerformed: {message2.setText("${Arab_Rim(message1.text)}")})
            /*JRootPane rootPane = SwingUtilities.getRootPane(button11)
                      rootPane.setDefaultButton(button11)*/
          button12 = swinger.button(text: 'Очистить', actionPerformed: {message1.selectAll(); message1.cut()})
    }
  panel(layout: new FlowLayout()) {
    rim  = new JLabel('Римское   число:')
      panel().add(rim)
        message2 = textField(columns: 12)
          button21 = swinger.button(text: 'Вычислить', actionPerformed: {message1.setText("${Rim_Arab(message2.text)}")})
           /* JRootPane rootPane = SwingUtilities.getRootPane(button21)
                    rootPane.setDefaultButton(button21)*/
          button22 = swinger.button(text: 'Очистить', actionPerformed: {message2.selectAll(); message2.cut()})
    }}}
gui.show()


Добавлено (10 сентября 2017, 17:39)
---------------------------------------------
Совершенно случайный список:
Код
def Vvod () {print "Vvedite n = "; s = System.in.newReader().readLine(); n = s as Integer}
def Spisok (n) {
    order = [null]; Q = 0;
  while (Q < n) {
     J = 0
     t = Math.round(Math.random() * n)
    if (t != 0) {for (i in order) {if (t != i) {++J} }
      if (J == order.size()) {order = order + t - null}
      }     
      order1 = order; Q = order1.size()
   }       
   return order1
}
def Vivod () {print "order1 = "; println order1}
while (1)  {
  Vvod (); if(n == "n") {break}
  Spisok (n)
  Vivod ()
}


Добавлено (18 сентября 2017, 21:59)
---------------------------------------------
Код
//--------------------------------------------------------
if (J == order.size()) {order = order + t}
      }     
      order1 = order - null; Q = order1.size()
//--------------------------------------------------------


Добавлено (05 октября 2017, 22:08)
---------------------------------------------
Код
def Spisok (n) {
    order = [null]; Q = 0
  while (Q <= n) {
     J = 0; T = Math.round(Math.random() * n)
    if(T != 0) {for(I in order) {if(T != I) {++J} }
      if(J == order.size()) {order = order + T}
      }   
      Q = order.size()
   }       
   order1 = order - null
}


Добавлено (20 ноября 2017, 00:30)
---------------------------------------------
Код
def Spisok (n) {
    order = [0]; Q = 0
  while (Q <= n) {
     J = 0; T = Math.round(Math.random() * n)
       for(I in order) {if(T != I) {++J}
      if(J == order.size()) {order = order + T}       
      Q = order.size()
   }       
   order1 = order - 0
}


Добавлено (26 Апреля 2018, 03:17)
---------------------------------------------
Игрушка Puzzle:
Код
//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 (0 <= N && N <= 2) {N = 4} else {return 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 = 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 глючит, может кто нибудь подсказать решение deal

Добавлено (26 Апреля 2018, 13:45)
---------------------------------------------
Код
//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 + ""
   }
}


litl

Сообщение отредактировал colencor - Четверг, 26 Апреля 2018, 13:47
Форум игроделов » Программирование » Скриптовые языки программирования » Программирование на Groovy (Что лучше Swing или Tk ...)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2021 Рейтинг