Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Гра Змійка опис програми

Тип Реферат
Предмет Информатика
Просмотров
602
Размер файла
168 б
Поделиться

Ознакомительный фрагмент работы:

Гра Змійка опис програми

Зміст

Анотація. 3

Завдання:4

1.Аналіз предметної області, постановка задачі5

1.1.Формулювання проблеми. 5

1.2.Аналіз предметної області6

1.3.Постановка задачі6

2.Проект програми. 7

2.1.Ієрархія об’єктів. 7

2.2.Ієрархія наслідування. 9

2.3.Діаграма станів гри. 10

2.4.Специфікація. 11

2.5.Кодування. 14

3.Додаток. 15

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

3.1.1.Файл GameSnake.java. 15

3.1.2.Файл GameFrame.java. 16

3.1.3.Файл GameField.java. 17

3.1.4.Файл InformPanel.java. 23

3.1.5.Файл Snake.java. 24

3.1.6.Файл SnakeElement.java. 26

3.1.7.Файл GameSquare.java. 27

3.1.8.Файл MenuString.java. 28

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

4.Література. 31

Анотація

Гра «Змійка» - це гра, в якій уявна змійка рухається по ігровому полю оминаючи перепони і їй потрібно влучити в ціль. Програма є нескладною і доступна для виконання на багатьох ЕОМ в різних операційних системах з встановленою Virtual Java Machine. Вона розрахована на широке коло користувачів завдяки своїй простоті.

Завдання:

Провести аналіз, розробити проект, скласти опис і специфікацію, провести кодування програми-гри «Змійка» використовуючи методи об’єктно-орієнтованого програмування.

1. Аналіз предметної області, постановка задачі

1.1. Формулювання проблеми

Комп’ютерні ігри для людини – це не лише засіб розважитись. Вони допомагають розвинути людську реакцію, інтелект, знання в певних галузях і областях. Гра змійка – одна з таких ігор. Рівень, до якого дійде гравець, залежить лише від швидкості його реакції на поточні обставини гри, які динамічно змінюватимуться в сторону збільшення з кожним новим раундом, що також сприятиме збільшенню реакції. Провівши частину вільного часу за грою, можна отримати задоволення від набраних очок і пройдених рівнів. Якщо людина ніколи не працювала з комп’ютером, то гра допоможе набути мінімальних навиків з клавіатурою без необхідності розбиратись з складними правилами великих ігор та програм.

Правила гри такі: на прямокутному ігровому полі створюється змійка, яка має декілька життів і складається з кількох частин. На полі також знаходяться клітки-перепони та ціль, в яку змійка має влучити. Змійка починає рухатися в довільному напрямку на найнижчій швидкості, яка відповідає першому рівню гри. Коли гравець натискатиме клавіші курсору, то напрям руху першої частини змійки – «голови» змінюватиметься відповідно до натиснутої клавіші. Коли голова змійки вийде за межі ігрового поля чи влучить в одну з перепон, то в залежності від того, залишились чи ні життя, в змійки або ж буде відняте одне життя, або ж гру буде припинено. Коли голова змійки «врізається» в ціль, то вона стане новою головою і рух змійки продовжиться. Коли довжина змійки перевищує максимально можливу, то даний рівень буде пройдено і гра перейде на наступний. В наступному рівні швидкість руху збільшується.

1.2.Аналіз предметної області

Гру «змійка» можна було б реалізувати в текстовому режимі, зображуючи всі об’єкти різними текстовими символами, наприклад, границі – підкреслюванням «_ і |», перепони хрестиками «Х», змійку прямокутниками.

Але в іграх, що вже існують і подібні до даної, використовуються побудови в графічному режимі, хоч і максимально прості. Проте поряд з простотою в них застосовуються анімації для зображення руху, наприклад у грі в танки, ці танки рухаються по екрану, імітуючи рух справжнього танку.

У грі для створення інтерфейсу користувача - виводу вікна гри, ігрових меню та кнопок, можна використати стандартні засоби мови JAVA - компоненти бібліотек AWT (застаріла) чи Swing (більш нова, що є частиною API – Java Foundation Classes), і тому її використання цієї бібліотеки дає більше можливостей для графічного оформлення гри – побудова найпростіших геометричних фігур, розфарбовування областей екрану та інше.

1.3.Постановка задачі

Розробити проект гри, з допомогою який можна програмно реалізувати, провівши кодування на об’єктно-орієнтованій мові програмування, скласти специфікацію.

2. Проект програми

2.1. Ієрархія об’єктів

На основі того, що необхідно розробити гру змійка, можна виділити головний об’єкт ієрархії – «Гра Змійка». Вона складається з «ігрового поля» та «меню».

Об’єкти-пункти меню: «Гра» з вкладеними підпунктами «нова гра» - розпочинає нову гру, «пауза» - тимчасово припиняє гру, «зупинити гру» - зупиняє поточну гру, «вихід» - дозволяє вийти з програми. Підменю «швидкість гри» з меню «Настроювання» дозволяє змінити швидкість руху змійки.

Об’єкт «ігрове поле» складається з об’єктів «ціль», «змійка», «перепона», «межі», «поле інформації» та «повідомлення». «Ціль» це клітка на ігровому полі, у яку має влучити змійка. «Змійка» складається з «частин» і згідно описаних вище правил рухається по ігровому полі. «Перепони» - це клітки на ігровому полі, які змійка має оминати. «Межі» ігрового поля встановлюють границі, за які змійка не може вийти. Влучання змійки в перепони чи вихід за ігрове поле зменшують її кількість гравців.

«Поле інформації» інформуватиме гравця про стан гри: «Повідомлення» - якій будуть видаватися різноманітні текстові повідомлення про події в грі та вказівки гравцю (наприклад, повідомлення про те, що гру закінчено, про перехід в наступний тур або виграш у грі). «Індикатор життів» - об’єкт, який показуватиме про кількість життів змійки. «Індикатор рівня» буде показувати номер рівня, на якому знаходиться гра. «Індикатор довжини» відображатиме довжину змійки, щоб гравець орієнтувався, скільки цілей поцілено – згідно вказаних правил для переходу на наступний рівень, потрібно поцілити в певну кількість цілей.

Рисунок 1 – ієрархія об’єктів гри Змійка


2.2. Ієрархія наслідування

Рисунок 2 – Ієрархія класів

2.3. Діаграма станів гри

Рисунок 3 - Діаграма станів гри


2.4. Специфікація

Клас public class Game – головний клас проекту необхідний для запуску гри

Метод public static void main(String[] args) – з нього починається виконання програми

Клас public class GameFrame реалізує вікно для відображення ігрового поля та даних гри

Метод public GameFrame() – конструктор вікна гри в якому встановлюються його параметри.

Метод public void newGame() - метод запускає новий сеанс гри

Метод public void pauseGame() - метод створює паузу

Метод public void stopGame() - метод зупиняє гру

Клас public class GameField – ігрове поле

Змінні:

Snake snake - змійк

GameFrame frame – змінна для доступу до вікна гри

InformPanel informPanel – інформаційна панель

protected boolean isGameRun = істина, якщо йде гра

protected boolean isGamePause – істина під час паузи

int gameSpeed – швидкість гри

protected int colObstacles - Кількість перепон

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

final int w = 35, h = 25 – розміри ігрового поля

protected GameSquare square[][] – ігрові клітки

boolean keyBlocked – істина, коли заблокована клавіатура

Методи

public GameField(GameFrame owner) - конструктор

public void setDefault() – встановлення в початковий стан

public void clearSquares()- відмічення всіх кліток вільними

protected void createSnake() – створення змійки

protected void createBorders() – Створює межі поля

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

protected void createTarget() - створення мішені для змійки

public void paintComponent(Graphics g) – малювання компонентів поля

public void run () – обробка подій гри

public void cheeckWin() – перевірка перемоги в грі

public void processCrash() – перевірка влучання в перепону

public void newGame() – Запуск нової гри

public void pauseGame() – пауза в грі

public void stopGame( ) – зупинка гри

public void setGameSpeed(int s) – задання швидкості гри

Клас public class InformPanel

Змінні:

protected int lives, len, speed, obstacles – кількість життів, довжина змійки, швидкість змійки, кількість перепон;

Методи

public InformPanel(final GameField field) - Конструктор

public void updateInfo(int lives, int len, int speed, int obstacles) Зміна поточних даних новими

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;

targetElem = new SnakeElement(0, 0);

do{

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

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

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

targetElem.setSpeed(0, 0);

targetElem.xPos = x; targetElem.yPos = y;

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

}

public void paintComponent(Graphics g){

super.paintComponent(g);

int squareW = (getWidth())/w;

int squareH = (getHeight())/h;

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

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

square[x][y].setSize(squareW, squareH);

square[x][y].setLocation(x*squareW, y*squareH);

}

}

g.setColor(Color.BLUE);

g.setFont( new Font("1", Font.BOLD, 20) );

if ( !isGameRun ){

g.drawString("Розпочніть нову гру", 40, 100);

} else {

if (isGamePause){

g.drawString("ПАУЗА", 100, 100);

}

}

}

public void run (){

while (true){

if (isGameRun && !isGamePause){

keyBlocked = true;

int n = snake.colElements-1;

SnakeElement lastElem = new SnakeElement(snake.elem[n].xPos, snake.elem[n].yPos);

lastElem.setSpeed(snake.elem[n].xSpeed, snake.elem[n].ySpeed);

square[lastElem.xPos][lastElem.yPos].setUsed(false);

square[lastElem.xPos][lastElem.yPos].setBorder(false);

snake.move();

crash = square[snake.elem[0].xPos][snake.elem[0].yPos].isBorder;

target = !crash &&

square[snake.elem[0].xPos][snake.elem[0].yPos].used;

if (target){

snake.increment(lastElem);

createTarget();

cheeckWin();

}

keyBlocked = false;

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;

}

if (crash) { processCrash(); }

repaint();

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

gameSpeed, colObstacles);

informPanel.repaint();

try { Thread.sleep (delay); }

catch ( InterruptedException ex){ }

}

}

}

public void cheeckWin(){

if (snake.isMaxLong()) {

JOptionPane.showMessageDialog(frame,

"Ви перемогли!nНа швидкості "+gameSpeed, "Ігрова інформація",

JOptionPane.INFORMATION_MESSAGE);

stopGame();

try { Thread.sleep (delay*2); }

catch ( InterruptedException ex){ }

setDefault();

}

}

public void processCrash(){

snake.decrementLive();

if (snake.isKilled()) {

JOptionPane.showMessageDialog(frame,

"Гру завершено!", "Ігрова інформація",

JOptionPane.INFORMATION_MESSAGE);

stopGame();

}

try { Thread.sleep (delay*2); }

catch ( InterruptedException ex){ }

setDefault();

}

public void newGame(){

if (isGameRun) stopGame();

setDefault();

snake.resetLives();

isGameRun = true;

isGamePause = false;

}

public void pauseGame(){

isGamePause = !isGamePause;

if (isGamePause){

keyBlocked = true;

repaint();

} else{

keyBlocked = false;

}

}

public void stopGame( ){

isGameRun = false;

repaint();

}

public void setGameSpeed(int s){

gameSpeed = s;

switch (gameSpeed){

case 1: delay = 400; break;

case 2: delay = 200; break;

case 3: delay = 100; break;

}

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

gameSpeed, colObstacles);

}

public void start(){

isGameRun = false;

setGameSpeed(2);

th = new Thread(this);

th.start();

}

public void stop(){}

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.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);

}

}

3.1.5. Файл 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;}

}

3.1.6. Файл 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;}

}

3.1.7. Файл 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);

}

}

}

3.1.8. Файл 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. Література

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

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


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Тгу им. Г. Р. Державина
Реферат сделан досрочно, преподавателю понравилось, я тоже в восторге. Спасибо Татьяне за ...
star star star star star
РЭУ им.Плеханово
Альберт хороший исполнитель, сделал реферат очень быстро, вечером заказала, утром уже все ...
star star star star star
ФЭК
Маринаааа, спасибо вам огромное! Вы профессионал своего дела! Рекомендую всем ✌🏽😎
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Подогнать готовую курсовую под СТО

Курсовая, не знаю

Срок сдачи к 7 дек.

только что
только что

Выполнить задания

Другое, Товароведение

Срок сдачи к 6 дек.

1 минуту назад

Архитектура и организация конфигурации памяти вычислительной системы

Лабораторная, Архитектура средств вычислительной техники

Срок сдачи к 12 дек.

1 минуту назад

Организации профилактики травматизма в спортивных секциях в общеобразовательной школе

Курсовая, профилактики травматизма, медицина

Срок сдачи к 5 дек.

2 минуты назад

краткая характеристика сбербанка анализ тарифов РКО

Отчет по практике, дистанционное банковское обслуживание

Срок сдачи к 5 дек.

2 минуты назад

Исследование методов получения случайных чисел с заданным законом распределения

Лабораторная, Моделирование, математика

Срок сдачи к 10 дек.

4 минуты назад

Проектирование заготовок, получаемых литьем в песчано-глинистые формы

Лабораторная, основы технологии машиностроения

Срок сдачи к 14 дек.

4 минуты назад

2504

Презентация, ММУ одна

Срок сдачи к 7 дек.

6 минут назад

выполнить 3 задачи

Контрольная, Сопротивление материалов

Срок сдачи к 11 дек.

6 минут назад

Вам необходимо выбрать модель медиастратегии

Другое, Медиапланирование, реклама, маркетинг

Срок сдачи к 7 дек.

7 минут назад

Ответить на задания

Решение задач, Цифровизация процессов управления, информатика, программирование

Срок сдачи к 20 дек.

7 минут назад
8 минут назад

Все на фото

Курсовая, Землеустройство

Срок сдачи к 12 дек.

9 минут назад

Разработка веб-информационной системы для автоматизации складских операций компании Hoff

Диплом, Логистические системы, логистика, информатика, программирование, теория автоматического управления

Срок сдачи к 1 мар.

10 минут назад
11 минут назад

перевод текста, выполнение упражнений

Перевод с ин. языка, Немецкий язык

Срок сдачи к 7 дек.

11 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно