public void keyPressed (KeyEvent e){ switch (e.getKeyCode()) { // Яку клавішу натиснули. case KeyEvent.VK_LEFT : if (!snake.elem[0].isMovingRight() && !keyBlocked){ snake.setMoveLeft(); keyBlocked = true; } break; case KeyEvent.VK_RIGHT : if (!snake.elem[0].isMovingLeft() && !keyBlocked){ snake.setMoveRight(); keyBlocked = true; } break; case KeyEvent.VK_UP : if (!snake.elem[0].isMovingDown() && !keyBlocked){ snake.setMoveUp(); keyBlocked = true; } break; case KeyEvent.VK_DOWN : if (!snake.elem[0].isMovingUp() && !keyBlocked){ snake.setMoveDown(); keyBlocked = true; } break; case KeyEvent.VK_SPACE : newGame(); break; case KeyEvent.VK_P : pauseGame(); break; } } public void keyTyped(KeyEvent e){} public void keyReleased(KeyEvent e){} } 3.1.4. Файл InformPanel.javaimport 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); } } 3.1.5. Файл Snake.javaclass 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;} } 3.1.6. Файл SnakeElement.javaclass 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;} } 3.1.7. Файл GameSquare.javaimport 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); } } } 3.1.8. Файл MenuString.javaimport 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. Література4.1. JAVA - Издательство Питер. Секреты программирования для Internet на Java 4.2. Картузов А.В. Язык JAVA
Страницы: 1, 2, 3
|