Файл InformPanel.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

 

public class InformPanel extends JPanel{

   

JLabel label;

boolean rn = true;

protected int lives, len, speed, obstacles;

 

public InformPanel(final GameField field) {

   label = new JLabel("Інформація гри");

   add(label);

   setDefault();

}

   

public void setDefault(){

   updateInfo(0, 0, 0, 0);

}

   

public void updateInfo(int lives, int len, int speed, int obstacles){

   this.lives    = lives;

   this.len   = len;

   this.speed    = speed;

   this.obstacles = obstacles;

   repaint();

}   

   

public void paintComponent(Graphics g){

   int h = 100;

   super.paintComponent(g);

   g.drawString(" Життя: " + lives, 1, h += 30);

   g.drawString("Елементів: " + len,    1, h += 30);

   g.drawString("Швидкість: " + speed, 1, h += 30);

   g.drawString(" Перепони: " + obstacles, 1, h += 30);

}   

}



Файл Snake.java

 

class Snake {

int colElements;

final int maxLen = 16;

SnakeElement elem[];

   

int xNextSpeed, yNextSpeed;

final int startLives = 3;

private static int lives;

   

public Snake(int c, int xPos, int yPos){

   colElements = c;

   elem = new SnakeElement[colElements];

   for (int i = 0; i<colElements; i++) {

       elem[i] = new SnakeElement(xPos-i,yPos);

       elem[i].setMoveRight();

   }

   setMoveRight();

}

   

public void resetLives(){

   lives = startLives;

}

   

public void increment(SnakeElement lastElem) {

   SnakeElement temp[];

   temp = new SnakeElement[colElements];

   for (int i = 0; i<colElements; i++) {

       temp[i] = new SnakeElement(0,0);

       temp[i] = elem[i];

   }

   colElements++;

   elem = new SnakeElement[colElements];

   for (int i = 0; i<colElements-1; i++) {

       elem[i] = new SnakeElement(0,0);

       elem[i] = temp[i];

   }

   elem[colElements-1] = new SnakeElement(0,0);

   elem[colElements-1] = lastElem;

      elem[colElements-1].xSpeed = lastElem.xSpeed;

   elem[colElements-1].ySpeed = lastElem.ySpeed;

 

}

   

 

       

   public void move(){

   for (int i = colElements-1; i>0; i--){

       elem[i].setSpeed(elem[i-1].xSpeed, elem[i-1].ySpeed);

       elem[i].move();

   }

   elem[0].xSpeed = xNextSpeed;

   elem[0].ySpeed = yNextSpeed;

   elem[0].move();

}

   

public void setMoveUp(){

   xNextSpeed = 0; yNextSpeed = -1;

};

   

public void setMoveDown(){

   xNextSpeed = 0; yNextSpeed = 1;

};

   

public void setMoveLeft(){

   xNextSpeed = -1; yNextSpeed = 0;

};

   

public void setMoveRight(){

   xNextSpeed = 1; yNextSpeed = 0;

};

   

public boolean isMaxLong(){return (colElements == maxLen);}

   

public boolean isKilled(){return (lives<0);}

   

public void decrementLive(){lives -=1;}

   

public int getLives(){ return lives;}

}


Файл SnakeElement.java

 

class SnakeElement {

int xSpeed=1;

int ySpeed=1;

   

int xPos=1;

int yPos=1;

   

public SnakeElement(int xPos, int yPos){

   this.xPos = xPos;

   this.yPos = yPos;

}

   

public void move(){

   xPos += xSpeed;

   yPos += ySpeed;

}

   

public void setSpeed(int x, int y){

   xSpeed = x;

   ySpeed = y;

}

   

public void setMoveUp() { xSpeed = 0; ySpeed = -1;}

public void setMoveDown() { xSpeed = 0; ySpeed = 1;}

public void setMoveLeft() { xSpeed = -1; ySpeed = 0;}

public void setMoveRight(){ xSpeed = 1; ySpeed = 0;}

   

public boolean isMovingUp() { return ySpeed == -1;}   

public boolean isMovingDown(){ return ySpeed == 1;}

public boolean isMovingLeft(){ return xSpeed == -1;}

public boolean isMovingRight(){ return xSpeed == 1;}

}

 



