summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPrzemyslaw <prymula76@outlook.com>2024-04-01 09:02:22 +0200
committerPrzemyslaw <prymula76@outlook.com>2024-04-01 09:02:22 +0200
commitd8afc9f5c2aa97a96ca326c0178a7fc9577afaaf (patch)
tree730acbaff01acd5ebed98a7c6ee831ccb731706e /src
Init
Diffstat (limited to 'src')
-rw-r--r--src/Actions.java128
-rw-r--r--src/ConfigFile.java96
-rw-r--r--src/KopiecKreta.java922
-rw-r--r--src/MyResource.java132
-rw-r--r--src/StartScreen.java30
-rw-r--r--src/wavResource.java71
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");
+ }
+ }
+
+}