view kopieckreta/src/KopiecKreta.java @ 22:b0c59d056e73

colorsmemory - typo
author Przemyslaw <prymula76@outlook.com>
date Sun, 31 Mar 2024 22:53:32 +0200
parents 2787f5e749ae
children 489244127359
line wrap: on
line source


/* 
    Kopiec Kreta - gra w odgadywanie słów
    ver. 0.4.0-beta
    autor: Przemysław R. Pietraszczyk
    data: 2020-09-30
    licencja: Public Domain

    słownik pochodzi z: sjp.pl

*/

package src;

import java.awt.*;  // Toolkit
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JButton;
//import javax.swing.JComponent;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.Box;
import javax.swing.JTextArea;
import javax.swing.JDialog;
import javax.swing.JTextField;
import javax.swing.JCheckBox;
import javax.swing.BorderFactory;
import javax.swing.WindowConstants;
import java.awt.event.*;
import java.awt.event.ActionListener;
//import java.awt.event.KeyListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.ItemEvent;
//import java.awt.event.KeyEvent;
import java.util.*; //Timer
//import java.awt.Robot;
import java.awt.Toolkit;

import java.beans.*; //property change stuff
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.InputStreamReader;
import java.io.IOException;

public class KopiecKreta extends JTextArea implements ActionListener {
    
    static JMenuBar menuBar;
    static JMenu menu, info, menu2;
    static JMenuItem menuItem, menuExit, menuInfo, menuPref;
    static JFrame frame;
    static boolean go=false;
    static Timer timer = new Timer();
    static String content;
    final static int NRINGS=11;
    final static int NCHAR=23; //32;
    static MyResource res = new MyResource();
    static wavResource wav;
    static Ring []truering = new Ring[NRINGS];
    static Ring []falsering = new Ring[NRINGS];
    static String [] mound = new String[20];  // tekst do wyswietlenia przez paint
    static JTextArea textArea;
    static JPanel startScreen;
    static int activeRing;  // indeks ringu na którym jest prowadzona aktualnie gra 
    static KopiecKreta kk;
    static Actions actions;
    final static String CONSTCH="1234"; 
    //final static Character[] charsInStock= {'a', 'ą', 'b', 'c', 'ć', 'd', 'e', 'ę', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'ł', 'm', 'n', 'ń', 'o', 'ó', 'p', 'r', 's', 'ś', 't', 'u', 'w', 'y', 'z', 'ż', 'ź'};
    final static Character[] charsInStock= {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'w', 'y', 'z'};
    static ArrayList<String> cheatSheet;
    static int pointsForTheRing;
    static int pointsFOrTheMund;
    static int totalScore, level;
    static boolean cheatActivate=false;
    static SoundDialog sounddialog;
    //static ResetDialog resetdialog;
    //static GetNameDialog getNameDialog;
    //Boolean runSoundDialog=Boolean.valueOf(false);
    static ConfigFile configfile;
    //static char pressKey=' ';
    
    public KopiecKreta() {
        //GridBagLayout gridbag = (GridBagLayout)getLayout();
        //GridBagConstraints c = new GridBagConstraints();

        menuBar = new JMenuBar();
        menu = new JMenu("Plik");
        menuBar.add(menu);
        menu2 = new JMenu("Opcje");
        menuBar.add(menu2);
        // przenosi INFO na prawa strone
        menuBar.add(Box.createHorizontalGlue());
        info = new JMenu("Info");
        // kierunek wyswietlania menu
        info.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        menuBar.add(info);
        menuItem = new JMenuItem("Nowa Gra", null);
        menuItem.setActionCommand("MenuItem1");
        menuItem.addActionListener(this);
        menuItem.setToolTipText("Rozpoczyna nową grę.");
        menu.add(menuItem);
        //menuItem = new JMenuItem("Sala sławy", null);
        //menuItem.setActionCommand("MenuItem11");
        //menuItem.addActionListener(this);
        //menuItem.setToolTipText("Wyświetla najlepsze wyniki");
        //menu.add(menuItem);
        menu.addSeparator();
        menuExit = new JMenuItem("Zakończ", null);
        menuExit.setActionCommand("MenuItem2");
        menuExit.addActionListener(this);
        menuExit.setToolTipText("Wyjście z programu");
        menu.add(menuExit);
        menuPref = new JMenuItem("Preferencje dzwięku",null);
        menuPref.setActionCommand("MenuItem4");
        menuPref.addActionListener(this);
        menuPref.setToolTipText("Preferencje dotyczące dzwięku");
        menu2.add(menuPref);
        /*
        menuPref = new JMenuItem("Resetowanie",null);
        menuPref.setActionCommand("MenuItem5");
        menuPref.addActionListener(this);
        menuPref.setToolTipText("Resetowanie najlepszych wyników");
        menu2.add(menuPref);
        */
        menuInfo = new JMenuItem("Pomoc", null);
        menuInfo.setActionCommand("MenuItem33");
        menuInfo.addActionListener(this);
        menuInfo.setToolTipText("Samouczek");
        info.add(menuInfo);
        menuInfo = new JMenuItem("O Programie", null);
        menuInfo.setActionCommand("MenuItem3");
        menuInfo.addActionListener(this);
        menuInfo.setToolTipText("Informacje o programie");
        info.add(menuInfo);
        
        //addKeyListener(this);
        //actions = new Actions();
        //addKeyListener(actions);
        //setFocusable(true);
        
        
    }
    
    
    public void actionPerformed(final ActionEvent e) {
    
        // Nowa gra
        if(e.getActionCommand().equals("MenuItem1")) {
            //getNameDialog.initUI(configfile, frame, getNameDialog.runGetNameDialog);
            //getNameDialog.runGetNameDialog=true;
            //if (getNameDialog.go){
            
            activeRing=10;
            totalScore=0;
            pointsForTheRing=0;
            pointsFOrTheMund=0;
            level=1;
            //frame.remove(startScreen);
            //frame.add(textArea);
            startScreen.setVisible(false);
            textArea.setVisible(true);
            create_secret_mound();
            create_real_mound(); // generuje prawdziwy kopiec
            cheatSheet = new ArrayList<String>();
            setCharCheatSheet ();
            go=true;
            setDisplayMound();
           // }
        }
        // Zakonczenie
        else if(e.getActionCommand().equals("MenuItem2")) {
            System.exit(0);
        }
        // O Programie
        else if(e.getActionCommand().equals("MenuItem3")) {
            String s1="  Port mojej gry pierwotnie napisanej dla Androida 2.3\n\n",
                   s2=" Program napisany na podstawie fragmentów kodów,\n",
                   s3="            wyszukanych w wyszukiwarce Google,\n",
                   s4="                                plus własna inwencja\n\n",
                   s5="  Autor zarzeka się że nigdy nie posiadał, ani nie posiada\n",
                   s6="                          żadnej ksiażki na temat Javy.\n",
                   s7="Oraz nie przeczytał ani jednej ksiązki na temat tego języka!\n\n",
                   s8="             Przemysław R. Pietraszczyk - jesień 2020\n",
                   s9="                               Licencja: Public Domain\n\n",
                   s10="         Stworzono w oparciu o OpenJDK 11 oraz ANT\n\n",
                   s11="   o/s: "+configfile.osName+"    ver. "+configfile.osVersion+"\n",
                   s12="   java ver: "+configfile.jvmVersion;

            JOptionPane.showMessageDialog(frame,
                    s1+s2+s3+s4+s5+s6+s7+s8+s9+s10+s11+s12,
                    "Kopiec Kreta 0.4.0-beta",
                    JOptionPane.PLAIN_MESSAGE);

        }
        else if(e.getActionCommand().equals("MenuItem33")) {
            String s1="Celem gry jest odgadnięcie wszyskich zakrytych pól.\n",
                  s2="Rozgrywkę rozpoczyna się od dolnego pierścienia.\n",
                  s3="Po odgadnięciu wszyskich liter w danym pierścieniu,\n",
                  s4="rozgrywka przenosi się na kolejny, wyższy ring.\n",
                  s5="Po odgadnięciu wszystkich liter, gracz pytany jest\n",
                  s6="o chęć gry na opcjonalnym następnym poziomie.\n\n",
                  s7="UWAGA ! Caps Lock - bez znaczenia !\n",
                  s8="\n";
            JOptionPane.showMessageDialog(frame,
                s1+s2+s3+s4+s5+s6+s7+s8,
                "Pomoc",
                JOptionPane.PLAIN_MESSAGE);
        }
        else if(e.getActionCommand().equals("MenuItem4")) {
            sounddialog.initUI(configfile, frame, sounddialog.runSoundDialog);
            sounddialog.runSoundDialog=true;
        }
        /*
        else if(e.getActionCommand().equals("MenuItem5")) {
            resetdialog.initUI(configfile);
        }
        */
        // sala sławy
        /*
        else if(e.getActionCommand().equals("MenuItem11")) {
            
        }
        */
        //System.out.println("ACTION PERFORMED " + e);
    }

    private static void createAndShowGUI() {
        
        frame=new JFrame("Kopiec Kreta");
        //Robot robot;
        // menuBar z konstruktora
        final int frameWidth = 250;
        final int frameHeight = 460;
        final int GNOMEPANEL=80;  // nieco niżej niż panel
        final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        //frame.setBounds((int) screenSize.getWidth() - frameWidth,
        //        (int) screenSize.getHeight() - frameHeight, frameWidth, frameHeight);
        frame.setBounds((int) screenSize.getWidth() - frameWidth,
                GNOMEPANEL, frameWidth, frameHeight);
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        sounddialog = new SoundDialog();
        //resetdialog = new ResetDialog();
        //getNameDialog = new GetNameDialog();
        textArea = new KopiecKreta(); 
        startScreen = new StartScreen();
        //textArea.setFont(new Font("Serif", Font.ITALIC, 18));
        textArea.setFont(new Font("Serif", Font.BOLD, 18));
        textArea.setLineWrap(true);  //nowe
        textArea.setWrapStyleWord(true);  // nowe
        textArea.setEditable(false);
        textArea.setBounds(5,5,240,430);
        frame.add(textArea);
        textArea.setVisible(false);
        frame.add(menuBar);
        frame.add(startScreen);
        startScreen.setFont(new Font("Serif", Font.BOLD, 18));
        startScreen.setBounds(5,5,240,430);
            
        frame.setJMenuBar(menuBar);  
        frame.setLayout(null);    
        frame.setSize(250,500);  // 400 x 400  
        frame.setVisible(true);
        actions = new Actions();
        frame.addKeyListener(actions);
        frame.setFocusable(true);
        textArea.setForeground(Color.BLACK);
        textArea.setBackground(Color.GREEN);
        // zapobiega utracie KeyEvent po wyjściu z SoundDialog i ResetDialog
        frame.addFocusListener(new FocusListener(){
            public void focusGained(FocusEvent e){
                //System.out.println("Focus GAINED:"+e);
            }
            public void focusLost(FocusEvent e){
                //System.out.println("Focus LOST:"+e);

                // FIX FOR GNOME/XWIN FOCUS BUG
                e.getComponent().requestFocus();
            }
        });
        try {
            configfile = new ConfigFile();
        }catch (IOException e){}
        configfile.load();
        
        /*
        try {
            // obiekt robot posiada metode do pobierania koloru pixela
            robot = new Robot();
            robot.mouseMove(screenSize.width-100, 200);
            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
        }catch (AWTException e) {} 
            frame.setAlwaysOnTop(true);
        */
        
        timer.schedule(new KeyTicks(), 0, 1000);  // lepiej 1000

    } 
    // dodaje punkty za pierścień i kazuje pozostałe litery ściągi
    static public void addScores(){
        int n;
        pointsForTheRing=0;
        if (!cheatActivate){
            for (int i=0;i< cheatSheet.size();i++){
                pointsForTheRing++;
            }
            pointsFOrTheMund+=pointsForTheRing;
        }
       //System.out.println("Naliczyłem "+pointsForTheRing+" punktów za ring");
    }
    // zapełnia tablice ze znakami do podpowiedzi
    static private void setCharCheatSheet (){
        
        for (int i=0; i<NCHAR; i++){
            // przepisujemy kolejno znaki do listy stringów
            char c= Character.toUpperCase(charsInStock[i]);
            cheatSheet.add(String.valueOf(c));
        }
    }
    static private void refreshCheatSheet(int n){
        String t="";
        cheatSheet.remove(n);
        for (int i=0;i< cheatSheet.size();i++){
            t+=cheatSheet.get(i);
        }
    }
    // szuka znaku w tablicy z podpowiedzia
    static private int searchCharChaetSheet(char c){
        String s="";
        String sc="";
        //String test="";
        for (int i=0;i< cheatSheet.size();i++){
            s=cheatSheet.get(i);
            sc = String.valueOf(c);
           // test+=sc;
            if (s.equals(sc)) {
                return i;
            }
        }
        //System.out.println("Nie odnalazłem znaku:"+sc);
        return -1;
    }
    static private void create_real_mound(){

        int n_char=3;
        String r="";
        
        for (int i=0; i<NRINGS; i++){
            truering[i] = new Ring(res.getDirectory(n_char));
            n_char++;
            for (int j=0;j<truering[i].getLength();j++){
                String _r=Character.toString(truering[i].getChar(j));
            
                r+=_r;
            }
            r+="\n";
        }
        
        System.out.println(r);

    }
    public static void create_secret_mound(){
        // kodujemy od 3 liter
        String s="???";
            
        for (int i=0; i<NRINGS; i++){
            falsering[i] = new Ring(s);
            s+="?";
        }
    }

    public static void main(final String[] args) {
            
            try {
                res.read();
                //wav = new wavResource();
                //wav.loadWav();
                //wav.initWav();
            }catch (Exception e) {
                e.printStackTrace();
            }
        javax.swing.SwingUtilities.invokeLater(new RunnableImplementation());
    }
    
    static private void setDisplayMound(){
        String sr = new String();
        String r="";
        textArea.setText(null);
        sr+="\n";
        // i=1 ponieważ pomijamy 3 literowy ring
        for (int i=1;i<NRINGS;i++){
            
            //String r="";
            for (int j=0;j<truering[i].getLength();j++){
                
                String _r=Character.toString(truering[i].getChar(j));
                r+=_r;
            }
            //System.out.println(r);
            r="";
            sr+="       ";
            if (i==activeRing){
                sr+=">";
            }
            else sr+="   ";
            for (int j=0;j<falsering[i].getLength();j++){
                String _s=Character.toString(falsering[i].getChar(j));
                sr +=_s;
            }
            if (i==activeRing){
                sr+="<";
            }
            mound[i]=sr;
            //System.out.println("mound["+i+"] "+mound[i]);
            
            textArea.append(mound[i]+"\n");
            sr="";
        }
        textArea.append("\n\n");
        for (int i=0; i<cheatSheet.size();i++){
            textArea.append(cheatSheet.get(i));
            textArea.append(" ");
        }
        
    }
    
    
    private static final class RunnableImplementation implements Runnable {
        public void run(){
            wav = new wavResource();
            createAndShowGUI();
	}
    }
    public static void unhideWords(){
        for (int j=0;j<truering[activeRing].getLength();j++){
            falsering[activeRing].setChar(truering[activeRing].getChar(j),j);
        }
    }

