Заключение.
В результате выполнения работы была разработана программа «Ping-Pong». Кроме того, она может быть существенно дополнена и оптимизирована.
Для написания и отладки программы понадобилось привлечь немалое количество дополнительной информации, потратить немало сил и времени. Были улучшены знания языка C++ и кроссплатформенной библиотеки Qt.
Список использованной литературы.
1. Интернет-источники:
Уроки по Qt: http://www.youtube.com/playlist?list=PLbmlzoDQrXVHDN2nBogk7qy-4DzgyNhNq
http://www.cyberforum.ru/qt/thread79698.html
https://ru.wikipedia.org/
2. Письменные источники:
Qt 5.3. Профессиональное программирование на C++. Автор: Макс Шлее.
Скриншоты программы.
Рисунок 1. Главное меню
Рисунок 2. Начало игрового процесса
Исходный код программы.
main.cpp
#include <QApplication>#include "mainwindow.h"#include "ui_dialog.h" int main(int argc, char *argv[]){ QApplication a(argc, argv); Dialog w; w.show(); return a.exec();}
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent):
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
sWindow = new MainWindow();
|
|
}
Dialog::~ Dialog ()
{
delete ui;
}
void Dialog::on_pushButton_clicked()
{
sWindow->show();
this->close();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "gameplay.h"
#include <QGraphicsScene>
#include <QGraphicsRectItem>
#include <QGraphicsEllipseItem>
#include <QPen>
#include <QResizeEvent>
MainWindow::MainWindow(QWidget *parent):
QMainWindow(parent),
ui(new Ui::MainWindow),
Score (0)
{
ui->setupUi(this);
QGraphicsScene *scene = new QGraphicsScene(this);
QGraphicsRectItem *p1 = new QGraphicsRectItem(0, 0, 80, 20);
p1->setBrush(QBrush(Qt::green));
QGraphicsRectItem *p2 = new QGraphicsRectItem(0, 0, 80, 20);
p2->setBrush(QBrush(Qt::blue));
QGraphicsEllipseItem *ball = new QGraphicsEllipseItem(0, 0, 13, 13);
ball->setBrush(QBrush(Qt::magenta));
ui->graphicsView->setScene(scene);
Loop = new Gameplay(*scene, p1, p2, ball, this);
QSize m(scene->sceneRect().size().width() + 10, scene->sceneRect().size().height() + 10);
ui->graphicsView->setMinimumSize(m);
resize(minimumSize());
ui->graphicsView->installEventFilter(Loop);
QObject::connect(Loop, SIGNAL(goal(int)),this, SLOT(addScore(int)));
}
MainWindow::~ MainWindow ()
{
delete ui;
}
void MainWindow::addScore(int count)
{
Score -= count;
ui->lcdNumber->display(Score);
}