Главная
страница 1
Санкт-Петербургский Государственный политехнический университет

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

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

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

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

Студент: Баратынский Александр

Преподаватель: Пышкин Евгений Валерьевич

2012 г.

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


В качестве курсовой работы по программированию предлагается реализация игры «Виселица». Приложение должно быть реализовано на языке программирования C++ с использованием библиотеки QT. Данное приложение должно быть с графическим интерфейсом.

Основные моменты игры:

Суть игры состоит в том, чтобы отгадать предоставленное слово за определенное количество попыток. Графический интерфейс должен выглядеть следующим образом: в верхней части экрана должен появиться набор символов, определяющий количество букв в слове, снизу же должен быть набор кнопок с буквами на них. Пользователь должен нажимать на букву, которую выбрал, она будет зачеркиваться, и, если он ее угадал, то буква должна появиться сверху, если же нет, то слева появится виселица. По мере прохождения, если пользователь плохо отгадывает буквы, на виселице вырисовывается человечек. Победа в игре присуждается, если пользователь угадал слово, поражение – если на виселице полностью вырисовался человечек.

Также, я рассматриваю возможность сделать игру на нескольких языках.


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


Реализовать игру, описанную в первом пункте, на языке программирования С++ с использованием библиотеки QT.

2 этапа разработки игры:



  1. Реализация проекта в консольном режиме

  2. Последующая интеграция кода с библиотекой QT. Реализация графического интерфейса.

Требования к проекту:

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

Выбор языка: русский или английский.



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

При запуске приложения на экран выводится окно, где предлагается выбрать язык. Когда пользователь выбрал язык, подгружается соответствующий текстовый файл со словами. Оттуда выбирается случайное слово и начинается игра.


Требования к консольному режиму


  1. Выбор языка

  2. На экран должна выводиться последовательность _, показывающая количество букв в слове. По мере отгадывания, буквы появляются вместо звездочек.

  3. Должно выводиться число, показывающее число оставшихся попыток.


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


  1. Пункты меню в виде кнопок

  2. Поле игры.

  3. Вместо числа попыток, должна отображаться виселица

  4. Остальные пункты идентичны.
  1. Системная архитектура

Классы консольного приложения


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

  1. class BasicWord

{

protected:

char letter;

string word;

public:

BasicWord();



char mistakes[6];

string getWord();

friend class Library;

};

Класс BasicWord отвечает за представление слова в целом.



  1. class DictionaryWord : public BasicWord

{

public:


DictionaryWord();

void setWord(string dword);

};

Класс DictionaryWord – производный от BasicWord, отвечает за представление словарного слова.



  1. class UserWord : public BasicWord

{

void enterLetter();

public:

UserWord();



void makeUserWord(DictionaryWord dword);

void putMistake(int curMisses);

bool checkLetter(DictionaryWord dword);

void putLetter(DictionaryWord dword);

};

Класс UserWord – производный от BasicWord, отвечает за представление конструируемого пользователем слова.



  1. class Library

{

int randNum;

int var;

DictionaryWord *word;

int numberOfWords(ifstream &in);

DictionaryWord* takeWord(ifstream &in);

public:

Library();



~Library();

DictionaryWord* takeWordOfLang();

int chooseTheme();

};

Класс Library отвечает за взятие слова из текстового файла.



  1. class Man

{

void createMan();

void drawMan();

public:


char man[6];

int maxMisses;

int curMisses;

Man();


void makeMan();

};

Класс Man отвечает за конструирование человечка на виселице.



  1. class Game

{

Man *man;

Library *lib;

DictionaryWord *dword;

UserWord *uword;

bool isWon();

bool isLose();

bool playAgain();

void reset();

~Game();


public:

Game();


int play();

};

Класс Game отвечает за сам игровой процесс.



class Test

{

DictionaryWord *word;



UserWord *uword;

Game *game;

Man *man;

DictionaryWord* takeTheThirdWord();

bool checkTheWord();

bool checkLetter();

bool testCheckLetterMethod();

bool checkPutLetter();

bool checkIsWon();

bool checkIsLose();

public:

Test();


~Test();

bool fullTest();

};
Процесс тестирования приложения:


  1. Метод checkTheWord() проверяет было ли взято то слово, которое планировалось взять.

  2. Метод checkLetter() проверяет работоспособность метода enterLetter() класса UserWord.

  3. Метод testCheckLetterMethod() проверяет работоспособность метода checkLetter(DictionaryWord word) класса UserWord.

  4. Метод checkPutLetter() проверяет, вставилась ли угаданная буква на нужное место.

  5. Метод checkIsWon() проверяет метод isWon() класса Game.

  6. Метод checkIsLose() проверяет метод isLose() класса Game.

Функциональность консольного приложения

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

  2. Затем появляется изображение виселицы, составленное из определенных символов.

  3. Ниже виселицы появляется маска слова.

  4. Затем пользователю предлагается ввести букву, которая, по его мнению, должна быть в слове.

  5. Если буква есть в слове, она появляется, если же нет – то на виселице появляются части тела человечка, реализованные в классе Man.

  6. Игра заканчивается, когда заканчивается количество попыток угадать букву или же, когда пользователь отгадывает слово.

  7. Далее пользователю предлагается начало новой игры.

Классы графического приложения


К вышеизложенным классам консольного интерфейса добавляются следующие классы:

  1. class MainWidget : public QWidget

{

Q_OBJECT


public:

explicit MainWidget(QWidget *parent = 0);

~MainWidget();

Game *game;

IfLoseWidget *iflose;

IfWinWidget *ifwin;

void connectButtons();

void makeLabel();

void addWidgets(QGridLayout *layout);

void checkLetter();

public:

void play();



protected:

void paintEvent(QPaintEvent *event);

private slots:

void on_a_clicked();

void on_b_clicked();

void on_c_clicked();

void on_d_clicked();

void on_e_clicked();

void on_f_clicked();

void on_g_clicked();

void on_h_clicked();

void on_i_clicked();

void on_j_clicked();

void on_k_clicked();

void on_l_clicked();

void on_m_clicked();

void on_n_clicked();

void on_o_clicked();

void on_p_clicked();

void on_q_clicked();

void on_r_clicked();

void on_s_clicked();

void on_t_clicked();

void on_u_clicked();

void on_v_clicked();

void on_w_clicked();

void on_x_clicked();

void on_y_clicked();

void on_z_clicked();

private:


Ui::MainWidget *ui;

};

Этот класс отвечает за представление английского интерфейса.



  1. class RussianWidget : public QWidget

{

Q_OBJECT


public:

explicit RussianWidget(QWidget *parent = 0);

~RussianWidget();

Game *game;

RusLoseWidget *iflose;

RusWinWidget *ifwin;

void connectButtons();

void makeLabel();

void addWidgets(QGridLayout *layout);

void checkLetter();

public:

void play();



protected:

void paintEvent(QPaintEvent *event);

private slots:

void on_pushButton_clicked();

void on_pushButton_2_clicked();

void on_pushButton_3_clicked();

void on_pushButton_4_clicked();

void on_pushButton_5_clicked();

void on_pushButton_6_clicked();

void on_pushButton_7_clicked();

void on_pushButton_8_clicked();

void on_pushButton_9_clicked();

void on_pushButton_10_clicked();

void on_pushButton_11_clicked();

void on_pushButton_12_clicked();

void on_pushButton_13_clicked();

void on_pushButton_14_clicked();

void on_pushButton_15_clicked();

void on_pushButton_16_clicked();

void on_pushButton_24_clicked();

void on_pushButton_23_clicked();

void on_pushButton_22_clicked();

void on_pushButton_21_clicked();

void on_pushButton_20_clicked();

void on_pushButton_19_clicked();

void on_pushButton_18_clicked();

void on_pushButton_17_clicked();

void on_pushButton_32_clicked();

void on_pushButton_31_clicked();

void on_pushButton_30_clicked();

void on_pushButton_29_clicked();

void on_pushButton_28_clicked();

void on_pushButton_27_clicked();

void on_pushButton_26_clicked();

void on_pushButton_25_clicked();

private:


Ui::RussianWidget *ui;

};

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



  1. class MainWindow : public QMainWindow

{

Q_OBJECT


public:

explicit MainWindow(QWidget *parent = 0);

~MainWindow();

private slots:

void on_pushButton_clicked();

void on_pushButton_2_clicked();

private:

Ui::MainWindow *ui;

};

Этот класс отвечает за начальное окно.



Также имеются вспомогательные классы, реализующие взаимодействие с пользователем.

Графический интерфейс приложения


Главное окно приложения:

При нажатии на одну из кнопок, вызывается один из виджетов – MainWidget для английского языка и RussianWidget для русского.

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

Середина игры:



При нажатии на кнопку с буквой, она исчезает.



Конец игры:



Если на виселице полностью прорисовался человечек, то открывается виджет IfLose, при нажатии на кнопку “Да”, заново создается основной виджет, а открытый закрывается. При нажатии на кнопку “Нет”, приложение закрывается.


Смотрите также:
Курсовая работа по курсу «Программирование» Тема работы: «Разработка приложения с графическим интерфейсом на языке программирования С++ с использованием библиотеки qt»
108.12kb.
1 стр.
Курсовая работа по курсу «Программирование» Тема работы: «Разработка приложения с графическим интерфейсом на языке C++ с использованием библиотеки qt»
301.1kb.
1 стр.
Программа курса «Программирование на языке С++»
31.04kb.
1 стр.
Программа работы с базой данных, роль которых выполняет сервер Mysql, написана на языке программирования php с использованием Фреймворка CodeIgniter, благодаря этому мы имеем высокую скорость доступа к необходимой информации
266.9kb.
1 стр.
Курсовая работа 230201 Информационные системы и технологии на предприятиях
146.74kb.
1 стр.
Лекция 16: Программирование на языке vba
133.64kb.
1 стр.
Курсовая работа По курсу " организация процессов данных и приложений "
211.2kb.
1 стр.
Лабораторная работа Использование стандартных компонентов в C++ Builder
87.05kb.
1 стр.
Программа по курсу: современные технологии программирования на языке java (по выбору) по направлению
39.86kb.
1 стр.
Годовой план работы библиотеки мбоу «Суксинская сош» на 2012-2013 учебный год Тема работы библиотеки Роль библиотеки в повышении конкурентоспособности системы образования Задачи библиотеки
187.84kb.
1 стр.
Курсовая работа на тему
473.95kb.
1 стр.
Тема: “Разработка подхода к изучению объектно-ориентированного программирования на примере решения задачи части а егэ по информатике с использованием свободно-распространяемого программного обеспечения lazarus” Направление
100.73kb.
1 стр.