Презентація курсової роботи
Зміст
ВСТУП:
Завдання
Організація роботи
Теоретичні відомості
Інкапсуляція - механізм об'єднання коду і даних всередині об'єкта, а також їх захисту від зовнішніх змін. Всередині об'єкта дані і код можуть
Висновки
Список використаної літератури
485.69K
Категория: ПрограммированиеПрограммирование

Створення ігрової програми «7 лунок» на мові програмування Java

1. Презентація курсової роботи

Міністерство освіти і науки
Черкаський державний технологічний університет
Кафедра комп*ютерних наук та інформаційних технологій управління
Презентація
курсової роботи
Створення ігрової програми «7 лунок»
на мові програмування Java
Виконав: Вовк Владислав Володимирович
Студент II курсу
Групи КТ-131

2. Зміст

Вступ
Завдання
Організація роботи
Теоретичні відомості
Код програми
Основні аспекти коду програми
Інструкція користувача
Висновки
Список використаної літератури

3. ВСТУП:

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

4. Завдання

«Сім лунок». Вздовж дошки розташовано 7 лунок, в
котрих лежать 3 чорних и 3 білих шари так, як показано на рис.
106. Пересунути чорні шари на місце білих, а білі — на місце
чорних. Шар можна пересувати або в сусідню з ним порожню
лунку, або в порожню лунку, що знаходиться безпосередньо за
найближчим шаром.

5. Організація роботи

Розробку гри я поділив на основні чотири частини:
1.
2.
3.
4.
Створення базової архітектури
Проміжне тестування
Доповнення уже створеної архітектури гри
Фінальне тестування

6. Теоретичні відомості

Найсуттєвіші риси ООП
Інкапсуляція
Поліморфізм
Наслідування
Об'єктно-орієнтоване програмування - це метод програмування, заснований на
поданні програми у вигляді сукупності взаємодіючих об'єктів, кожен з яких є
екземпляром певного класу, а класи є членами певної ієрархії наслідування

7. Інкапсуляція - механізм об'єднання коду і даних всередині об'єкта, а також їх захисту від зовнішніх змін. Всередині об'єкта дані і код можуть

Інкапсуляція
• Інкапсуляція - механізм об'єднання коду і даних всередині
об'єкта, а також їх захисту від зовнішніх змін. Всередині
об'єкта дані і код можуть бути відкритими (public) для
доступу і модифікації іншими об'єктами і закритими
(private) для зовнішніх змін.

8.

Поліморфізм
Поліморфізм
(polymorphіsm) найважливіший
елемент концепції
ООП, що дозволяє
використовувати
єдине
найменування для
функцій, що
виконують схожі
дії.

9.

Успадкування
Успадкування (inheritance) - механізм ООП, що дозволяє об'єкту мати
(наслідувати) методи іншого об'єкта. Точніше, об'єкт отримує (успадковує)
всі основні властивості свого «предка» та додає до них методи, властиві
тільки йому. «Спадкоємець» об'єкта отримає в «спадщину» методи вже
двох об'єктів і т. д. Спадкування ще називають ієрархією класів.

10.

Код програми
Дана гра має три класи. Кожен клас виконує свою задачу.
Ball
Відповідає за поведінку «кульок»
Hole
Відповідає за маніпуляції з лунками даної гри.
MainWindow
Відповідає за відображення самої гри.

11.

Ball
Перший клас.
public class Ball {
private Color color;
public Ball(Color color){
this.color = color;
}
public Color getColor() {
return color;
}
}

12.

public class Hole {
private Ball ball;
private int X, Y, Diametr;
public Hole(Ball ball){
this.setBall(ball);
}
public Hole(){ }
public void setX(int X){
this.X = X;
}
public int getX(){
return this.X; }
public void setY(int Y){
this.Y = Y;
}
public int getY(){
return this.Y; }
public void setDiametr(int Diametr){
this.Diametr = Diametr;
}
public int getDiametr(){
return this.Diametr;
}
public Ball getBall() {
return ball;
}
public void setBall(Ball ball) {
this.ball = ball;
}
public void ballMoveOut(){
this.ball = null;
}
Hole
Другий клас.
}

13.

public class MainWindow {
protected Shell shell;
static void main(String[] args) {
try {
MainWindow window = new
MainWindow();
window.open();
} catch (Exception e) {
MainWindow
Третій клас.
e.printStackTrace();
}
}
public void open() {
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}}}

14.

MainWindow
Третій клас. Продовження.
void DrawStart(Canvas canvas){}
ArrayList<Hole> holes = new ArrayList<Hole>();
private void DrawHole(int D, int height, int index, Hole hole, GC gc){
int start = 20;
int x = index * (D) + index * start + start-10;
int ballD = D/2;
gc.drawOval(x, 5, D, D);
if(hole != null){
hole.setDiametr(D);
private int GetClickedHoleIndex(int X, int Y){
int resultIndex = -1;
for(Hole hole : holes){
int x0 = hole.getX();
int y0 = hole.getY();
int r = hole.getDiametr()/2;
if(Math.sqrt((x0-X)*(x0-X)+(y0-Y)*(y0-Y))<=r){
resultIndex = holes.indexOf(hole);
break;
}
}
return resultIndex;
}
hole.setX(x+D/2);
hole.setY(5+D/2);
if(hole.getBall() != null){
gc.setBackground(hole.getBall().getColor());
gc.fillOval(x+ballD/2, 5+D/2-ballD/2, ballD,
int selectedHole;
void DoMove(int newSelection){
if(newSelection != -1 && newSelection != selectedHole){
if(holes.get(newSelection).getBall() == null){
if(Math.abs(newSelection - selectedHole) < 3){
ballD);
}
}
}
}
holes.get(newSelection).setBall(holes.get(selectedHole).getBall());
holes.get(selectedHole).ballMoveOut();
}

15.

MainWindow
Третій клас. Продовження.
}
}
selectedHole = - 1;
}
protected void createContents() {
shell = new Shell();
shell.setSize(517, 104);
shell.setText("7 лунок");
selectedHole = -1;
Canvas canvas = new Canvas(shell, SWT.NONE);
Device device = Display.getCurrent ();
Color black = new Color (device, 0, 0, 0);
Color white = new Color (device, 255, 255, 255);
holes.add(new Hole(new Ball(black)));
holes.add(new Hole(new Ball(black)));
holes.add(new Hole(new Ball(black)));
holes.add(new Hole());
holes.add(new Hole(new Ball(white)));
holes.add(new Hole(new Ball(white)));
canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
int D = canvas.getBounds().width / 10;
int height = canvas.getBounds().height;
for(int i=0;i<7;i++){
DrawHole(D, height, i, holes.get(i), e.gc);
}
}
});
canvas.addMouseListener(new MouseAdapter() {
@Override
public void mouseDown(MouseEvent e) {
System.out.println(e.x + ";" + e.y);
if(selectedHole == -1){
selectedHole = GetClickedHoleIndex(e.x, e.y);
}
else{
DoMove(GetClickedHoleIndex(e.x, e.y));
canvas.redraw();
}
}
});
canvas.setBounds(0, 0, 501, 64);
holes.add(new Hole(new Ball(white)));
}

16.

Основні аспекти коду
Модифікатори
доступу, які
я використовував
для створення
даної гри
Модифікатор доступу
Область доступу
public
Без обмежень
private
Тільки з даного класу
protected
З даного класу і його
нащадків
Без модифікатора
Для всіх класів даного
пакету

17.

Основні аспекти коду
Типи даних, що
були використані
в даній курсовій
роботі
Типи даних
Пояснення
Boolean
Логічне значення
true
false
String
Послідовність
символів Юнікоду
Integer
Числові дані
Color
Колір

18.

Основні аспекти коду
Бібліотеки, які
знадобилися в
даній курсовій
роботі
widgets
events
Display
PaintEvent
graphics
Color
Event
Listener
Canvas
PaintListener
MouseAdapter
MouseAdapter
Device
GC

19.

Приклад використання інкапсуляції
Розглянемо на основі класу «Ball»
import org.eclipse.swt.graphics.Color;
public class Ball {
private Color color;
public Ball(Color color){
this.color = color;
}
public Color getColor() {
return color;
}
}

20.

Приклад використання поліморфізму
Розглянемо на основі частини DoMove класу «MainWindow»
void DoMove(int newSelection){
if(newSelection != -1 && newSelection != selectedHole){
if(holes.get(newSelection).getBall() == null){
if(Math.abs(newSelection - selectedHole) < 3){
holes.get(newSelection).setBall(holes.get(selectedHole).getBall());
holes.get(selectedHole).ballMoveOut();}}}
}
Тобто це здатність об'єкта використовувати методи похідного
класу, який не існує на момент створення базового

21.

ІНСТРУКЦІЯ КОРИСТУВАЧА
Для того щоб розпочати гру потрібно її запустити в програмі
Eclipse. Після чого ви побачите меню гри.

22.

Далі вам потрібно пересунути білі кульки на місце чорних
дотримуючись правил гри.

23. Висновки

В ході даної курсової роботи я розробив програму яка
є відображенням цікавої гри «7 лунок». Для створення
даної гри я оволодів основами об’єктно-орієнтованого
програмування, скористався поліморфізмом,
успадкуванням, інкапсуляцією. Також в подальшому цю
гру можна зробити більш досконалою.

24. Список використаної літератури

Васильєв А.Н. Об’єктно-орієнтоване програмування. Java; Навчальний посібник. – СПб.: Пітер, 2011.
– 400 с.
Електронна бібліотека. Wikipedia. [Електронний ресурс] : Веб проргамування на Java. – Режим
доступу: https://uk.wikibooks.org/wiki/Веб-програмування_на_Java
Електронна бібліотека. Wikipedia. [Електронний ресурс] : Освоюємо Java – Режим доступу:
https://uk.wikibooks.org/wiki/Освоюємо_Java
Гіберт Ш.В. Java. Полное руководство, 8-е издание; Посібник програміста. – СПб.: Київ, 2013. – 175 с.
Java посібник. [Електронний ресурс] : Изучаем Java. Обучающие курси. Java-самоучитель:
программирование на языке Java. Режим доступу – http://java-study.ru/samouchitel

25.

Дякую за увагу
Побажання та зауваження надсилати на
[email protected]
English     Русский Правила