Логическая игра "Морской бой"

Приемы практического использования объектно-ориентированного подхода в создании законченного программного продукта. Разработка кроссплатформенной компьютерной игры "Морской бой". Принципы "хорошего стиля программирования 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.