Файл GameSquare.java

import java.awt.*;

import javax.swing.*;

 

class GameSquare extends JPanel{

   

int w, h;

boolean used = false;

boolean isBorder = false;

int n;

   

public void setSize(int w, int h){

   super.setSize(w, h);

   this.w = w;

   this.h = h;

}

   

public void setBorder(boolean b){isBorder = b;}

   

public void setUsed(boolean b){used = b;}   

   

public void paintComponent(Graphics g){       

   if (isBorder &&!used){

       g.setColor(Color.ORANGE); g.fillRect(0,0,w-1,h-1);

       g.setColor(Color.RED);   g.drawRect(0,0,w-1,h-1);

   }       

   if (used) {

       g.setColor(Color.BLUE);   g.fillOval(-1, -1, w+2, h+2);

   }

}

}



Файл MenuString.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class MenuString extends JMenuBar {

JMenu Game; JMenuItem mi_NewGame, mi_PauseGame,

                           mi_StopGame, mi_ExitGame;

JMenu Options, Speed; JMenuItem mi_S1,     mi_S2, mi_S3;

JMenu Help; JMenuItem mi_About;

 

public MenuString(final GameFrame owner) {

   super();

   Game = new JMenu("Гра");

   mi_NewGame = new JMenuItem("Нова гра");

   mi_NewGame.addActionListener(new ActionListener() {

       public void actionPerformed(ActionEvent e) {

           owner.newGame();

       }

   });

   mi_PauseGame = new JMenuItem("Пауза");

   mi_PauseGame.addActionListener(new ActionListener() {

       public void actionPerformed(ActionEvent e) {

           owner.pauseGame();

       }

   }); 

   mi_StopGame = new JMenuItem("Зупинити гру");

   mi_StopGame.addActionListener(new ActionListener() {

       public void actionPerformed(ActionEvent e) {

           owner.stopGame();

       }

   });        

   mi_ExitGame = new JMenuItem("Вихiд");

   mi_ExitGame.addActionListener(new ActionListener() {

       public void actionPerformed(ActionEvent e) {

           //Вихід з гри

           System.exit(0);

       }

   });

      

   Game.add(mi_NewGame); Game.add(mi_PauseGame);

   Game.add(mi_StopGame); Game.add(mi_ExitGame);

   add(Game);     

   Options = new JMenu("Настроювання");

   Speed = new JMenu("Швидкість гри");

   Options.add(Speed);

   mi_S1 = new JMenuItem("Новичок");

   mi_S1.addActionListener(new ActionListener() {

       public void actionPerformed(ActionEvent e) {

           owner.field.setGameSpeed(1);

       } });

   mi_S2 = new JMenuItem("Середня");

   mi_S2.addActionListener(new ActionListener() {

       public void actionPerformed(ActionEvent e) {

           owner.field.setGameSpeed(2);

       }

   }); 

   mi_S3 = new JMenuItem("Професіонал");

   mi_S3.addActionListener(new ActionListener() {

       public void actionPerformed(ActionEvent e) {

           owner.field.setGameSpeed(3);

       }

   });        

   Speed.add(mi_S1); Speed.add(mi_S2); Speed.add(mi_S3);

   add(Options);            

       

   Help = new JMenu("Допомога");

   mi_About = new JMenuItem("Про гру");

   mi_About.addActionListener(new ActionListener() {

       public void actionPerformed(ActionEvent e) {

           //Інформаційне вікно

           JOptionPane.showMessageDialog(owner,

               "Гра Змійка\nАвтор: Гребенюк Віктор\n2005 рік",

               "Про гру",

               JOptionPane.INFORMATION_MESSAGE);

       }

   });

   Help.add(mi_About);

   add(Help);

}

}

3.2. Знімок вікна програми:


 



Література

4.1. JAVA - Издательство Питер. Секреты программирования для Internet на Java

4.2. Картузов А.В. Язык JAVA

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: