diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Actions.java | 128 | ||||
-rw-r--r-- | src/ConfigFile.java | 96 | ||||
-rw-r--r-- | src/KopiecKreta.java | 922 | ||||
-rw-r--r-- | src/MyResource.java | 132 | ||||
-rw-r--r-- | src/StartScreen.java | 30 | ||||
-rw-r--r-- | src/wavResource.java | 71 |
6 files changed, 1379 insertions, 0 deletions
diff --git a/src/Actions.java b/src/Actions.java new file mode 100644 index 0000000..57540ab --- /dev/null +++ b/src/Actions.java @@ -0,0 +1,128 @@ + +package src; + +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; + +class Actions implements KeyListener { + String cheat=""; + char pressKey =' '; + + public void Actions(){} + @Override + public void keyTyped(KeyEvent e) { + } + + @Override + public void keyReleased(KeyEvent event) { + } + + @Override + public void keyPressed(KeyEvent event) { + + if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('a')) { + isThere('a'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('w')) { + isThere('w'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('e')) { + isThere('e'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('r')) { + isThere('r'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('t')) { + isThere('t'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('y')) { + isThere('y'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('u')) { + isThere('u'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('i')) { + isThere('i'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('o')) { + isThere('o'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('p')) { + isThere('p'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('s')) { + isThere('s'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('d')) { + isThere('d'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('f')) { + isThere('f'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('g')) { + isThere('g'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('h')) { + isThere('h'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('j')) { + isThere('j'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('k')) { + isThere('k'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('l')) { + isThere('l'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('z')) { + isThere('z'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('c')) { + isThere('c'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('b')) { + isThere('b'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('n')) { + isThere('n'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('m')) { + isThere('m'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('1')) { + hungryCheat('1'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('2')) { + hungryCheat('2'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('3')) { + hungryCheat('3'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('4')) { + hungryCheat('4'); + } + else if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar(' ')) { + resetCheat(); + } + + } + public char getKey () { + return pressKey; + } + public String getCheat(){ + return cheat; + } + + private void isThere(char c){ + // Nie wiem czemu od razu nie przekazalem duzej litery... + pressKey=Character.toUpperCase(c); + resetCheat(); + } + private void hungryCheat(char c){ + String s =Character.toString(c); + cheat += s; + } + public void resetCheat(){ + cheat=""; + } +} diff --git a/src/ConfigFile.java b/src/ConfigFile.java new file mode 100644 index 0000000..b3c380d --- /dev/null +++ b/src/ConfigFile.java @@ -0,0 +1,96 @@ + +package src; + +/** + * + * @author przem + */ + +import java.io.FileWriter; +import java.io.File; +import java.io.IOException; +import java.io.FileNotFoundException; // Import this class to handle errors +import java.util.Scanner; +import java.util.*; + +public class ConfigFile { + public String userDir="", userHome="", osName="", osVersion="", jvmVersion=""; + String name = "/kopieckreta.txt"; + public ConfigFile() throws IOException{ + for (Map.Entry<?,?> e : System.getProperties().entrySet()) { + //System.out.println(String.format("%s = %s", e.getKey(), e.getValue())); + if (e.getKey().equals("user.dir")) { + userDir=String.format("%s", e.getValue()); + } + if (e.getKey().equals("user.home")) { + userHome=String.format("%s", e.getValue()); + + } + if (e.getKey().equals("os.name")) { + osName=String.format("%s", e.getValue()); + + } + if (e.getKey().equals("os.version")) { + osVersion=String.format("%s", e.getValue()); + + } + if (e.getKey().equals("java.vm.version")) { + jvmVersion=String.format("%s", e.getValue()); + + } + } + + + File file=new File (userHome+name); + if (file.createNewFile()){ + System.out.println("Plik zostal utworzony"); + try { + FileWriter myWriter = new FileWriter(userHome+name); + myWriter.write("1"); + myWriter.close(); + System.out.println("Successfully wrote to the file."); + } catch (IOException e) { + System.out.println("An error occurred."); + e.printStackTrace(); + } + } + else { + System.out.println("Plik istnieje"); + } + } + public void save(boolean b){ + String s=""; + try { + FileWriter myWriter = new FileWriter(userHome+name); + if (b) s="1"; + else s="0"; + myWriter.write(s); + myWriter.close(); + System.out.println("Successfully wrote to the file."); + } catch (IOException e) { + System.out.println("An error occurred."); + e.printStackTrace(); + } + } + public boolean load() { + String data = ""; + boolean r =false; + try { + File myObj = new File(userHome+name); + Scanner myReader = new Scanner(myObj); + while (myReader.hasNextLine()) { + data = myReader.nextLine(); + System.out.println(data); + } + myReader.close(); + } catch (FileNotFoundException e) { + System.out.println("An error occurred."); + e.printStackTrace(); + } + + if (data.equals("1")) r=true; + + return r; + } + +} diff --git a/src/KopiecKreta.java b/src/KopiecKreta.java new file mode 100644 index 0000000..45c2b7d --- /dev/null +++ b/src/KopiecKreta.java @@ -0,0 +1,922 @@ + +/* + Kopiec Kreta - gra w odgadywanie slow + ver. 0.4.0-beta + autor: Przemyslaw R. Pietraszczyk + data: 2020-09-30 + licencja: GPL v3 + + slownik 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 ktorym 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'}; + 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 nowa gre."); + menu.add(menuItem); + //menuItem = new JMenuItem("Sala slawy", null); + //menuItem.setActionCommand("MenuItem11"); + //menuItem.addActionListener(this); + //menuItem.setToolTipText("Wyswietla najlepsze wyniki"); + //menu.add(menuItem); + menu.addSeparator(); + menuExit = new JMenuItem("Zakoncz", null); + menuExit.setActionCommand("MenuItem2"); + menuExit.addActionListener(this); + menuExit.setToolTipText("Wyjscie z programu"); + menu.add(menuExit); + menuPref = new JMenuItem("Preferencje dzwieku",null); + menuPref.setActionCommand("MenuItem4"); + menuPref.addActionListener(this); + menuPref.setToolTipText("Preferencje dotyczace dzwieku"); + menu2.add(menuPref); + /* + menuPref = new JMenuItem("Resetowanie",null); + menuPref.setActionCommand("MenuItem5"); + menuPref.addActionListener(this); + menuPref.setToolTipText("Resetowanie najlepszych wynikow"); + 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 fragmentow kodow,\n", + s3=" wyszukanych w wyszukiwarce Google,\n", + s4=" plus wlasna inwencja\n\n", + s5=" Autor zarzeka sie ze nigdy nie posiadal, ani nie posiada\n", + s6=" zadnej ksiazki na temat Javy.\n", + s7="Oraz nie przeczytal ani jednej ksiazki na temat tego jezyka!\n\n", + s8=" Przemyslaw R. Pietraszczyk - jesien 2020\n", + s9=" Licencja: GPL v3\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.230924-0", + JOptionPane.PLAIN_MESSAGE); + + } + else if(e.getActionCommand().equals("MenuItem33")) { + String s1="Celem gry jest odgadniecie wszyskich zakrytych pol.\n", + s2="Rozgrywke rozpoczyna sie od dolnego pierscienia.\n", + s3="Po odgadnieciu wszyskich liter w danym pierscieniu,\n", + s4="rozgrywka przenosi sie na kolejny, wyzszy ring.\n", + s5="Po odgadnieciu wszystkich liter, gracz pytany jest\n", + s6="o chec gry na opcjonalnym nastepnym 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 slawy + /* + 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 nizej niz 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 wyjsciu 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 pierscien i kazuje pozostale litery sciagi + static public void addScores(){ + int n; + pointsForTheRing=0; + if (!cheatActivate){ + for (int i=0;i< cheatSheet.size();i++){ + pointsForTheRing++; + } + pointsFOrTheMund+=pointsForTheRing; + } + //System.out.println("Naliczylem "+pointsForTheRing+" punktow za ring"); + } + // zapelnia tablice ze znakami do podpowiedzi + static private void setCharCheatSheet (){ + + for (int i=0; i<NCHAR; i++){ + // przepisujemy kolejno znaki do listy stringow + 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 odnalazlem 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 poniewaz 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("Dzwiek akceptuje"); + wav.play("/smooth-ok.wav"); + } + else System.out.println("Dzwiek NIE akceptuje"); + } + } + if (lastKey != pressKey && indexExist.isEmpty() && !firstRun) { + //if (lastKey != pressKey && indexExist.isEmpty()) { + + wav.PlayFlag=true; + if (sounddialog.soundAccept()){ + //System.out.println("Dzwiek akceptuje"); + wav.play("/bass-bad.wav"); + } + else System.out.println("Dzwiek 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 pierscien ? activeRing:"+activeRing); + if (activeRing >1){ + addScores(); + cheatActivate=false; + // nowa sciaga + cheatSheet = new ArrayList<String>(); + activeRing--; + return true; + } + else { + go=false; + + setDisplayMound(); + if(activeRing==1){ + + String s1="Ukonczyles poziom "+level+" !\n", + s2="Na tym poziomie uzyskales "+pointsFOrTheMund+" punktow.\n", + s3="Poki co ugrales "+totalScore+" punktow !\n\n", + s4="Kontynujesz gre ?"; + + // 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 rzadana 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 dziala + 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("Zatwierdz"); + chkBox1= new JCheckBox("Odtwarzaj dzwiek"); + 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 sie 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 dzwiek: "+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("Zatwierdz"); + //chkBox1= new JCheckBox("Odtwarzaj dzwiek"); + 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 dziala + 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 sie przedstaw:"); + JButton button = new JButton("Zatwierdz"); + 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(); + } + } + */ +//} diff --git a/src/MyResource.java b/src/MyResource.java new file mode 100644 index 0000000..0ec1aac --- /dev/null +++ b/src/MyResource.java @@ -0,0 +1,132 @@ +/* + Nie mieszac z java.awt.* (!!!) +*/ +package src; + +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintStream; +import java.io.BufferedReader; +import java.io.InputStreamReader; + +import java.util.*; +import java.lang.*; + + +class MyResource { + final int MAX_WORDS=67656; + + public void MyResource() + { + } + private static final String absName = "/slownik.txt"; + // TODO - to jest mniej eleganckie; + static ArrayList<String> directory3 = new ArrayList<String>(); + static ArrayList<String> directory4 = new ArrayList<String>(); + static ArrayList<String> directory5 = new ArrayList<String>(); + static ArrayList<String> directory6 = new ArrayList<String>(); + static ArrayList<String> directory7 = new ArrayList<String>(); + static ArrayList<String> directory8 = new ArrayList<String>(); + static ArrayList<String> directory9 = new ArrayList<String>(); + static ArrayList<String> directory10 = new ArrayList<String>(); + static ArrayList<String> directory11 = new ArrayList<String>(); + static ArrayList<String> directory12 = new ArrayList<String>(); + static ArrayList<String> directory13 = new ArrayList<String>(); + static ArrayList<String> directory14 = new ArrayList<String>(); + //static int mem=0; + + public void read() throws Exception{ + String list; + + try { + InputStream is = this.getClass().getResourceAsStream(absName); + BufferedReader br=new BufferedReader(new InputStreamReader(is, "utf-8")); + for (int i=0; i<MAX_WORDS; i++){ + list = br.readLine(); + + if (list.length()==3){ + directory3.add(list); + } + else if (list.length()==4){ + directory4.add(list); + } + else if (list.length()==5){ + directory5.add(list); + } + else if (list.length()==6){ + directory6.add(list); + } + else if (list.length()==7){ + directory7.add(list); + } + else if (list.length()==8){ + directory8.add(list); + } + else if (list.length()==9){ + directory9.add(list); + } + else if (list.length()==10){ + directory10.add(list); + } + else if (list.length()==11){ + directory11.add(list); + } + else if (list.length()==12){ + directory12.add(list); + } + else if (list.length()==13){ + directory13.add(list); + } + else if (list.length()==14){ + directory14.add(list); + } + } + + } + catch (Exception e){ + e.printStackTrace(); + } + } + static public String getDirectory(int n_dir){ + Random generator = new Random(); + //mem++; + if (n_dir==3){ + return (directory3.get(generator.nextInt(directory3.size()))); + } + if (n_dir==4){ + return (directory4.get(generator.nextInt(directory4.size()))); + } + if (n_dir==5){ + return (directory5.get(generator.nextInt(directory5.size()))); + } + if (n_dir==6){ + return (directory6.get(generator.nextInt(directory6.size()))); + } + if (n_dir==7){ + return (directory7.get(generator.nextInt(directory7.size()))); + } + if (n_dir==8){ + return (directory8.get(generator.nextInt(directory8.size()))); + } + if (n_dir==9){ + return (directory9.get(generator.nextInt(directory9.size()))); + } + if (n_dir==10){ + return (directory10.get(generator.nextInt(directory10.size()))); + } + if (n_dir==11){ + return (directory11.get(generator.nextInt(directory11.size()))); + } + if (n_dir==12){ + return (directory12.get(generator.nextInt(directory12.size()))); + } + if (n_dir==13){ + return (directory13.get(generator.nextInt(directory13.size()))); + } + if (n_dir==14){ + return (directory14.get(generator.nextInt(directory14.size()))); + } + // Na sztuke + return ""; + } +} diff --git a/src/StartScreen.java b/src/StartScreen.java new file mode 100644 index 0000000..d0030c1 --- /dev/null +++ b/src/StartScreen.java @@ -0,0 +1,30 @@ + +package src; + +/** + * + * @author przem + */ +import java.awt.*; +import javax.swing.JPanel; +import java.awt.image.BufferedImage; +import java.io.IOException; +import javax.imageio.ImageIO; + +public class StartScreen extends JPanel{ + private BufferedImage image; + + public StartScreen() { + this.repaint(); + try { + image = ImageIO.read(getClass().getResourceAsStream("/startscreen.jpg")); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + } + protected void paintComponent(Graphics g){ + super.paintComponent(g); + + g.drawImage(image, 0,0,this); + } +} diff --git a/src/wavResource.java b/src/wavResource.java new file mode 100644 index 0000000..5db3e98 --- /dev/null +++ b/src/wavResource.java @@ -0,0 +1,71 @@ + +package src; + +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintStream; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.BufferedInputStream; +import java.io.FileInputStream; +import java.io.File; + +import java.util.*; +import java.lang.*; + +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.Clip; +import javax.sound.sampled.LineUnavailableException; + + +public class wavResource { + AudioInputStream ais; + Clip clip; + boolean running=false; + public boolean PlayFlag=false; + final int BUFFER_SIZE=128000; + + public void wavResource() + { + + } + public synchronized void play(final String filename){ + new Thread(new Runnable() { + public void run() { + try{ + InputStream is = getClass().getResourceAsStream(filename); + InputStream bIn = new BufferedInputStream(is); + ais = AudioSystem.getAudioInputStream(bIn); + + if (PlayFlag) { // to musi byc + clip = AudioSystem.getClip(); + clip.open(ais); + clip.start(); + ais.mark(BUFFER_SIZE); // po odkomentowaniu clip ustawiony na poczatek + ais.reset(); + PlayFlag=false; + } + } catch (Exception e) { + e.printStackTrace(); + } //catch (IOException e){ + + + // } + + } + }).start(); + } + public void stop(){ + if (clip != null) { + clip.stop(); + clip.drain(); + clip.close(); + PlayFlag=false; + //clip.flush(); + //clip.setFramePosition(0); + //System.out.println("Jestem w stopOk"); + } + } + +} |