[[dama]]
 
#ifndef MOJEOKNO_H
#define MOJEOKNO_H
 
#include <QMainWindow>
#include <QTableWidgetItem>
#include <QTreeWidgetItem>
 
namespace Ui {
class MojeOkno;
}
 
class MojeOkno : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MojeOkno(QWidget *parent = 0);
    ~MojeOkno();
 
private:
    int pocet;
    int pole [8];
    void umisti (int k);
 
private slots:
    void on_horizontalSlider_sliderMoved(int position);
    void on_actionRun_triggered();
 
private:
    Ui::MojeOkno *ui;
};
 
#endif // MOJEOKNO_H
#include "mojeokno.h"
#include "ui_mojeokno.h"
#include <cassert>
 
QString sloupec (int x)
{
    return QString ('a' + x);
}
 
QString radka (int y)
{
    return QString ('8' - y);
}
 
QString popis (int x, int y)
{
    return sloupec (x) + radka (y);
}
 
void setupTable (QTableWidget * table)
{
    table->setColumnCount (8);
    table->setRowCount (8);
 
    int h = table->rowHeight (0);
    for (int i = 0; i <= 7; i++)
        table->setColumnWidth (i, h);
 
    QStringList list;
    for (int i = 0; i <= 7; i++)
        list << sloupec (i);
    table->setHorizontalHeaderLabels(list);
 
    list.clear();
    for (int i = 0; i <= 7; i++)
        list << radka (i);
    table->setVerticalHeaderLabels(list);
}
 
MojeOkno::MojeOkno(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MojeOkno)
{
    ui->setupUi(this);
 
    setupTable (ui->tableWidget);
}
 
MojeOkno::~MojeOkno()
{
    delete ui;
}
 
 
void MojeOkno::umisti (int k)
{
    for (int i = 0; i <= 7; i ++)
    {
        bool ok = true;
        for (int j = 0; j < k ; j++)
            if (pole [j] == i || pole [j] == i-(k-j) || pole [j] == i+(k-j))
                ok = false;
 
        if (ok)
        {
            QString s = QString::number (k);
            QColor c = QColor::fromHsv((k*30) % 256, 200, 255);
 
            QTableWidgetItem * p = new QTableWidgetItem;
            p->setText (s);
            p->setTextColor(QColor ("red"));
            p->setBackgroundColor(c);
            ui->tableWidget->setItem(i, k, p);
 
            pole [k] = i;
 
            if (k < 7)
                umisti (k+1);
            else
            {
                QTableWidget * t = new QTableWidget;
                setupTable (t);
                for (int i = 0; i <= 7; i++)
                    for (int j = 0; j <= 7; j++)
                    {
                        QTableWidgetItem * u = ui->tableWidget->item (j, i);
                        if (u != NULL)
                            t->setItem (j, i, u->clone ());
                    }
 
                pocet ++;
                ui->tabWidget->addTab (t, QString::number(pocet));
            }
 
            delete p;
        }
    }
}
 
void MojeOkno::on_actionRun_triggered()
{
    ui->tableWidget->clearContents ();
 
    ui->tabWidget->clear ();
 
    for (int i = 0; i <= 7; i++)
        pole [i] = 0;
 
    pocet = 0;
    umisti (0);
 
    ui->horizontalSlider->setMinimum (1);
    ui->horizontalSlider->setMaximum (pocet);
}
 
void MojeOkno::on_horizontalSlider_sliderMoved(int position)
{
    ui->tabWidget->setCurrentIndex (position-1);
}
 
dama.txt · Last modified: 2013/04/17 11:26 by 147.32.8.22
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki