Кафедра компьютерных систем и программных технологий Курсовая работа по курсу «Программирование» Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt»




Скачать 145.21 Kb.
НазваниеКафедра компьютерных систем и программных технологий Курсовая работа по курсу «Программирование» Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt»
Дата публикации16.06.2013
Размер145.21 Kb.
ТипКурсовая
vbibl.ru > Информатика > Курсовая
Санкт-Петербургский Политехнический Государственный Университет

факультет технической кибернетики

Кафедра компьютерных систем и программных технологий

Курсовая работа по курсу «Программирование»

Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки QT»


Работу выполнил:

студентка 1 курса

группы 1081/3

Назарова К. Е.
Работу принял:

Пышкин Е. В.

Санкт-Петербург 2012

Образ и границы проекта


Целью данного проекта является разработка проекта с графическим интерфейсом на языке C++ на примере игры «Sunny Seeds».

Суть игры заключается в том, чтобы очистить поле от всех чисел.

Правила игры:

  1. На входе таблица случайных чисел от 1 до 9;

  2. Требуется найти пары одинаковых чисел или чисел, сумма которых равна 10, в случае чего они исчезнут;

  3. Числа, которые можно удалить, должны располагаться на одном уровне по горизонтали или вертикали, при этом между ними не должно быть других чисел;

  4. При необходимости можно добавить новую группу чисел, состоящую из оставшихся на поле цифр (это дает гарантию выигрыша, но для того, чтобы игра не была бесконечной, доступное количество добавлений будет ограничено).
^

Техническое задание


Разработать приложение на языке C++ с использованием библиотеки Qt для реализации графического интерфейса в двух режимах:

  1. Консольное приложение, предназначенное для тестирования и проверки правильности работы приложения;

  2. Интеграция кода программы для консоли с графической библиотекой Qt, и создание графического интерфейса.

Основные требования

Меню приложения:

  1. Новая игра;

  2. Продолжить сохраненную игру;

  3. Выход.

Сценарии выполнения программы

  1. Новая игра

При выборе этого пункта перед пользователем появляется игровое поле;

  1. Продолжить сохраненную игру

При нажатии на эту кнопку меню загрузится последняя сохраненная игра (данные хранятся в текстовом формате в документе Save.txt);

  1. Выход

Выход из приложения. При этом все данные незаконченной игры будут потеряны.

Требования к графическому интерфейсу

  1. На входе стартовое меню в виде кнопок;

  2. Удаление пар чисел и выбор других действий производится посредством нажатия левой кнопки мыши.


^

Системная архитектура



В консольном приложении используются следующие классы:

  1. Игровое поле. Этот класс создает вектор, состоящий из элементов класса Row. Размер поля зависит от выбранного разработчиком числа. По мере необходимости добавляет строки с требуемыми значениями.


class Field{

int rows;

bool saveField;

public:

Field();

Field(int a);

~Field();

vectorfield;

bool deleteCell(int, int, int, int);

void deleteEmptyRow();

void addCells();

void getState(bool);

void saveGame();

void loadGame();

int getRows();

};


  1. Строка. Этот класс хранит в себе строку из 7 элементов, которая заполняется случайными числами.


class Row{

vector arr;

vector isPressed;

public:

Row();

int getData(int);

void setData(int number, int value);

void clearCell(int a);

void setStateIsPressed(int, bool);

bool getStateIsPressed(int);

};


  1. Проверка хода. С помощью методов этого класса в ходе игры проверяются все ходы, сделанные игроком, а так же проверяется конец игры.


class Check{

Field f;

bool checkSameValues(int, int, int, int);

bool checkSumValues(int, int, int, int);

bool checkPlace(int, int, int, int);

bool nullValue(int, int, int, int);

bool checkSamePlace(int, int, int, int);

bool checkLoss();

bool checkWin();

public:

Check();

Check(Field&);

bool checkMove(int, int, int, int);

bool getLoss();

bool getWin();

};


  1. Тест. Класс, тестирующий некоторые функции других классов.


class Test{

public:

Test();

bool nearSameNumber();

bool emptyOrFilledCell();

bool sameNumThroughEmptyCell();

};
В графической реализации программы добавляется еще один класс, отвечающий за представление игры:

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

explicit MainWindow(QWidget *parent = 0);

~MainWindow();

protected:

bool firstClick;

int startX, startY, finishX, finishY;

virtual void paintEvent(QPaintEvent *);

void mousePressEvent(QMouseEvent *event);

void leftButtonPressEvent(QMouseEvent* event);

void closeEvent(QCloseEvent *event);

bool outLoss();

bool outWin();

private slots:

void on_actionNew_game_activated();

void on_pushButton_clicked();

void on_actionExit_activated();

void on_verticalScrollBar_valueChanged(int value);

void on_actionContinued_activated();

private:

Ui::MainWindow *ui;

Field f;

int myVar;

};
Тестирование работы приложения

Файл test.h

#ifndef TEST_H

#define TEST_H

#include "field.h"

class Test{

public:

Test();

bool nearSameNumber();

bool emptyOrFilledCell();

bool sameNumThroughEmptyCell();

};

#endif // TEST_H

Файл test.cpp

#include "test.h"

Test::Test()

{

if (nearSameNumber())

cout << "Test #1 passed."<
else cout << "Test #1 didn't pass."<
cout<
if (emptyOrFilledCell())

cout << "Test #2 passed."<
else cout << "Test #2 didn't pass."<
cout<
if (sameNumThroughEmptyCell())

cout << "Test #3 passed."<
else cout << "Test #3 didn't pass."<
cout<
}

bool Test::nearSameNumber(){

cout<<"Test #1. The choice of identical adjacent numbers."<
Field f(3);

cout<
f.field[0].setData(0, 1);

f.field[0].setData(1, 1);

cout<
return f.deleteCell(1, 1, 1, 2);

}

bool Test::emptyOrFilledCell(){

cout<<"Test #2. The choice of empty and filled cell."<
Field c(3);

cout<
c.field[0].setData(0, 0);

c.field[0].setData(1, 1);

cout<
return c.deleteCell(1, 1, 1, 2);

}

bool Test::sameNumThroughEmptyCell(){

cout<<"Test #3. The choice of identical numbers, among which is an empty cell."<
Field f(3);

cout<
f.field[2].setData(4, 1);

f.field[1].setData(4, 0);

f.field[0].setData(4, 1);

cout<
return f.deleteCell(3, 5, 1, 5);

}
Первый тест заключается в том, чтобы проверить рядом стоящие одинаковые числа. Создается поле 3х7, в котором в ячейках с координатами [0, 0] и [0, 1] стоят единицы. Выбирается эта пара цифр, затем удаляется. Следовательно, тест пройден, так как соблюдены все правила.
Второй тест заключается в том, чтобы проверить рядом стоящие не одинаковые числа. Создается поле 3х7, в котором ячейках с координатами [0, 0] пустая, а в ячейке [0, 1] стоит единица. Выбирается эта пара ячеек, затем выходит сообщение, что тест не пройден, так как выбраны неверные значения.
Суть третьего теста в том, чтобы проверить одинаковые числа, между которыми стоят пустые ячейки. Создается поле 3х7, в котором в ячейках с координатами [2, 4] и [0, 4] стоят единицы, а ячейка с координатами [1, 4] пустая. Выбирается пара, затем удаляется. Следовательно, тест пройден, так как соблюдены все правила.
^

Описание испытаний графического интерфейса


Начальное окно приложения

d:\политех\программирование\курсовая№1\снимок.png

Поле после удаления некоторых ячеек

d:\политех\программирование\курсовая№1\снимок1.png

Поле после добавления не нулевых ячеек (нажатие на кнопку “Add”)

d:\политех\программирование\курсовая№1\снимок2.png

Состояние проигрыша

d:\политех\программирование\курсовая№1\снимок3.png

Выход из игры и предложение сохранить текущее состояние

d:\политех\программирование\курсовая№1\снимок4.png

Данные сохраняются в текстовом документе Save.txt в виде двумерного массива

d:\политех\программирование\курсовая№1\снимок5.png

Вывод


Благодаря выполнению этого курсового проекта, я узнала, какие возможности представляет QtCreator, освоила некоторые функции и библиотеки, использованные для написания программы с графическим интерфейсом. В ходе работы возникали проблемы с созданием игрового поля, но они были решены посредством использования контейнерного класса vector. В дальнейшем планируется некоторая доработка программы, в частности, добавление возможности подсчета заработанных очков, следовательно, и рейтинговой таблицы.
^

Летняя практика


В рамках летней практики были произведены следующие изменения курсового проекта:

  1. Фиксированный размер диалогового окна;

  2. Измененный интерфейс;

  3. Добавлена возможность отмены последнего хода;

  4. Новые пункты меню;

  5. Добавлена привязка клавиш к кнопкам диалогового окна;

  6. Добавлено звуковое сопровождение.

Теперь окно программы выглядит следующим образом:



  1. Фиксированный размер окна приложения

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

MainWindow w;

w.setFixedSize(380, 380);

w.setWindowTitle("Sunny Seeds");

w.show();




  1. Измененный интерфейс



Добавлена фоновая картинка и некоторые дополнительные значки.
QPalette pal;

pal.setBrush(w.backgroundRole(), QBrush(QPixmap("img2.jpg")));

w.setPalette(pal);

w.setAutoFillBackground(true);


  1. Возможность отмены последнего хода


При неверном выборе, можно вернуть последнюю удаленную пару чисел. Осуществить отмену можно посредством нажатия на добавленную кнопку Cancel, либо нажать на Backspace, используя клавиатуру.
void MainWindow::on_pushButton_2_clicked(){

QSound::play("2.wav");

if (f.getStatus()){

f.setCanceled(1);

emit f.lastCells(startX, startY, finishX, finishX);

}

repaint();

}
int Field::setCanceled(int amt){

canceled+=amt;

return canceled;

}
bool Field::getStatus(){

return canceled
}
void Field::lastCells(int a1, int a2, int b1, int b2){

field[--a1].setData(--a2, firstB);

field[--b1].setData(--b2, secondB);

}


  1. Новые пункты меню

Для удобства в содержание меню были добавлены кнопки добавления ячеек и отмены хода. Так же в меню указаны клавиши, которые можно использовать для управления клавиатурой.



  1. Добавлена привязка клавиш к кнопкам


Теперь управлять игрой можно и используя клавиатуру. Так, например, чтобы добавить новые ячейки можно просто нажать на Enter, чтобы начать новую игру или продолжить сохраненную, требуется нажать F2 или F4 соответственно, а также для выхода из игры можно просто нажать Esc.


  1. Звуковое сопровождение


При нажатии на цифры либо при выборе каких-либо действий издается соответствующий звук, который приносит некоторое разнообразие в процесс игры.

Добавить документ в свой блог или на сайт

Похожие:

Кафедра компьютерных систем и программных технологий Курсовая работа по курсу «Программирование» Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt» iconКафедра компьютерных систем и программных технологий Курсовая работа...
Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt»

Кафедра компьютерных систем и программных технологий Курсовая работа по курсу «Программирование» Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt» iconКафедра компьютерных систем и программных технологий Курсовая работа...
Целью данной работы является выявление статистической закономерности демографической ситуации в странах на примере естественного...

Кафедра компьютерных систем и программных технологий Курсовая работа по курсу «Программирование» Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt» icon«Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt»
Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt»

Кафедра компьютерных систем и программных технологий Курсовая работа по курсу «Программирование» Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt» icon«Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt»
Курсовая работа посвящена разработке компьютерного приложения «Блек-джек». В игре должны быть реализованы правила данной игры

Кафедра компьютерных систем и программных технологий Курсовая работа по курсу «Программирование» Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt» icon«Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt»
Курсовая работа посвящена разработке программного обеспечения для компьютерной игры Змейка

Кафедра компьютерных систем и программных технологий Курсовая работа по курсу «Программирование» Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt» icon«Разработка приложения с графическим интерфейсом на языке программирования...
В качестве курсовой работы по программированию предлагается реализация игры «Виселица». Приложение должно быть реализовано на языке...

Кафедра компьютерных систем и программных технологий Курсовая работа по курсу «Программирование» Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt» iconОбъектно-ориентированное программирование
Курсовая работа по специальности 230201 «Информационные системы и технологии»: М. 2012 г., Мирэа, факультет Информационных технологий,...

Кафедра компьютерных систем и программных технологий Курсовая работа по курсу «Программирование» Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt» iconЛабораторная работа №6 Итоговое задание «Логическое программирование на языке Visual Prolog»
Получить практические навыки применения систем и языков логического программирования для построения систем, основанных на знаниях....

Кафедра компьютерных систем и программных технологий Курсовая работа по курсу «Программирование» Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt» iconТехническое задание
Программный комплекс состоит из двух компонент: базы данных для хранения документов, описаний к ним и шаблонов и управляющего web-приложения...

Кафедра компьютерных систем и программных технологий Курсовая работа по курсу «Программирование» Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt» iconПрактическая работа №1 Тема. Разработка базы данных реализации маркетинговой...
Тема. Разработка базы данных реализации маркетинговой задачи с использованием средств информационных технологий (ms excel, ms access,...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
vbibl.ru
Главная страница