Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.*;
- import java.awt.event.*;
- public class KiK extends Canvas implements ActionListener, MouseListener
- {
- int[][] plansza;
- int wspR1, wspK1, wspR2, wspK2,gra;
- static final int pusto = 0,O = 1,X = 2;
- boolean tura;
- Label raport;
- public KiK()
- {
- setBackground(Color.WHITE);
- addMouseListener(this);
- raport = new Label("",Label.CENTER);
- plansza = new int[15][15];
- newGame();
- Frame frame = new Frame("K\u00f3\u0142ko i krzy\u017cyk");
- frame.addWindowListener(new WindowAdapter()
- {
- public void windowClosing(WindowEvent ev)
- {
- System.exit(0);
- }
- });
- setSize(218,238);
- frame.add(this,"Center");
- frame.add(raport,"South");
- frame.pack();
- frame.setVisible(true);
- frame.setResizable(false);
- frame.setLocationRelativeTo(null);
- MenuBar mb = new MenuBar();
- frame.setMenuBar(mb);
- Menu file = new Menu("Plik");
- mb.add(file);
- MenuItem newgame = new MenuItem("Nowa gra",new MenuShortcut(KeyEvent.VK_N));
- newgame.addActionListener(this);
- file.add(newgame);
- file.add(new MenuItem ("-"));
- MenuItem quit = new MenuItem("Zamknij", new MenuShortcut(KeyEvent.VK_Q));
- quit.addActionListener(this);
- file.add(quit);
- Menu help = new Menu("Pomoc");
- mb.setHelpMenu(help);
- MenuItem rules = new MenuItem ("Zasady gry");
- rules.addActionListener(this);
- help.add(rules);
- MenuItem about = new MenuItem ("O programie...");
- about.addActionListener(this);
- help.add(about);
- }
- public void actionPerformed(ActionEvent event)
- {
- if(event.getActionCommand().startsWith("Nowa gra"))
- newGame();
- else if (event.getActionCommand().startsWith("Zamknij"))
- System.exit(0);
- else if(event.getActionCommand().startsWith("O programie..."))
- getAbout();
- else if(event.getActionCommand().startsWith("Zasady gry"))
- getRules();
- }
- void getAbout()
- {
- Okna okna = new Okna();
- okna.new OProgramie();
- }
- void getRules()
- {
- Okna okna = new Okna();
- okna.new ZasadyGry();
- }
- void newGame()
- {
- for (int rzad = 0; rzad < 15; rzad++)
- for (int kolumna = 0; kolumna < 15; kolumna++)
- plansza[rzad][kolumna] = pusto;
- gra = X;
- raport.setText("Gr\u0119 rozpoczyna gracz 'X'");
- tura = true;
- wspR1 = -1;
- repaint();
- }
- void getArea(int rzad, int kolumna)
- {
- if ( plansza[rzad][kolumna] != pusto )
- {
- if (gra == X)
- raport.setText("Gracz 'X' - wybierz puste pole.");
- else
- raport.setText("Gracz 'O' - wybierz puste pole.");
- return;
- }
- plansza[rzad][kolumna] = gra;
- Graphics g = getGraphics();
- getElement(g, gra, rzad, kolumna);
- g.dispose();
- if (zwyciezca(rzad,kolumna))
- {
- if (gra == O)
- {
- Okna okna = new Okna();
- okna.new KoniecGry("Zwyci\u0119\u017ca 'O' ! Gratulacje!!!");
- tura = false;
- }
- else
- {
- Okna okna = new Okna();
- okna.new KoniecGry("Zwyci\u0119\u017ca 'X' ! Gratulacje!!!");
- tura = false;
- }
- Graphics gl = getGraphics();
- getLine(gl);
- gl.dispose();
- return;
- }
- boolean wolnePola = false;
- for (int i = 0; i < 15; i++)
- for (int j = 0; j < 15; j++)
- if (plansza[i][j] == pusto)
- wolnePola = true;
- if (wolnePola == false)
- {
- tura = false;
- return;
- }
- if (gra == X)
- {
- gra = O;
- raport.setText("Kolej na ruch gracza 'O'");
- }
- else
- {
- gra = X;
- raport.setText("Kolej na ruch gracza 'X'");
- }
- }
- private boolean zwyciezca(int rzad, int kolumna)
- {
- if (licznik( plansza[rzad][kolumna], rzad, kolumna, 1, 0 ) >= 5)
- return true;
- if (licznik( plansza[rzad][kolumna], rzad, kolumna, 0, 1 ) >= 5)
- return true;
- if (licznik( plansza[rzad][kolumna], rzad, kolumna, 1, -1 ) >= 5)
- return true;
- if (licznik( plansza[rzad][kolumna], rzad, kolumna, 1, 1 ) >= 5)
- return true;
- wspR1 = -1;
- return false;
- }
- private int licznik(int gracz, int rzad, int kolumna, int wspX, int wspY)
- {
- int l = 1;
- int r, k;
- r = rzad + wspX;
- k = kolumna + wspY;
- while ( r >= 0 && r < 15 && k >= 0 && k < 15 && plansza[r][k] == gracz )
- {
- l++;
- r += wspX;
- k += wspY;
- }
- wspR1 = r - wspX;
- wspK1 = k - wspY;
- r = rzad - wspX;
- k = kolumna - wspY;
- while ( r >= 0 && r < 15 && k >= 0 && k < 15 && plansza[r][k] == gracz )
- {
- l++;
- r -= wspX;
- k -= wspY;
- }
- wspR2 = r + wspX;
- wspK2 = k + wspY;
- return l;
- }
- public void paint(Graphics g)
- {
- g.setColor(Color.darkGray);
- for (int i = 1; i < 15; i++)
- {
- g.drawLine(1 + 15*i, 0, 1 + 15*i, getSize().height);
- g.drawLine(0, 1 + 15*i, getSize().width, 1 + 15*i);
- }
- g.setColor(Color.BLACK);
- g.drawRect(0,0,getSize().width-1,getSize().height-1);
- g.drawRect(1,1,getSize().width-3,getSize().height-3);
- for (int rzad = 0; rzad < 15; rzad++)
- for (int kolumna = 0; kolumna < 15; kolumna++)
- if (plansza[rzad][kolumna] != pusto)
- getElement(g, plansza[rzad][kolumna], rzad, kolumna);
- if (wspR1 >= 0)
- getLine(g);
- }
- private void getElement(Graphics g, int piece, int rzad, int kolumna)
- {
- if (piece == O)
- {
- g.setColor(Color.BLUE);
- g.drawOval(3 + 15*kolumna, 3 + 15*rzad, 10, 10);
- }
- else
- {
- g.setColor(Color.BLACK);
- g.drawLine(2+15*kolumna,2+15*rzad,15*kolumna+15,15*rzad+15);
- g.drawLine(15*kolumna+15,15*rzad+2,2+15*kolumna,15+15*rzad);
- }
- }
- private void getLine(Graphics g)
- {
- g.setColor(Color.red);
- g.drawLine( 8 + 15*wspK1, 8 + 15*wspR1, 8 + 15*wspK2, 8 + 15*wspR2 );
- if (wspR1 == wspR2)
- g.drawLine( 8 + 15*wspK1, 7 + 15*wspR1, 8 + 15*wspK2, 7 + 15*wspR2 );
- else
- g.drawLine( 7 + 15*wspK1, 8 + 15*wspR1, 7 + 15*wspK2, 8 + 15*wspR2 );
- }
- public void mousePressed(MouseEvent evt)
- {
- if (tura == false)
- raport.setText("Wybierz 'Nowa gra' z menu 'Plik'");
- else
- {
- int kolumna = (evt.getX() - 2) / 15;
- int rzad = (evt.getY() - 2) / 15;
- if (kolumna >= 0 && kolumna < 15 && rzad >= 0 && rzad < 15)
- getArea(rzad,kolumna);
- }
- }
- public void mouseReleased(MouseEvent evt) { }
- public void mouseClicked(MouseEvent evt) { }
- public void mouseEntered(MouseEvent evt) { }
- public void mouseExited(MouseEvent evt) { }
- }
Add Comment
Please, Sign In to add comment