亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tictactoe.cpp

?? 關于嵌入式的QT圖形用戶界面C GUI Programming with QT4書籍的配套源碼
?? CPP
字號:
#include <QtGui>#include "tictactoe.h"TicTacToe::TicTacToe(QWidget *parent)    : QWidget(parent){    clearBoard();    if (qApp->isSessionRestored())        restoreState();    setWindowTitle(tr("Tic-Tac-Toe"));}QSize TicTacToe::sizeHint() const{    return QSize(200, 200);}void TicTacToe::clearBoard(){    for (int row = 0; row < 3; ++row) {        for (int column = 0; column < 3; ++column) {            board[row][column] = Empty;        }    }    turnNumber = 0;}void TicTacToe::restoreState(){    QFile file(sessionFileName());    if (file.open(QIODevice::ReadOnly)) {        QTextStream in(&file);        for (int row = 0; row < 3; ++row) {            for (int column = 0; column < 3; ++column) {                in >> board[row][column];                if (board[row][column] != Empty)                    ++turnNumber;            }        }    }    update();}QString TicTacToe::sessionFileName() const{    return QDir::homePath() + "/.tictactoe_" + qApp->sessionId() + "_"           + qApp->sessionKey();}QString TicTacToe::saveState() const{    QFile file(sessionFileName());    if (file.open(QIODevice::WriteOnly)) {        QTextStream out(&file);        for (int row = 0; row < 3; ++row) {            for (int column = 0; column < 3; ++column)                out << board[row][column];        }    }    return file.fileName();}bool TicTacToe::gameInProgress() const{    return turnNumber > 0 && turnNumber < 9;}void TicTacToe::paintEvent(QPaintEvent * /* event */){    QPainter painter(this);    painter.setRenderHint(QPainter::Antialiasing, true);    painter.setPen(QPen(Qt::red, 1));    painter.drawLine(cellWidth(), 0, cellWidth(), height());    painter.drawLine(2 * cellWidth(), 0, 2 * cellWidth(), height());    painter.drawLine(0, cellHeight(), width(), cellHeight());    painter.drawLine(0, 2 * cellHeight(), width(), 2 * cellHeight());    painter.setPen(QPen(Qt::blue, 2));    for (int row = 0; row < 3; ++row) {        for (int column = 0; column < 3; ++column) {            QRect r = cellRect(row, column);            if (board[row][column] == Cross) {                painter.drawLine(r.topLeft(), r.bottomRight());                painter.drawLine(r.topRight(), r.bottomLeft());            } else if (board[row][column] == Nought) {                painter.drawEllipse(r);            }        }    }    painter.setPen(QPen(Qt::green, 3));    for (int row = 0; row < 3; ++row) {        if (threeInARow(row, 0, row, 2)) {            int y = cellRect(row, 0).center().y();            painter.drawLine(0, y, width(), y);            turnNumber = 9;        }    }    for (int column = 0; column < 3; ++column) {        if (threeInARow(0, column, 2, column)) {            int x = cellRect(0, column).center().x();            painter.drawLine(x, 0, x, height());            turnNumber = 9;        }    }    if (threeInARow(0, 0, 2, 2)) {        painter.drawLine(0, 0, width(), height());        turnNumber = 9;    }    if (threeInARow(0, 2, 2, 0)) {        painter.drawLine(0, height(), width(), 0);        turnNumber = 9;    }}void TicTacToe::mousePressEvent(QMouseEvent *event){    if (turnNumber == 9) {        clearBoard();        update();    } else {        for (int row = 0; row < 3; ++row) {            for (int column = 0; column < 3; ++column) {                QRect r = cellRect(row, column);                if (r.contains(event->pos())) {                    if (board[row][column] == Empty) {                        if (turnNumber % 2 == 0) {                            board[row][column] = Cross;                        } else {                            board[row][column] = Nought;                        }                        ++turnNumber;                        update();                    }                    break;                }            }        }    }}QRect TicTacToe::cellRect(int row, int column) const{    const int HMargin = width() / 30;    const int VMargin = height() / 30;    return QRect(column * cellWidth() + HMargin,                 row * cellHeight() + VMargin,                 cellWidth() - 2 * HMargin,                 cellHeight() - 2 * VMargin);}bool TicTacToe::threeInARow(int row1, int column1, int row3,                            int column3) const{    int row2 = (row1 + row3) / 2;    int column2 = (column1 + column3) / 2;    return board[row1][column1] != Empty           && board[row2][column2] == board[row1][column1]           && board[row3][column3] == board[row1][column1];}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本中文字幕区| 国内精品不卡在线| 亚洲线精品一区二区三区八戒| 国产日产欧美一区二区三区| 久久综合九色综合97婷婷| 精品国产伦理网| 欧美精品一区二区三| 精品久久人人做人人爰| 国产亚洲欧美在线| 国产精品三级在线观看| 国产精品沙发午睡系列990531| 国产精品第13页| 亚洲激情自拍视频| 亚洲午夜在线视频| 日本女人一区二区三区| 国内精品久久久久影院薰衣草| 精品系列免费在线观看| 国产福利精品导航| heyzo一本久久综合| 欧美亚洲动漫另类| 正在播放亚洲一区| 久久久国产午夜精品 | 国产精品国产自产拍在线| 国产精品成人在线观看| 亚洲欧美成aⅴ人在线观看 | 国产激情视频一区二区在线观看| 国产精品一区一区三区| 成人a免费在线看| 欧美视频一区二区三区四区 | 精品久久一二三区| 欧美国产精品久久| 亚洲最新在线观看| 久久不见久久见免费视频1| 国产成人精品三级| 欧美性大战久久久| 欧美tk—视频vk| 1024成人网| 青青草伊人久久| 成人高清在线视频| 91超碰这里只有精品国产| 久久女同性恋中文字幕| 亚洲精品一卡二卡| 久久成人综合网| 色婷婷激情一区二区三区| 欧美一区二区三区男人的天堂| 国产日产欧美精品一区二区三区| 亚洲一区二区三区美女| 国产酒店精品激情| 欧美在线影院一区二区| 精品欧美乱码久久久久久| 中文字幕日韩欧美一区二区三区| 丝袜国产日韩另类美女| 不卡电影一区二区三区| 这里只有精品免费| 亚洲欧美国产三级| 狠狠久久亚洲欧美| 欧美日韩在线直播| 成人欧美一区二区三区视频网页| 蜜臀久久99精品久久久画质超高清 | 亚洲永久免费视频| 国产一区二区三区在线观看免费 | 91啪在线观看| 精品国产第一区二区三区观看体验| 亚洲色图.com| 国产剧情一区二区| 717成人午夜免费福利电影| 中文字幕字幕中文在线中不卡视频| 老鸭窝一区二区久久精品| 91一区二区三区在线播放| 欧美精品一区二区蜜臀亚洲| 婷婷一区二区三区| 99国产精品99久久久久久| 日韩欧美高清一区| 亚洲在线视频免费观看| 成人午夜在线播放| 久久中文字幕电影| 蜜乳av一区二区三区| 在线精品视频小说1| 亚洲欧洲色图综合| 国产成人高清在线| 精品av综合导航| 久久www免费人成看片高清| 欧美视频一区在线| 亚洲精品久久久久久国产精华液| 成人黄页毛片网站| 久久久久久99精品| 久久精品99国产精品| 欧美精品成人一区二区三区四区| 夜夜嗨av一区二区三区四季av| 99久久婷婷国产| 国产精品每日更新在线播放网址| 国产另类ts人妖一区二区| 欧美大片免费久久精品三p | 色婷婷久久综合| 国产精品无人区| 大陆成人av片| 国产精品欧美经典| 成人在线综合网| 国产欧美精品一区二区三区四区| 国产乱码字幕精品高清av| 精品国产sm最大网站免费看| 久久99久国产精品黄毛片色诱| 在线综合亚洲欧美在线视频| 日本大胆欧美人术艺术动态| 欧美一区日韩一区| 蜜臀av性久久久久蜜臀av麻豆| 欧美电影在哪看比较好| 日本亚洲电影天堂| 日韩一区二区在线看| 蜜桃视频在线观看一区二区| 欧美一区2区视频在线观看| 日本在线不卡视频| 欧美成人在线直播| 国产精品一二三四五| 国产精品萝li| 在线观看欧美黄色| 日韩精品成人一区二区三区| 日韩欧美国产三级| 国产91丝袜在线观看| 日本一区二区三区四区| av网站免费线看精品| 亚洲精品高清在线观看| 欧美精品在线一区二区| 久久99精品久久久| 日本一区二区高清| 欧洲av在线精品| 日韩精品一二三| 久久久综合视频| 97aⅴ精品视频一二三区| 亚洲成人资源网| 欧美成人精品福利| 成人高清免费在线播放| 一区二区免费看| 欧美一区二区大片| 国产精品影音先锋| 尤物在线观看一区| 日韩你懂的在线播放| 成人动漫在线一区| 亚洲午夜一区二区三区| 精品福利一二区| 色综合色狠狠综合色| 日韩国产在线观看一区| 国产日韩精品一区二区三区在线| 91免费看片在线观看| 日韩精品91亚洲二区在线观看| 久久亚洲精品小早川怜子| 91久久精品一区二区三区| 欧美bbbbb| 自拍偷拍国产精品| 欧美成人猛片aaaaaaa| 日本乱码高清不卡字幕| 国内精品久久久久影院薰衣草 | 国产一区二区三区最好精华液| 亚洲色图制服丝袜| 精品久久国产老人久久综合| 97精品视频在线观看自产线路二| 日韩福利电影在线观看| 最新中文字幕一区二区三区| 日韩欧美亚洲国产精品字幕久久久| 99久久免费精品| 韩国午夜理伦三级不卡影院| 亚洲综合一区二区精品导航| 久久精品视频网| 在线电影欧美成精品| jlzzjlzz亚洲日本少妇| 国产一区高清在线| 日韩精品亚洲一区二区三区免费| 亚洲图片激情小说| 久久久久久久综合色一本| 欧美日韩一级片网站| 成人av网站在线观看免费| 日韩综合小视频| 亚洲一区二区在线免费观看视频| 中文字幕+乱码+中文字幕一区| 欧美电影免费观看高清完整版 | 中文字幕一区二区三区在线观看 | 依依成人综合视频| 国产亚洲精品aa午夜观看| 日韩一区二区电影在线| 欧美日韩免费视频| 色播五月激情综合网| 成人黄动漫网站免费app| 蜜桃精品在线观看| 亚洲黄色免费电影| 国产精品久久久久久亚洲伦| 精品欧美乱码久久久久久| 日本精品一级二级| av动漫一区二区| 成人ar影院免费观看视频| 蓝色福利精品导航| 日本不卡在线视频| 肉色丝袜一区二区| 亚洲精品日韩一| 一区二区三区蜜桃网| 亚洲国产成人在线| 国产精品乱码一区二三区小蝌蚪| 久久久国产精华| 欧美变态tickling挠脚心| 日韩亚洲欧美一区二区三区| 成人一区二区三区中文字幕|