Рефераты. Гра "Змійка" - опис програми

public void paintComponent(Graphics g) - малювання панелі

Клас class Snake - змійка

Змінні:

int colElements - кількість елементів

final int maxLen - максимально можлива довжина

SnakeElement elem[] - масив частин змійки

int xNextSpeed, yNextSpeed - напрям руху на наступному кроці

final int startLives - початкова кількість життів

private static int lives - зберігає кількість життів змійки

Методи

public Snake(int c, int xPos, int yPos) - створення змійки довжини с з заданими координатами

public void increment(SnakeElement lastElem) додавання до змійки нового елемента

public boolean isMaxLong() - перевірка досягнення змійкою максимальної довжини

public boolean isKilled() - перевірка, чи «жива» змійка

public void decrementLive() - забирає життя в змійки

Клас class SnakeElement - елемент змійки

Змінні:

int xSpeed - швидкість елемента змійки по горизонталі

int ySpeed - швидкість елемента змійки по вертикалі

int xPos - позиція елемента змійки по горизонталі

int yPos - позиція елемента змійки по вертикалі

public SnakeElement(int xPos, int yPos) - конструктор задає координати елемента

public void move() - рухає елемент

public void setSpeed(int x, int y) - встановлення швидкості елемента

Клас class GameSquare - клітка ігрового поля

Змінні:

int w, h - розміри

boolean used - використання

boolean isBorder - перепона

Методи

public void setSize(int w, int h) - встановлює розміри

public void setBorder(boolean b) - робить клітинку перепоною

public void setUsed(boolean b) - робить клітинкою зайнятою/незайнятою

public void paintComponent(Graphics g) - малювання клітинки

Клас public class MenuString - строка меню

Змінні: - пункти меню і підменю

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;

2.5. Кодування

Кодування проведено згідно викладеного проекту на об'єктно орієнтованій мові Java.

Мова Java є об'єктно-орієнтовнованою дозволяє реалізувати запроектовані класи, їх взаємодію та сприяє написанню надійних програм і спрощує їх реалізацію. Існує багато інших мов підтримуючих ООП технологію програмування. Це такі мови програмування, як С++, Object Pascal, Python та ін. Мова Java завдяки широким можливостям та бібліотекам класів має велику гнучкість і забезпечує можливість реалізації дуже великих проектів за мінімальний час,

Тому для даної роботи було обрано мову Java, як найбільш ефективну та багато платформну.

2.6. Висновок

Враховуючи аналіз предметної області і проект програми, можливо зробити висновок, що розроблена гра „Змійка” розрахована на широке коло користувачів завдяки своїй простоті. Модель програми дозволяє легко та зручно її модернізувати: додати нові команди; зробити сприйнятливий для користувача інтерфейс.

3. Додаток

3.1. Тексти файлів проекту

3.1.1. Файл GameSnake.java

public class GameSnake {

public static void main(String[] args) {

GameFrame window = new GameFrame();

}

}

3.1.2. Файл GameFrame.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class GameFrame extends JFrame{

GameField field;

MenuString menu;

boolean running = false;

public GameFrame() {

setDefaultLookAndFeelDecorated(true);

setSize(400, 300);

setTitle("Гра Змійка");

menu = new MenuString(this);

field = new GameField(this);

getContentPane().add(field);

setJMenuBar(menu);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

dispose();

System.exit(0);

}

});

addKeyListener(field);

setVisible(true);

}

public void newGame(){

field.newGame();

}

public void pauseGame(){

field.pauseGame();

}

public void stopGame(){

field.stopGame();

}

}

3.1.3. Файл GameField.java

import java.awt.*;

import javax.swing.*;

import java.util.*;

import java.awt.event.*;

public class GameField extends JPanel

implements Runnable, KeyListener{

Snake snake;

GameFrame frame;

SnakeElement targetElem;

InformPanel informPanel;

protected boolean isGameRun;

protected boolean isGamePause = false;

int gameSpeed = 2;

protected int colObstacles = 12;//Кількість перепон

protected int delay;//Затримка при русі змійки

final int w = 35, h = 25;

protected Thread th;

protected GameSquare square[][];

boolean keyBlocked = false;

boolean crash = false;

boolean target = false;

public GameField(GameFrame owner) {

super();

frame = owner;

this.setLayout(null);

Random rnd = new Random();

square = new GameSquare[w][h];

for(int x = 0; x<w; x++){

for(int y = 0; y<h; y++){

square[x][y] = new GameSquare();

add(square[x][y]);

}

}

informPanel = new InformPanel(this);

frame.getContentPane().add(informPanel, BorderLayout.EAST);

clearSquares();

createSnake();

createBorders();

start();

}

public void setDefault(){

clearSquares();

createSnake();

createBorders();

createObstacles(colObstacles);

createTarget();

informPanel.updateInfo(snake.getLives(), snake.colElements,

gameSpeed, colObstacles);

}

public void clearSquares(){

for(int x = 0; x<w; x++){

for(int y = 0; y<h; y++){

square[x][y].setBorder(false);

square[x][y].setUsed(false);

}

}

}

protected void createSnake(){

snake = new Snake(5, w/2, h-2);

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

square[snake.elem[i].xPos][snake.elem[i].yPos].setUsed(true);

square[snake.elem[i].xPos][snake.elem[i].yPos].setBorder(true);

square[snake.elem[i].xPos][snake.elem[i].yPos].n = i;

}

}

protected void createBorders(){

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

square[i][0].setBorder(true);

square[i][h-1].setBorder(true);

}

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

square[0] [i].setBorder(true);

square[w-1][i].setBorder(true);

}

}

protected void createObstacles(int col){//створює n ререпон на ігровому полі

Random rnd = new Random();

int x, y;

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

do{

x = Math.abs(rnd.nextInt(w));

y = Math.abs(rnd.nextInt(h));

} while (square[x][y].isBorder);

square[x][y].setBorder(true);

}

}

protected void createTarget(){//Мішень для змійки

Random rnd = new Random();

int x, y;

Страницы: 1, 2, 3, 4



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.