Similar presentations:
Створення ігрової програми «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]