Логическая игра "Морской бой"
Приемы практического использования объектно-ориентированного подхода в создании законченного программного продукта. Разработка кроссплатформенной компьютерной игры "Морской бой". Принципы "хорошего стиля программирования C++/Qt". Описание классов игры.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 12.08.2014 |
Размер файла | 2,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
QLabel *label;
QRadioButton *man;
QRadioButton *computer;
QPushButton *button;
QVBoxLayout *layout;
signals:
void SMSignal();
public slots:
void newGame();
protected:
void output();
};
#endif // SELECTMODE_H
Файл selectmode.cpp
#include "selectmode.h"
SelectMode::SelectMode()
{
label = new QLabel("Выберите режим игры");
man = new QRadioButton(tr("Игра с человеком"));
computer = new QRadioButton(tr("Игра с компьютером"));
button = new QPushButton(tr("OK"));
layout = new QVBoxLayout;
output();
QObject::connect(button, SIGNAL(clicked()), this, SLOT(newGame()));
}
void SelectMode::output()
{
layout->addWidget(label);
layout->addWidget(man);
layout->addWidget(computer);
layout->addWidget(button);
setLayout(layout);
}
void SelectMode::newGame()
{
if(man->isChecked()||computer->isChecked())
{
emit SMSignal();
this->close();
}
else
QMessageBox::warning(NULL, "Warring", tr("Вы не выбрали режим игры!"));
}
SelectMode::~SelectMode()
{
}
Файл ships.h
#ifndef SHIPS_H
#define SHIPS_H
#include <QObject>
class Ships : public QObject
{
public:
Ships();
~Ships();
int amountDeck;
int **location;
virtual void checkKilled(int array[10][10]);
};
#endif // SHIPS_H
Файл ships.cpp
#include "ships.h"
Ships::Ships()
{
}
void Ships::checkKilled(int array[10][10])
{
}
Ships::~Ships()
{
}
Файл startwidget.h
#ifndef STARTWIDGET_H
#define STARTWIDGET_H
#include <QtGui>
#include <QFile>
#include <QApplication>
#include "putname.h"
#include "selectmode.h"
#include "mainwindow.h"
class StartWidget : public QWidget
{
Q_OBJECT
public:
StartWidget();
~StartWidget();
QPushButton *newGame;
QPushButton *loadGame;
QPushButton *quitGame;
QVBoxLayout *layout;
PutName *PN;
SelectMode *SM;
MainWindow *MW;
int mode;
int load;
QString pName[2];
int i;
signals:
void SWSignal();
public slots:
void setName();
void setMode();
void getCfg();
void showMW();
void setSecondName();
void checkFile();
void Exit();
protected:
void output();
void paintEvent(QPaintEvent *event);
};
#endif // STARTWIDGET_H
Файл startwidget.cpp
#include "startwidget.h"
StartWidget::StartWidget()
{
newGame = new QPushButton(tr("Новая игра"));
loadGame = new QPushButton(tr("Загрузить игру"));
quitGame = new QPushButton(tr("Выход"));
layout = new QVBoxLayout;
PN = new PutName;
SM = new SelectMode;
MW = new MainWindow;
SM->setModal(true);
PN->setModal(true);
i=0;
mode=0;
load=0;
setFixedSize(500,500);
output();
QObject::connect(quitGame, SIGNAL(clicked()), this, SLOT(Exit()));
QObject::connect(newGame, SIGNAL(clicked()), this, SLOT(setMode()));
QObject::connect(loadGame, SIGNAL(clicked()), this, SLOT(checkFile()));
QObject::connect(SM, SIGNAL(SMSignal()), this, SLOT(setName()));
QObject::connect(MW, SIGNAL(loadGame()), this, SLOT(checkFile()));
QObject::connect(MW, SIGNAL(startNew()), this, SLOT(setMode()));
}
void StartWidget::output()
{
QFont font;
font.setPointSizeF(18);
font.setBold(true);
newGame->setFont(font);
newGame->setStyleSheet("background-color: yellow");
loadGame->setFont(font);
loadGame->setStyleSheet("background-color: yellow");
quitGame->setFont(font);
quitGame->setStyleSheet("background-color: yellow");
newGame->setFixedSize(200, 70);
loadGame->setFixedSize(200, 70);
quitGame->setFixedSize(200, 70);
layout->setAlignment(Qt::AlignCenter);
layout->setSpacing(30);
layout->addWidget(newGame, Qt::AlignCenter);
layout->addWidget(loadGame, Qt::AlignCenter);
layout->addWidget(quitGame, Qt::AlignCenter);
setLayout(layout);
}
void StartWidget::paintEvent(QPaintEvent *event)
{
QString path=QApplication::applicationDirPath()+"/sea.jpeg";
QPixmap background(path);
QPainter painter(this);
painter.fillRect(0, 0, 500, 500, QBrush(Qt::black, background));
painter.end();
}
void StartWidget::setName()
{
if(SM->man->isChecked())
{
PN->label->setText("Введите имя первого игрока:");
PN->show();
QObject::connect(PN, SIGNAL(PNSignal()), this, SLOT(getCfg()));
QObject::connect(PN->button, SIGNAL(clicked()), this, SLOT(setSecondName()));
}
else
{
pName[1]="Компьютер";
mode=1;
PN->label->setText("Введите Ваше имя:");
PN->show();
QObject::connect(PN, SIGNAL(PNSignal()), this, SLOT(getCfg()));
QObject::connect(PN->button, SIGNAL(clicked()), this, SLOT(showMW()));
PN->edit->clear();
}
}
void StartWidget::setSecondName()
{
if(!PN->edit->text().isEmpty())
{
QObject::disconnect(PN->button, SIGNAL(clicked()), this, SLOT(setSecondName()));
i++;
PN->edit->clear();
PN->label->setText("Введите имя второго игрока:");
PN->show();
QObject::connect(PN, SIGNAL(PNSignal()), this, SLOT(getCfg()));
QObject::connect(PN->button, SIGNAL(clicked()), this, SLOT(showMW()));
PN->edit->clear();
}
}
void StartWidget::setMode()
{
QObject::disconnect(PN, SIGNAL(PNSignal()), this, SLOT(checkFile()));
PN->edit->clear();
SM->show();
}
void StartWidget::getCfg()
{
pName[i]=PN->playerName;
}
void StartWidget::showMW()
{
if(load!=0)
{
MW->difinMode(mode, pName[0], pName[1], load);
MW->show();
MW->newGameWidget();
this->close();
PN->close();
QObject::disconnect(PN, SIGNAL(PNSignal()), MW, SLOT(newGameWidget()));
}
else
if(!PN->edit->text().isEmpty())
{
MW->difinMode(mode, pName[0], pName[1], load);
MW->show();
this->close();
PN->close();
MW->newGameWidget();
}
}
void StartWidget::checkFile()
{
QString str=QApplication::applicationDirPath()+"/users/";
QObject::disconnect(PN, SIGNAL(PNSignal()), this, SLOT(checkFile()));
QString fileName=QFileDialog::getOpenFileName(this, tr("Откройте файл"), str, tr("Save Files (*.xml)"));
QFile file;
file.setFileName(fileName);
if(file.exists())
{
PN->close();
MW->show();
MW->path = fileName;
MW->readFile(fileName);
this->close();
}
}
void StartWidget::Exit()
{
int res = QMessageBox::warning(this, "Внимание!", tr("Вы уверены, что хотите выйти?"), QMessageBox::Yes, QMessageBox::No);
if(res==QMessageBox::Yes)
{
exit(0);
}
}
StartWidget::~StartWidget()
{
}
Размещено на Allbest.ur
Подобные документы
Описание правил игры "Морской бой". Особенности современных компьютеров и искусственного интеллекта. Создание общей блок-схемы программы, ее внешний вид. Необходимые переменные, процедуры и функции. Характеристика объектов, используемых в приложении.
курсовая работа [950,1 K], добавлен 05.11.2012Проектирование игры "Морской бой" путем составления диаграмм UML, IDEF0, DFD, моделирующих требования к программе. Разработка программы с использованием языка C# и фреймворка.NETFramework 3.5. Тестирование белого ящика и альфа-тестирование продукта.
курсовая работа [3,9 M], добавлен 24.10.2013Описание алгоритма хода ЭВМ в режиме "пользователь-компьютер" в игре "Морской бой". Описание совокупности классов, их полей и методов. Разработка интерфейса и руководства пользователя по проведению игры. Листинг программы, написанной на языке Java.
курсовая работа [645,0 K], добавлен 26.03.2014Характеристика основных принципов объектно-ориентированного программирования. Этапы разработки программы на языке C++, реализующей игру "Морской бой". Выбор языка программирования. Характеристика необходимых классов, наследований, виртуальных методов.
курсовая работа [657,6 K], добавлен 17.06.2012Общие сведения и существующие среды реализации компьютерной игры "Лабиринт". Разработка алгоритмов в виде блок-схемы, принципы программной реализации игры. Особенности тестирования разработанного программного продукта. Аспекты эксплуатации продукта.
курсовая работа [1,4 M], добавлен 18.01.2017Описание предметной области. Контроль и методы доступа. Работа с графикой в С++ Builder. Программирование игры "Воздушный бой" с использованием основных принципов объектно-ориентированного программирования. Принципы работы конструкторов и деструкторов.
курсовая работа [901,0 K], добавлен 31.05.2015Особенности визуальной среды программирования Microsoft Visual Studio 2015 Enterprise. Средства объектно-ориентированного программирования. Этапы проектирования программного комплекса. Отладка и тестирование программы игры "Виселица".
курсовая работа [2,4 M], добавлен 31.01.2016Порядок разработки программы, реализующей игру "Морской бой" в режиме пользователь – компьютер. Основные свойства объектно-ориентированного программирования. Создание нескольких классов, которые будут взаимодействовать между собой, другие свойства ООП.
курсовая работа [570,3 K], добавлен 11.06.2010Разработка объектно-ориентированной модели животного, которая объясняется построением модели игры Terrarium. Модель построена на базе концепций объектно-ориентированного программирования. Разработка компонента, моделирующего поведение животного.
курсовая работа [23,2 K], добавлен 30.11.2008Особенности программирования аркадных игр в среде Python. Краткая характеристика языка программирования Python, его особенности и синтаксис. Описание компьютерной игры "Танчики" - правила игры, пояснение ключевых строк кода. Демонстрация работы программы.
курсовая работа [160,3 K], добавлен 03.12.2014