Автор работы: Пользователь скрыл имя, 17 Ноября 2011 в 08:04, курсовая работа
Теория игр – раздел математики, предметом которого является изучение математических моделей принятия оптимальных решений в условиях конфликта.
ИГРОЙ называется всякая конфликтная ситуация, изучаемая в теории игр и представляющая собой упрощенную, схематизированную модель ситуации. От реальной конфликтной ситуации игра отличается тем, что не включает второстепенные, несущественные для ситуации факторы и ведется по определенным правилам, которые в реальной ситуации могут нарушаться
sprintf(buf, "%i", this->win_pltwo[a][st]);
this->setOutTblItem(a - 1, 5, QString::fromLocal8Bit(buf));
//Y - приближенное значение цены игры
sprintf(buf, "%.2f", (float)(this->win_plone[a][
this->setOutTblItem(a - 1, 6, QString::fromLocal8Bit(buf));
/**/
a++;
}while(a <= kl);
}
}
Рисунок
4. Проектирование
формы.
Основные компоненты и их назначение:
Для
более приятного диалога с программой
был использован интерфейс под названием
«Plastique», использованный в операционной
системе «Kubuntu».
Для
более удобного использования компоненты
сгруппированы на панелях с заголовками.
Рисунок 5. Сравнение программы со стандартным оформлением и с оформлением «Plastique»
Для написания программы были использованы библиотеки Nokia QT версии 4.5.0 скомпилированные и настроенные на платформу win32 операционной системы Windows.
Программа базируется на типе проекта «GUI приложение QT» (рис. 7.1), и использованными стандартными модулями.
Рисунок 7.1. Создание проекта.
На форме расположены необходимые для работы программы компоненты. Основные использованные классы компонентов:
Рисунок 7.2. Иерархия расположения компонентов на форме.
Main.cpp:
#include <QtGui/QApplication>
#include <QWindowsVistaStyle>
#include <QFile>
#include
"mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
/*
Загрузка таблицы стилей
*/
QFile file(".\\style.txt");
if(file.open(QIODevice::
{
QByteArray line;
while (!file.atEnd())
line += file.readLine();
//Применение таблицы стилей
a.setStyleSheet(QString::
}
MainWindow w;
w.show();
return a.exec();
}
mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "windows.h"
#include
"QWindowsVistaStyle.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void changeEvent(QEvent *e);
private:
int **array;//матрица пользоателя
int m, n;//размерность матрицы пользователя
bool nol;//Все элеметы равны 0?
bool otr;//Наличие отрицательных элементов
int min, max;//Минимальный и максимальный элементы
DWORD win_plone[150][10], win_pltwo[150][10];//Массивы для выигрышей игроков 1 и 2
int a;//Счетчик итераций
int pl;//Игрок
short st,st1,st2;//Стратегии
short kl;//Количество итераций
int PlayerOne();
int PlayerTwo();
void setOutTblItem(int row, int col, QString text);
Ui::MainWindow *ui;
private slots:
void StartBtn();
void SetDefArray();
void UpdateTableRows(int value);
void UpdateTableColumn(int value);
};
#endif // MAINWINDOW_H
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
"QMessageBox.h"
MainWindow::MainWindow(
QMainWindow(parent),
ui(new Ui::MainWindow)
{
//Инициализация графического
ui->setupUi(this);
/*
Установка количества строк и столбцов таблицы
*/
this->ui->tableWidget->
this->ui->tableWidget->
/*
Установка начальных значений для счетчиков
*/
this->ui->spinBox->setValue(3)
this->ui->spinBox_2->setValue(
QHeaderView *h = new QHeaderView(Qt::Horizontal);
h->setDefaultSectionSize(50);
this->ui->tableWidget->
//Активна вкладка "Программа"
this->ui->toolBox->
//Заполнение матрицы значениями по умолчанию
this->SetDefArray();
//Загрузка стартовой страницы справки
this->ui->textBrowser->
//Подключение событий
this->ui->spinBox->connect(
this->ui->spinBox_2->connect(
this->ui->defArrayBtn->
this->ui->startBtn->connect(
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void MainWindow::SetDefArray()
{
short a[3][3] =
{
{0,4,2},
{3,1,0},
{1,2,3}
};
this->ui->tableWidget->
this->ui->tableWidget->
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
{
QTableWidgetItem *item = new QTableWidgetItem(0);
QString s;
item->setText(s.setNum(a[i][j]
this->ui->tableWidget->
}
}
void MainWindow::setOutTblItem(int row, int col, QString text)
{
QTableWidgetItem *item = new QTableWidgetItem(0);
item->setText(text);
item->setTextAlignment(Qt::
item->setFlags(Qt::
this->ui->outTable->setItem(
}
void MainWindow::UpdateTableRows(
{
this->ui->tableWidget->
}
void MainWindow::UpdateTableColumn(
{
this->ui->tableWidget->
}
/*
Функция определения следующего хода для игрока 1
*/
int MainWindow::PlayerOne()
{
int a2, Max;
Max = this->win_plone[this->a][0];
if(this->pl == 1)
a2 = m;
else
a2 = n;
int id = 0;
for(int i = 0; i < a2; i++)
if(this->win_plone[a][i] > Max)
{
Max = this->win_plone[a][i];
id = i;
}
return id;// Max
Информация о работе Описание и программирование матричных игр