Mercurial > hg > pub > prymula > com
diff anielskiepuzzle/src/trefle/Trefle.java @ 0:2787f5e749ae
INIT
author | prymula <prymula76@outlook.com> |
---|---|
date | Thu, 21 Sep 2023 22:33:57 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/anielskiepuzzle/src/trefle/Trefle.java Thu Sep 21 22:33:57 2023 +0200 @@ -0,0 +1,750 @@ +/* + Trefle - ukladanka z puzzli + Przemyslaw R. Pieraszczyk + 20-01-2021 + licencja - GPL + powered by ATOM +*/ + + +package trefle; + +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.MouseListener; +import java.awt.event.MouseEvent; + +//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; +import java.io.*; + +import java.awt.image.BufferedImage; +import java.awt.image.*; +import javax.imageio.ImageIO; +import javax.imageio.*; + + +public class Trefle extends JPanel implements ActionListener { + + static JMenuBar menuBar; + static JMenu menu, info, menu2, nowplay; + static JMenuItem menuItem, menuExit, menuInfo, menuPref; + static JFrame frame; + //static boolean go=false; + //static JPanel screen; + static Trefle trefle; + static Timer timer = new Timer(); + + //static Actions actions; + //static Mata mata; + + private Graphics bg; + private Image bufor; + static private int x; + static private int y; + //private Mata mata; + + //private Puste puste; + //static boolean zaczynamy; + static int nmove; + BufferedImage imageNow; + static Mouse mouse; + static MouseMotion mouseMotion; + //Image img; + //Image cell[]=new Image[6*4]; + static CellPicture origPicture[][] = new CellPicture[6][4]; + static CellPicture cellPicture[][] = new CellPicture[6][4]; + static CellPicture wallPaper[][] = new CellPicture[6][4]; + //static CellWallPaper wallPaper[][] = new CellWallPaper[6][4]; + static CellPicture dragAndDrop; + BufferedImage wallPaperImage=null; + BufferedImage borderImage=null; + BufferedImage startScreen=null; + boolean startscreen=true; + static boolean go=false; + static int getBorderX; + static int getBorderY; + + static int iw,ih,tw,th; + static int move; + + +public Trefle (){ + + menuBar = new JMenuBar(); + menu = new JMenu("Plik"); + menuBar.add(menu); + //menu2 = new JMenu("Options"); + //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); + + nowplay = new JMenu("Nowa Gra"); + nowplay.setToolTipText("Rozpoczyna nowa gre."); + menu.add(nowplay); + + menuItem = new JMenuItem("Anielica", null); + menuItem.setActionCommand("NewGame1"); + menuItem.addActionListener(this); + menuItem.setToolTipText("Piekna Anielica"); + + nowplay.add(menuItem); + + menuItem = new JMenuItem("Zielony", null); + menuItem.setActionCommand("NewGame2"); + menuItem.addActionListener(this); + menuItem.setToolTipText("Zielony Archaniol"); + + nowplay.add(menuItem); + + menuItem = new JMenuItem("Niebieski", null); + menuItem.setActionCommand("NewGame3"); + menuItem.addActionListener(this); + menuItem.setToolTipText("Niebieski Archaniol"); + + nowplay.add(menuItem); + + menuItem = new JMenuItem("Na Linie", null); + menuItem.setActionCommand("NewGame4"); + menuItem.addActionListener(this); + menuItem.setToolTipText("Aniol na linie"); + + nowplay.add(menuItem); + + //menuItem = new JMenuItem("Pojedynczy", null); + //menuItem.setActionCommand("NewGame0"); + //menuItem.addActionListener(this); + //menuItem.setToolTipText("Wlasciwie nic nie miesza"); + + //nowplay.add(menuItem); + + //to nie + //menu.add(menuItem); + + menu.addSeparator(); + menuExit = new JMenuItem("Wyjscie", null); + menuExit.setActionCommand("EndGame"); + menuExit.addActionListener(this); + menuExit.setToolTipText("Wyjscie z programu"); + menu.add(menuExit); + + menuInfo = new JMenuItem("Pomoc", null); + menuInfo.setActionCommand("Help"); + menuInfo.addActionListener(this); + menuInfo.setToolTipText("HOWTO"); + info.add(menuInfo); + menuInfo = new JMenuItem("O Programie", null); + menuInfo.setActionCommand("About"); + menuInfo.addActionListener(this); + menuInfo.setToolTipText("Informacje o programie"); + info.add(menuInfo); + + LoadWallPaper(); + LoadBorder(); + LoadStartScreen(); + +} + public void actionPerformed(final ActionEvent e) { + + // Nowa gra + if(e.getActionCommand().equals("NewGame1")) { + + imageNow = LoadPicture("/aniol.JPG"); + CropImage(); + MixImage(); + ZerosWallPaper(); + dragAndDrop =null; //= new CellPicture(0,0,0,0,null,0); // inicjujemy wydmuszke z image=null + go=true; + startscreen=false; + this.repaint(); + //nmove=0; + + move=0; + //mata.setMixedFields(0); + System.out.println("ZACZNAMY"); + //screen.setVisible(true); + //nPuzzle.repaint(); + } + else if(e.getActionCommand().equals("NewGame2")) { + + imageNow = LoadPicture("/zielony_archaniol.jpg"); + CropImage(); + MixImage(); + ZerosWallPaper(); + dragAndDrop = null; //new CellPicture(0,0,0,0,null,0); // inicjujemy wydmuszke z image=null + go=true; + startscreen=false; + this.repaint(); + move=0; + System.out.println("ZACZNAMY"); + //screen.setVisible(true); + //nPuzzle.repaint(); + } + else if(e.getActionCommand().equals("NewGame3")) { + + imageNow = LoadPicture("/niebieski_archaniol.jpg"); + CropImage(); + MixImage(); + ZerosWallPaper(); + dragAndDrop = null; //new CellPicture(0,0,0,0,null,0); // inicjujemy wydmuszke z image=null + go=true; + startscreen=false; + this.repaint(); + move=0; + System.out.println("ZACZNAMY"); + //screen.setVisible(true); + //nPuzzle.repaint(); + } + else if(e.getActionCommand().equals("NewGame4")) { + + imageNow = LoadPicture("/nalinie.jpg"); + CropImage(); + MixImage(); + ZerosWallPaper(); + dragAndDrop = null; //new CellPicture(0,0,0,0,null,0); // inicjujemy wydmuszke z image=null + go=true; + startscreen=false; + this.repaint(); + move=0; + System.out.println("ZACZNAMY"); + //screen.setVisible(true); + //nPuzzle.repaint(); + } + // Zakonczenie + else if(e.getActionCommand().equals("EndGame")) { + System.exit(0); + } + else if(e.getActionCommand().equals("About")) { + String + s2=" Program napisany na podstawie fragmentow kodow,\n", + s3=" wyszukanych w wyszukiwarce Google,\n", + s4=" plus wlasna inwencja\n\n", + s5=" Przemyslaw R. Pietraszczyk - styczen 2021\n", + s6=" Licencja: GPL\n\n", + s7=" Stworzono w oparciu o OpenJDK 11 oraz ANT\n\n", + s8=" o/s: "+System.getProperty("os.name")+" ver: "+System.getProperty("os.version")+"\n", + s9=" java ver: "+System.getProperty("java.vm.version")+"\n"; + + JOptionPane.showMessageDialog(frame, + s2+s3+s4+s5+s6+s7+s8+s9, + "Anielskie Puzzle - 0.2-1", + JOptionPane.PLAIN_MESSAGE); + + } + else if(e.getActionCommand().equals("Help")) { + String s1="Ukladanka polegajaca na metodzie przeciagnij i upusc elementow z prawej strony na lewa.\n Dokladniej mowiac nalezy kliknac i przytrzymac lewy klawisz myszki na elemencie\n z prawej strony a nastepnie nie puszczajac przycisku,\n przesunac obrazek nad lewa kratownice, umieszczajac element w wybranym punkcie,\n poprzez puszczenie lewego przycisku myszki.\n Po prawidlowym ulozeniu wszystkich obrazkow w jeden duzy obraz,\n aplikacja wyswietli okienko z iloscia wykonanych posuniec.\n", + s2="Dozwolone jest rowniez przenoszenie elementow z lewej na prawa strone,\n jak i w zasiegu jednej kratownicy.", + s3="\n"; + JOptionPane.showMessageDialog(frame, + s1+s2+s3, + "Pomoc", + JOptionPane.PLAIN_MESSAGE); + } + } + private static void createAndShowGUI() { + + frame=new JFrame("Anielskie Puzzle"); + //mata = new Mata(); + //mata.setUnmixedFields(); + // menuBar z konstruktora + final int frameWidth = 1200; //1300; + final int frameHeight = 680; + 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); + + trefle= new Trefle(); + //screen = new PuzzleCanvas(true, mata); + frame.add(trefle); + //trefle.setPreferredSize(new Dimension(1200, 640)); + trefle.setBounds(5,5, 1170,640); // 1200, 640 + //frame.add(screen); + //nPuzzle.setVisible(true); + frame.add(menuBar); + + frame.setJMenuBar(menuBar); + frame.setLayout(null); + //frame.setSize(250,400); // 400 x 400 + frame.setVisible(true); + mouse = new Mouse(); + mouseMotion = new MouseMotion(); + mouse.setCanvas(trefle); + frame.addMouseListener(mouse); + frame.addMouseMotionListener(mouseMotion); + //addMouseListener(mouse); + //frame.addKeyListener(actions); + frame.setFocusable(true); + + // 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(); + } + }); + */ + //dragAndDrop = new CellPicture(0,0,0,0,null,0); // inicjujemy wydmuszke z image=null + timer.schedule(new KeyTicks(), 0, 1000); // lepiej 1000 + //zaczynamy=true; + } + protected void paintComponent(Graphics g){ + super.paintComponent(g); + + //int i, j; + int fontSize = 60; + + //y=60; + + //System.out.println("MATA: "+mata); + //if (mata != null) { + + g.setFont(new Font("Serif", Font.PLAIN, fontSize)); + //g.setForeground(Color.BLACK); + g.setColor(Color.BLACK); + //g.drawImage(imageNow, 0,0,this); + if (startscreen){ + g.drawImage(startScreen, 130+getInsets().left, 40+getInsets().top, null); // 160 + getInsets().left + } + if (go){ + for (int y=0;y<6;y++){ + for (int x=0; x<4;x++){ + //int i = y*4+x; + // jesli na tapecie nie ma obrazka wyswietla szachownice + if (wallPaper[y][x] == null) + g.drawImage(wallPaperImage, x*wallPaperImage.getWidth(null)+getInsets().left, y*wallPaperImage.getHeight(null)+getInsets().top, null); + else + g.drawImage(wallPaper[y][x].image, x*wallPaper[y][x].w+getInsets().left, y*wallPaper[y][x].h+getInsets().top, null); +// wallPaper[y][x]=new CellWallPaper(wallPaperImage.getWidth(null)*x, wallPaperImage.getHeight(null)*y,wallPaperImage.getWidth(null), wallPaperImage.getHeight(null), wallPaperImage, i); + + } + } + + + //if (go){ + for (int y=0;y<6;y++){ + for (int x=0; x<4;x++){ + int i = y*4+x; +// g.drawImage(cell[y*4+x], 650+x*tw+getInsets().left, y*th+getInsets().top, null); + if(cellPicture[y][x]==null){ + g.drawImage(wallPaperImage, 496+124+x*wallPaperImage.getWidth(null)+getInsets().left, y*wallPaperImage.getHeight(null)+getInsets().top, null); + System.out.println("ADRESS: "+cellPicture[y][x]); + } else + g.drawImage(cellPicture[y][x].image, 496+124+x*cellPicture[y][x].w+getInsets().left, y*cellPicture[y][x].h+getInsets().top, null); + //} else + // g.drawImage(wallPaper[y][x].image, 496+124+x*wallPaper[y][x].w+getInsets().left, y*wallPaper[y][x].h+getInsets().top, null); + + } + } + if (dragAndDrop != null){ + if (dragAndDrop.image != null){ + System.out.println("JUZ JESTEM!"); + System.out.println("X: "+dragAndDrop.x); + System.out.println("Y: "+dragAndDrop.y); + + g.drawImage(dragAndDrop.image, dragAndDrop.x, dragAndDrop.y, null); + + } + } + if (getBorderX !=0 | getBorderY != 0){ + //System.out.println("RRYSUJE BORDER"); + g.drawImage(borderImage, getBorderX*tw+getInsets().left, getBorderY*th+getInsets().top, null); + + + } + } + + } + private void LoadBorder(){ + + try { + borderImage = ImageIO.read(getClass().getResourceAsStream("/border.png")); // "/nazwa_pliku" + } catch (IOException ioe) { + ioe.printStackTrace(); + } + + } + private BufferedImage LoadPicture(String name){ + BufferedImage image=null; + + try { + image = ImageIO.read(getClass().getResourceAsStream(name)); // "/nazwa_pliku" + } catch (IOException ioe) { + ioe.printStackTrace(); + } + iw=image.getWidth(null); + ih=image.getHeight(null); + tw=iw/4; + th=ih/6; + + return image; + } + private void LoadWallPaper() { + + try { + wallPaperImage = ImageIO.read(getClass().getResourceAsStream("/wallpaper.jpg")); // "/nazwa_pliku" + } catch (IOException ioe) { + ioe.printStackTrace(); + } + /* + for (int y=0;y<6;y++){ + for (int x=0; x<4;x++){ + int i = y*4+x; + wallPaper[y][x]=null; +// wallPaper[y][x]=new CellWallPaper(wallPaperImage.getWidth(null)*x, wallPaperImage.getHeight(null)*y,wallPaperImage.getWidth(null), wallPaperImage.getHeight(null), wallPaperImage, i); + + } + } + */ + } + private void LoadStartScreen() { + + try { + startScreen = ImageIO.read(getClass().getResourceAsStream("/start.jpg")); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + } + + private void ZerosWallPaper() { + for (int y=0;y<6;y++){ + for (int x=0; x<4;x++){ + int i = y*4+x; + wallPaper[y][x]=null; +// wallPaper[y][x]=new CellWallPaper(wallPaperImage.getWidth(null)*x, wallPaperImage.getHeight(null)*y,wallPaperImage.getWidth(null), wallPaperImage.getHeight(null), wallPaperImage, i); + + } + } + + } + + private void CropImage (){ + + CropImageFilter f; + FilteredImageSource fis; + + for (int y=0;y<6;y++){ + for (int x=0; x<4;x++){ + f=new CropImageFilter(tw*x, th*y, tw,th); + fis=new FilteredImageSource(imageNow.getSource(), f); + int i = y*4+x; + //cell[i]=createImage(fis); + cellPicture[y][x]=new CellPicture(tw*x, th*y, tw, th, createImage(fis), i); + origPicture[y][x]=new CellPicture(tw*x, th*y, tw, th, createImage(fis), i); + + mouse.set(tw,th); + } + } + } + private void MixImage(){ + + for (int i=0; i<48; i++){ + //int si = (int) (Math.random()*24); + int sy = (int) (Math.random()*6); + int sx = (int) (Math.random()*4); + + //int di = (int) (Math.random()*24); + int dy = (int) (Math.random()*6); + int dx = (int) (Math.random()*4); + + //Image tmp = cell[si]; + //cell[si]=cell[di]; + //cell[di]=tmp; + + CellPicture tmp_c = cellPicture[sy][sx]; + cellPicture[sy][sx]=cellPicture[dy][dx]; + cellPicture[dy][dx]=tmp_c; + + //tmp_c = origPicture[sy][sx]; + //origPicture[sy][sx]=origPicture[dy][dx]; + //origPicture[dy][dx]=tmp_c; + + } + } + + + public static void main(final String[] args) { + + javax.swing.SwingUtilities.invokeLater(new RunnableImplementation()); + } + private static final class RunnableImplementation implements Runnable { + public void run(){ + createAndShowGUI(); + } + } + + + static private class CellPicture { + public int x, y, w, h, n; + public Image image; + //public boolean view; + public CellPicture(int x, int y, int w, int h, Image img, int n){ + this.x=x; + this.y=y; + this.w=w; + this.h=h; + this.n=n; // numer porzadkowy + this.image=img; // biezacy obrazek + // this.view=true; + } + public void set(int _x, int _y){ + this.x=_x; + this.y=_y; + } + + } + /* + static private class CellWallPaper extends CellPicture { + public Image store; // kopia ukladanki + + public CellWallPaper(int x, int y, int w, int h, Image img, int n){ + + super(x,y,w,h,img,n); + store = null; + } + + } + */ + static class KeyTicks extends TimerTask { + //int cellGetIndex, cellPutIndex; // indeksy z obszaru do obszaru + Coordinate cellGetCoor, cellPutCoor; + Coordinate dragGetCoor=null; + //static CellPicture dragAndDrop; + boolean redraw = false; + int tmpx=0, tmpy=0; + boolean fromLeft=false, fromRight=false; + //int arr[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24}; + + public void run() { + + if (go){ + cellGetCoor=mouse.getCell(); + cellPutCoor=mouse.putCell(); + int gety=getBorderY=(cellGetCoor.y-(th/2))/th; // plus korekta y od belki (th/2) + int getx=getBorderX=cellGetCoor.x/tw; + int test = cellGetCoor.x/tw-5; + int puty=(cellPutCoor.y-(th/2))/th; + int putx=cellPutCoor.x/tw; + //int tmpx=0,tmpy=0; + //System.out.println("KLIKNIETO NA x:"+((cellGetCoor.x/tw))+" y:"+(cellGetCoor.y/th)-20)); + //System.out.println("KLIKNIETO NA x:"+(cellGetCoor.x/tw)+" y:"+gety+" test:"+test); + //trefle.repaint(); + System.out.println("cellPutCoor.y: "+cellPutCoor.y+" cellPutCoor.x: "+cellPutCoor.x); + System.out.println("PATYK"); + if (cellGetCoor.click && !redraw && cellGetCoor.y-(th/2)>44 && cellGetCoor.y<645 && cellGetCoor.x<1122){ + System.out.println("przerysowuje -1 x:"+cellGetCoor.x+" y:"+cellGetCoor.y); + + redraw=true; + //System.out.println("cellGetCoor:"+cellGetCoor+" gety:"+gety+" getx:"+getx+" wallPaper:"+wallPaper[gety][getx]); + // drag z lewej strony + if (getx<4 && cellGetCoor.x/tw<4 && cellGetCoor.y-(th/2)/th>=0 && wallPaper[gety][getx]!=null && wallPaper[gety][getx].image!=null){ + //if (wallPaper[gety][getx]!=null) + dragAndDrop=new CellPicture(cellGetCoor.x, cellGetCoor.y, tw, th, wallPaper[gety][getx].image, wallPaper[gety][getx].n); + //else + // dragAndDrop=null; + System.out.println("Jestem na lewo"); + tmpx=cellGetCoor.x/tw; + tmpy=(cellGetCoor.y-(th/2))/th; + fromLeft=true; + } + // drag z prawej strony + else if (cellGetCoor.x/tw>4 && cellGetCoor.y-(th/2)/th>=0 && cellPicture[gety][getx-5]!=null && cellPicture[gety][getx-5].image!=null){ + // bylo z origPicture + //dragAndDrop=new CellPicture(cellGetCoor.x, cellGetCoor.y, tw, th, cellPicture[gety][getx-5].image, cellPicture[gety][getx-5].n); + dragAndDrop=new CellPicture(cellGetCoor.x, cellGetCoor.y, tw, th, cellPicture[gety][getx-5].image, cellPicture[gety][getx-5].n); + System.out.println("Jestem naprawo"); + tmpx=cellGetCoor.x/tw-5; + tmpy=(cellGetCoor.y-(th/2))/th; + fromRight=true; + } + else { + System.out.println("Jestem ELSE"); + redraw=false; + //return; + } + //cellPicture[gety][getx-5].view=false; + + System.out.println("przerysowuje - 2 x:"+tmpx+" y:"+tmpy); + + + } + else if(!cellGetCoor.click && redraw) { + System.out.println("puszczono"); + redraw=false; + if (dragAndDrop.image!=null){ + if(dragGetCoor.x/tw<4){ + // drag z prawej na lewo + if (fromRight){ + if (wallPaper[(dragGetCoor.y-(th/2))/th][dragGetCoor.x/tw]==null) { + //wallPaper[(dragGetCoor.y-(th/2))/th][dragGetCoor.x/tw]=new CellPicture(dragAndDrop.image.getWidth(null)*x, dragAndDrop.image.getHeight(null)*y,dragAndDrop.image.getWidth(null), dragAndDrop.image.getHeight(null), dragAndDrop.image, dragAndDrop.n); + wallPaper[(dragGetCoor.y-(th/2))/th][dragGetCoor.x/tw]=new CellPicture(tw*x, th*y,tw, th, dragAndDrop.image, dragAndDrop.n); + System.out.println("Dokuje na lewo"); + + dragAndDrop.image=null; + //cellPicture[(cellGetCoor.y-(th/2)/th)][cellGetCoor.x/tw]=null; + System.out.println(" coor.y"+puty+" coor.x"+putx); + System.out.println(" tmpy"+tmpy+" tmpx"+tmpx); + + //cellPicture[puty][putx]=null; + cellPicture[tmpy][tmpx]=null; + fromRight=false; + } + else { + dragAndDrop.image=null; + } + move++; + } + // drag z lewej na lewo + else if (fromLeft){ + if (wallPaper[(dragGetCoor.y-(th/2))/th][dragGetCoor.x/tw]==null){ + //System.out.println("CELL:"+dragAndDrop.image); + + wallPaper[(dragGetCoor.y-(th/2))/th][dragGetCoor.x/tw]=new CellPicture(tw*x, th*y,tw, th, dragAndDrop.image, dragAndDrop.n); + System.out.println("Dokuje na lewo"); + + dragAndDrop.image=null; + //cellPicture[(cellGetCoor.y-(th/2)/th)][cellGetCoor.x/tw]=null; + System.out.println(" coor.y"+puty+" coor.x"+putx); + System.out.println(" tmpy"+tmpy+" tmpx"+tmpx); + + //cellPicture[puty][putx]=null; + wallPaper[tmpy][tmpx]=null; + fromLeft=false; + } + else { + dragAndDrop.image=null; + } + move++; + } + } + // drag spowrotem na prawo z lewj + else if (dragGetCoor.x/tw>4){ + if(fromLeft){ + if (cellPicture[(dragGetCoor.y-(th/2))/th][dragGetCoor.x/tw-5]==null){ + System.out.println("Dokuje z lewa na prawo"); + cellPicture[(dragGetCoor.y-(th/2))/th][dragGetCoor.x/tw-5]=new CellPicture(tw*x, th*y,tw, th, dragAndDrop.image, dragAndDrop.n); + dragAndDrop.image=null; + wallPaper[tmpy][tmpx]=null; + fromLeft=false; + } + else { + dragAndDrop.image=null; + } + } + else if(fromRight){ + if (cellPicture[(dragGetCoor.y-(th/2))/th][dragGetCoor.x/tw-5]==null){ + System.out.println("Dokuje z prawa na prawo"); + cellPicture[(dragGetCoor.y-(th/2))/th][dragGetCoor.x/tw-5]=new CellPicture(tw*x, th*y,tw, th, dragAndDrop.image, dragAndDrop.n); + dragAndDrop.image=null; + cellPicture[tmpy][tmpx]=null; + fromRight=false; + } + else { + dragAndDrop.image=null; + } + + } + } + else { + dragAndDrop.image=null; + fromLeft=false; + fromRight=false; + } + + + } + } + else { + System.out.println("POZA ZAKRESEM"); + } + + //System.out.println("DRAGANDDROP:"+dragAndDrop); + + dragGetCoor = mouseMotion.get(); + //if(dragGetCoor.x!=0 && dragGetCoor.y!=0){ + System.out.println("drag x: "+dragGetCoor.x+" drag y: "+dragGetCoor.y+" xputcoor:"+putx+" yputcoor:"+puty); + if (dragAndDrop!=null) + dragAndDrop.set(dragGetCoor.x, dragGetCoor.y); + //} + trefle.repaint(); + + if (arranged()){ + String s1="Ulozyles wszystkie puzzle !\n", + s2="Wykonales "+move+" ruchow.\n"; + JOptionPane.showMessageDialog(frame, + s1+s2, + "Podsumowanie", + JOptionPane.PLAIN_MESSAGE); + go=false; + } + System.out.println("PO ARRANGED"); + } + } + private boolean arranged(){ + int i=0, a=0; + for (int y=0;y<6;y++){ + for (int x=0;x<4;x++){ + if (wallPaper[y][x] != null){ + if (wallPaper[y][x].n==origPicture[y][x].n){ + a++; + } + } + i++; + } + } + System.out.println("A: "+a); + if(a==24) return true; + return false; + } + + } + +}