/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package warcaby;
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
/**
*
* @author Kasiek
*/
class Okno extends JFrame implements ActionListener, MouseListener
{
Plansza plansza;
Ruchy ruchy;
Bicia bicia;
JButton bNowa;
JButton bZapisz;
JButton bWczytaj;
JButton bZakoncz;
//JButton bGraj;
JLabel lTekst;
Zegar zegar;
private URL clipFile;
public Okno(String Nazwa, int szer, int wys)
{
super(Nazwa);
setLayout(null);
plansza = new Plansza();
// plansza.rozpoczecie();
ruchy = new Ruchy();
bicia = new Bicia();
setSize(szer,wys);
setLocation(10,10);
setFont(new Font("Arial",0,16));
setResizable(false);
setBackground(new Color(220,220,220));
addWindowListener(new WindowAdapter()
{
public void windowClosing (WindowEvent e)
{
System.exit(0);
}
});
bNowa = new JButton("Nowa gra");
bNowa.setSize(110,25);
bNowa.setLocation(400,45);
bNowa.addActionListener(this);
add(bNowa);
bWczytaj = new JButton("Wczytaj stan");
bWczytaj.setSize(110,25);
bWczytaj.setLocation(400,115);
bWczytaj.addActionListener(this);
add(bWczytaj);
bZapisz = new JButton("Zapisz stan");
bZapisz.setSize(110,25);
bZapisz.setLocation(400,80);
bZapisz.addActionListener(this);
add(bZapisz);
bZakoncz = new JButton("Koniec");
bZakoncz.setSize(110,25);
bZakoncz.setLocation(400,150);
bZakoncz.addActionListener(this);
add(bZakoncz);
lTekst = new JLabel("Ruch:");
lTekst.setSize(40,50);
lTekst.setLocation(6,385);
add(lTekst);
zegar=new Zegar();
zegar.setSize(150,25);
zegar.setLocation(480,5);
zegar.setVisible(true);
add(zegar);
zegar.start();
addMouseListener(this);
show();
}
public void update(Graphics g)
{
paint(g);
}
public void paint(Graphics g)
{
RysujPlansze(g);
}
public void RysujPlansze(Graphics g)
{
Image img = createImage(400,430);
Graphics2D g2 = (Graphics2D) img.getGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(Color.black);
g2.fillRect(18,38,322,322);
for (int j = 0; j < 8; j++)
{
for (int i = 0; i < 8; i++)
{
if (plansza.pole[i][j] == 0)
g2.setColor(new Color(193,227,221)); //jasny
else
g2.setColor(new Color(75,150,221)); //ciemny
g2.fillRect(20 + 40*i, 40 + 40*j,38,38);
if (plansza.pole[i][j] > 1)
{
g2.setColor(Color.black);
g2.fillOval(21 + 40*i, 41 + 40*j,36,36);
if (plansza.pole[i][j] == 2 || plansza.pole[i][j] == 4)
g2.setColor(new Color(245,240,240));
if (plansza.pole[i][j] == 3 || plansza.pole[i][j] == 5)
g2.setColor(new Color(215,143,220));
g2.fillOval(23 + 40*i, 43 + 40*j,32,32);
if (plansza.pole[i][j] == 4 || plansza.pole[i][j] == 5)
{
g2.setColor(Color.black);
g2.fillOval(26 + 40*i, 46 + 40*j,26,26);
}
}
if (bicia.pole[i][j] != 0)
{
g2.setColor(new Color(215,95,95));
g2.drawRect(20 + 40*i, 40 + 40*j,37,37);
}
if (ruchy.pole[i][j] == 1)
{
g2.setColor(new Color(50,100,250));
g2.drawRect(20 + 40*i, 40 + 40*j,37,37);
}
if (ruchy.pole[i][j] == 2 || ruchy.pole[i][j] == 3)
{
g2.setColor(new Color(150,150,150));
g2.fillRect(20 + 40*i, 40 + 40*j,38,38);
}
}
}
g2.setColor(Color.black); //czarny
g2.fillRect(58,378,42,42);
g2.setColor(new Color(75,150,221)); //ciemny
g2.fillRect(60,380,38,38);
if (ruchy.get_gracz() != 0 )
{
g2.setColor(Color.black);
g2.fillOval(61,381,36,36);
if (ruchy.get_gracz() == 1)
{
g2.setColor(new Color(245,240,240));
}
else
{
g2.setColor(new Color(215,143,220));
}
g2.fillOval(63,383,32,32);
}
// Image obraz = Toolkit.getDefaultToolkit().getImage("dupa.jpg");
g.drawImage(img,0,0,this);
// g.drawImage(obraz, 0, 0, this);
}
public void actionPerformed(ActionEvent ev)
{
Object cel = ev.getSource();
if (cel == bNowa)
{
AudioClip acDzwiek = null;
File flPlik= new File("krotki.wav");
try {
acDzwiek= Applet.newAudioClip( flPlik.toURL());
} catch (MalformedURLException ex) {
Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
}
acDzwiek.play();
plansza.rozpoczecie();
ruchy.zerowanie();
ruchy.set_gracz(1);
bicia.zerowanie();
repaint();
}
else if(cel==bZakoncz)
{
AudioClip acDzwiek = null;
File flPlik= new File("krotki.wav");
try {
acDzwiek= Applet.newAudioClip( flPlik.toURL());
} catch (MalformedURLException ex) {
Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
}
acDzwiek.play();
System.exit(0);
}
else if(cel==bZapisz)
{
AudioClip acDzwiek = null;
File flPlik= new File("krotki.wav");
try {
acDzwiek= Applet.newAudioClip( flPlik.toURL());
} catch (MalformedURLException ex) {
Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
}
acDzwiek.play();
FileWriter plikWy = null;
try
{
plikWy = new FileWriter("nazwa.txt");
for(int i = 0; i < 8; i++)
{
for(int j=0; j<8; j++)
{
plikWy.write(""+(plansza.pole[j][i])+" ");
//write.write(""+" ");
}
//plikWy.write("\r\n");
}
try
{
plikWy.close(); //Zamykanie pliku
}
catch (IOException e)
{
}
}
catch(IOException ex)
{
System.out.println("Błąd operacji na pliku: "+ex);
}
}
else if (cel == bWczytaj)
{
AudioClip acDzwiek = null;
File flPlik= new File("krotki.wav");
try {
acDzwiek= Applet.newAudioClip( flPlik.toURL());
} catch (MalformedURLException ex) {
Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
}
acDzwiek.play();
int tmp_pole[][] = new int[8][8];
try
{
//File file = new File("nazwa.txt");
File plik1=new File("nazwa.txt");
try (Scanner odczyt = new Scanner(plik1))
{
while (odczyt.hasNextLine())
{
StringTokenizer wyraz_z_tokenem=new StringTokenizer(odczyt.nextLine()," ");
for(int i=0; i<8; i++)
{
for(int j=0; j<8; j++)
{
tmp_pole[i][j]=(Integer.parseInt(wyraz_z_tokenem.nextToken()));
}
}
while (wyraz_z_tokenem.hasMoreElements())
{
System.out.print(wyraz_z_tokenem.nextToken());
}
}
}
} catch (FileNotFoundException ex) {
Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
}
for(int i=0; i<8; i++)
{
for(int j=0; j<8; j++)
{
System.out.print(tmp_pole[i][j]);
}
System.out.println();
}
plansza.pole = tmp_pole;
plansza.transpozycja();
plansza.wyswietlanie();
ruchy.zerowanie();
ruchy.set_gracz(1);
bicia.zerowanie();
repaint();
}
}
public void mouseClicked(MouseEvent ev)
{
int x = ev.getX();
int y = ev.getY();
if (x >= 20 && x < 340 && y >= 40 && y < 360
&& (x + 22)%40 != 0 && (x + 21)%40 != 0
&& (y + 2)%40 != 0 && (y + 1)%40 != 0)
{
int _x, _y;
_x = (x - 20)/40;
_y = (y - 40)/40;
System.out.println(_x + " " + _y);
bicia.sprawdz_bicia(ruchy.get_gracz(),plansza);
ruchy.klikniecie(_x,_y,plansza,bicia);
repaint();
}
}
public void mousePressed(MouseEvent ev){}
public void mouseReleased(MouseEvent ev){}
public void mouseEntered(MouseEvent ev){}
public void mouseExited(MouseEvent ev){}
}