    static class KeyTicks extends TimerTask {
        int cw=0;
        static char pressKey='Q';
        static char lastKey='Q';
        static boolean firstRun=true;
        int n=0;
        /* FIXME - miga gdy odnaleziono litere ?
        */ 
        public void run() {
            ArrayList<Integer> indexExist = new ArrayList<Integer>();
            int returnIndex;
            
            
            pressKey=actions.getKey();
            
            if (go) {
                wav.stop();
                indexExist=checkInstance(pressKey);
                for (int exist: indexExist){
                    falsering[activeRing].setChar(pressKey,exist);
                    wav.PlayFlag=true;
                    if (lastKey != pressKey) {
                        if (sounddialog.soundAccept()){
                            System.out.println("Dzwięk akceptuje");
                            wav.play("/smooth-ok.wav");
                        }
                        else System.out.println("Dzwięk NIE akceptuje");
                    }
                }
                if (lastKey != pressKey && indexExist.isEmpty() && !firstRun) {
                //if (lastKey != pressKey && indexExist.isEmpty()) {

                    wav.PlayFlag=true;
                    if (sounddialog.soundAccept()){
                        System.out.println("Dzwięk akceptuje");
                        wav.play("/bass-bad.wav");
                    }
                    else System.out.println("Dzwięk NIE akceptuje");
                }
                lastKey=pressKey;
               
                returnIndex = searchCharChaetSheet(pressKey);
                if (returnIndex != -1){
                    refreshCheatSheet(returnIndex);
                }
                setDisplayMound();
                pressKey=' ';
                indexExist.clear();
                
                if (actions.getCheat().equals(CONSTCH)){
                    //pointsForTheRing=0;
                    actions.resetCheat();
                    cheatActivate=true;
                    unhideWords();
                }
                if (checkFullRing()) {
                    totalScore+=pointsForTheRing;
                    setCharCheatSheet ();
                    setDisplayMound();
                  
                }
               
               firstRun=false;
            }
        }
        static private boolean checkFullRing() {
            if (truering[activeRing].getString().equals(falsering[activeRing].getString())){
                //System.out.println("Czy zaliczony pierścień ? activeRing:"+activeRing);
                if (activeRing >1){
                    addScores();
                    cheatActivate=false;
                    // nowa ściąga
                    cheatSheet = new ArrayList<String>();
                    activeRing--;
                    return true;
                }
                else {
                   go=false;
                   
                   setDisplayMound();
                    if(activeRing==1){
                        
                        String s1="Ukończyłeś poziom "+level+" !\n",
                               s2="Na tym poziomie uzyskałeś "+pointsFOrTheMund+" punktów.\n",
                               s3="Póki co ugrałeś "+totalScore+" punktów !\n\n",
                               s4="Kontynujesz grę ?";
                        
                        // moze boolean ?
                        int dialogButton = JOptionPane.YES_NO_OPTION;
                        int answer = JOptionPane.showConfirmDialog (frame, s1+s2+s3+s4,"Komunikat", dialogButton);
                        
                        if(answer == JOptionPane.YES_OPTION) {
                            activeRing=10;
                            go=true;
                            level++;
                            create_secret_mound();
                            create_real_mound(); // generuje prawdziwy kopiec
                            setDisplayMound();
                            pointsFOrTheMund=0;
                        }
                        if(answer == JOptionPane.NO_OPTION) {
                            System.exit(0);
                            
                        }
                    }
                }
            }
            return false;
        }
        // sprawdza czy rządana litera znajduje sie w pierscieniu
        static private ArrayList<Integer> checkInstance(char key){
            ArrayList<Integer> indexExist = new ArrayList<Integer>();
        
            for (int i=0; i<truering[activeRing].getLength();i++){
                if (truering[activeRing].getChar(i) == key) {
                    indexExist.add(i);
                }
            }
            /*
            if (indexExist.size()!=0) {
                changeView=true;
            }
*/
            return indexExist;
        }
    }
    static class Ring {
        char c[];
        int l=0; // dlugosc
        public Ring(String s){
            //System.out.println("Z Ring constructor: "+s+" dlugosc: "+s.length());
            c = new char[s.length()+2];
            c =s.toCharArray();
            l=s.length();
        }
        public char getChar(int poz){
            return (char) c[poz];
        }
        public void setChar(char _c,int p){
            c[p]=_c;
        }
        public int getLength(){
            return l;
        }
        public String getString(){
            String sr = new String();
            for (int j=0;j<l;j++){
                String _s=Character.toString(c[j]);
                sr +=_s;
            }
            return sr;
        }
    }
}
class SoundDialog implements ItemListener, ActionListener{
    JCheckBox chkBox1;
    JFrame frame;
    boolean sound = true;
    ConfigFile config;
    public Boolean runSoundDialog=false;
    
    protected void initUI(ConfigFile cf, JFrame f, Boolean run) {
        if (!run) {
            frame = new JFrame("Zapytanko");
            frame.getContentPane().setSize(new Dimension(300,200)); // nie działa
            frame.getContentPane().setLayout(new GridBagLayout());
            frame.setAlwaysOnTop(true);
            GridBagConstraints c = new GridBagConstraints();
            // nadpisanie metody zamykania okna
            frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
            frame.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent ev) {
                    runSoundDialog=false;
                    frame.dispose();
                }
                // zapobiega minimalizacji okna dialogowego
                public void windowIconified(WindowEvent we) {
                    frame.setState(JFrame.NORMAL);
                    //JOptionPane.showMessageDialog(frame, "Cant Minimize");
                }
            });
            JLabel label = new JLabel(" ");
            JButton button = new JButton("Zatwierdź");
            chkBox1= new JCheckBox("Odtwarzaj dźwięk");
            config=cf;
            sound = cf.load();
            System.out.println("Dzwiek: "+sound);
            chkBox1.setSelected(sound);
            c.fill = GridBagConstraints.HORIZONTAL;
            c.ipady = 0;
            c.weighty = 1.0;
            c.gridwidth = 3;
            c.gridx = 0;
            c.gridy = 0;
            frame.getContentPane().add(chkBox1,c);
        
            c.fill = GridBagConstraints.HORIZONTAL;
            c.ipady = 0;
            c.weighty = 1.0;
            c.gridwidth = 3;
            c.gridx = 0;
            c.gridy = 1;
            frame.getContentPane().add(label,c);
        
            c.fill = GridBagConstraints.HORIZONTAL;
            c.ipady = 0;
            c.weighty = 1.0;
            c.anchor = GridBagConstraints.PAGE_END; //bottom of space
            c.gridwidth = 3;
            c.gridx = 0;
            c.gridy = 2;
            frame.getContentPane().add(button,c);
        
            chkBox1.addItemListener(this);
            button.addActionListener(this);
            if (cf.osName.equals("Linux")) frame.setUndecorated(true);
            chkBox1.setBorder(BorderFactory.createMatteBorder(20, 20, 20, 20, Color.RED)); //  w tym wypadku kolor nie ma znaczenia
            frame.getRootPane().setBorder(BorderFactory.createMatteBorder(10, 10, 10, 10, Color.RED));
            frame.pack();
            // pojawi się nad oknem rodzica
            frame.setLocationRelativeTo(f);
            frame.setResizable(false);
            frame.setVisible(true);
        }
    }
    public void itemStateChanged(ItemEvent e) {

        Object source = e.getItemSelectable();
 
        if (source == chkBox1) {
            //System.out.println("Zaznaczono dzwiek");
            sound = true;
        }
        if (e.getStateChange() == ItemEvent.DESELECTED) {
            //System.out.println("Odznaczono dzwiek");
            sound = false;

        }
        
    }
    public void actionPerformed(ActionEvent e) {
        frame.setVisible(false);
        config.save(sound);
        runSoundDialog=false;
        //System.out.println("Zapisuje dzwięk: "+sound);
        
    }
    public boolean soundAccept(){
        return sound;
    }
}
/*
class ResetDialog implements ItemListener, ActionListener{
    JCheckBox chkBox1;
    JFrame frame;
    boolean reset = false;
    protected void initUI(ConfigFile cf) {
    
        frame = new JFrame("Zapytanko");
        
        JPanel mainPanel;
        JButton button;
        frame.getContentPane().setLayout(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();
        button = new JButton("Zatwierdź");
        //chkBox1= new JCheckBox("Odtwarzaj dźwięk");
        chkBox1= new JCheckBox("Zresetuj najlepsze wyniki");
        
        chkBox1.setSelected(reset);
        c.fill = GridBagConstraints.HORIZONTAL;
        c.ipady = 0;
        c.weighty = 1.0;
        //c.anchor = GridBagConstraints.PAGE_END; //bottom of space
        c.gridwidth = 3;
        c.gridx = 0;
        c.gridy = 0;
        frame.getContentPane().add(chkBox1,c);
        
        
        
        c.fill = GridBagConstraints.HORIZONTAL;
        c.ipady = 0;
        c.weighty = 1.0;
        c.anchor = GridBagConstraints.PAGE_END; //bottom of space
        c.gridwidth = 3;
        c.gridx = 0;
        c.gridy = 2;
        frame.getContentPane().add(button,c);
        
        
        
        chkBox1.addItemListener(this);
        button.addActionListener(this);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setResizable(false);
        frame.setVisible(true);
    }
    public void itemStateChanged(ItemEvent e) {
        //t index = 0;
        //ar c = '-';
        Object source = e.getItemSelectable();
 
        if (source == chkBox1) {
            //dex = 0;
            System.out.println("Zaznaczono dzwiek");
            reset = true;
        }
        if (e.getStateChange() == ItemEvent.DESELECTED) {
            System.out.println("Odznaczono dzwiek");
            reset = false;

        }
        
    }
    public void actionPerformed(ActionEvent e) {
        frame.setVisible(false);
        System.out.println("jestem action");
    }
    public boolean resetAccept(){
        return reset;
    }
}
*/
/*
class GetNameDialog implements ActionListener, KeyListener {
    JTextField text;
    JFrame frame;
    public String namePlayer="";
    public boolean go;
    ConfigFile config;
    public Boolean runGetNameDialog=false;
    
    protected void initUI(ConfigFile cf, JFrame f, Boolean run) {
        if (!run) {
            frame = new JFrame("Zapytanko");
            frame.getContentPane().setSize(new Dimension(300,200)); // nie działa
            frame.getContentPane().setLayout(new GridBagLayout());
            frame.setAlwaysOnTop(true);
            GridBagConstraints c = new GridBagConstraints();
            // nadpisanie metody zamykania okna
            frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
            frame.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent ev) {
                    runGetNameDialog=false;
                    frame.dispose();
                }
            });
            JLabel label1 = new JLabel(" ");
            JLabel label2 = new JLabel("Najperw się przedstaw:");
            JButton button = new JButton("Zatwierdź");
            button.setActionCommand("Button");

            text = new JTextField();
            //text.addActionListener(this);
            //text.setActionCommand("Text");

            text.addKeyListener(this);
            text.setFocusable(true);
            text.requestFocus();
            
            c.fill = GridBagConstraints.HORIZONTAL;
            c.ipady = 0;
            c.weighty = 1.0;
            c.gridwidth = 3;
            c.gridx = 0;
            c.gridy = 0;
            frame.getContentPane().add(label2,c);
        
            c.fill = GridBagConstraints.HORIZONTAL;
            c.ipady = 0;
            c.weighty = 1.0;
            c.gridwidth = 3;
            c.gridx = 0;
            c.gridy = 1;
            frame.getContentPane().add(text,c);
        
            c.fill = GridBagConstraints.HORIZONTAL;
            c.ipady = 0;
            c.weighty = 1.0;
            c.gridwidth = 3;
            c.gridx = 0;
            c.gridy = 2;
            frame.getContentPane().add(label1,c);
            
            c.fill = GridBagConstraints.HORIZONTAL;
            c.ipady = 0;
            c.weighty = 1.0;
            c.anchor = GridBagConstraints.PAGE_END; //bottom of space
            c.gridwidth = 3;
            c.gridx = 0;
            c.gridy = 3;
            frame.getContentPane().add(button,c);
            text.setEditable(true);
            if (namePlayer.length()!=0){
                text.setText(namePlayer);
                text.selectAll();
            }
            button.addActionListener(this);
            if (cf.osName.equals("Linux")) frame.setUndecorated(true);
            frame.getRootPane().setBorder(BorderFactory.createMatteBorder(10, 10, 10, 10, Color.RED));
            frame.pack();
            frame.setLocationRelativeTo(f);
            frame.setResizable(false);
            frame.setVisible(true);
        }
    }
    
    public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("Button")) {

            frame.setVisible(false);
            namePlayer=text.getText();
            runGetNameDialog=false;
            if (namePlayer.length()!=0){
                go=true;
            }
        }
        else if(e.getActionCommand().equals("Text")) {
            
            String t= text.getText();
            text.setText(t);
            text.selectAll();
            
        }
    }   
    
    @Override
    public void keyTyped(KeyEvent e) {
    }

    @Override
    public void keyReleased(KeyEvent event) {
    }

    @Override
    public void keyPressed(KeyEvent event) {
        if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('a')) {
            System.out.println("OK");
        }
        System.out.println("GETNAME");
        String t= text.getText();
        text.setText(t);
        text.selectAll();
    }
}

    /*
    private void readConfig() {
        
    
        try { 
            InputStream is = this.getClass().getResourceAsStream("/config");
            BufferedReader br=new BufferedReader(new InputStreamReader(is, "utf-8"));
            
                lineConfig = br.readLine();
        } catch (Exception e){
            e.printStackTrace();
        }
    }
    */
    /*
    private void writeConfig() {
        
    
        try { 
            OutputStream is = this.getClass().getResourceAsStream("/config");
            BufferedReader br=new BufferedReader(new InputStreamReader(is, "utf-8"));
            
                lineConfig = br.readLine();
        } catch (Exception e){
            e.printStackTrace();
        }
    }
    */
//}