This is an automated email from the git hooks/post-receive script. jsonic-guest pushed a commit to branch master in repository pentobi.
commit f85d86ecf29ba9912e8440c1f8cc4b4ae58cbdf9 Author: Juhani Numminen <juhaninummin...@gmail.com> Date: Thu Jan 11 11:22:23 2018 +0200 New upstream version 14.1 --- CMakeLists.txt | 14 +++++------ COPYING | 2 +- INSTALL | 17 ++++++------- NEWS | 22 ++++++++++++++-- README | 2 +- doc/blksgf/Pentobi-SGF.html | 15 +++++++++++ doc/gtp/Pentobi-GTP.html | 17 +++++++++++-- doc/man/pentobi.6.in | 6 ++--- src/libboardgame_base/Rating.cpp | 1 - src/libboardgame_mcts/LastGoodReply.h | 5 +--- src/libboardgame_mcts/Node.h | 11 +++++--- src/libpentobi_mcts/Player.cpp | 4 --- src/libpentobi_mcts/State.cpp | 2 +- src/pentobi/MainWindow.cpp | 2 +- src/pentobi/Util.h | 1 - src/pentobi/help/C/pentobi/become_stronger.html | 11 ++++---- src/pentobi/help/C/pentobi/callisto_rules.html | 8 +++--- src/pentobi/help/C/pentobi/classic_rules.html | 6 ++--- src/pentobi/help/C/pentobi/duo_rules.html | 4 +-- src/pentobi/help/C/pentobi/gembloq_rules.html | 8 +++--- src/pentobi/help/C/pentobi/index.html | 1 + src/pentobi/help/C/pentobi/junior_rules.html | 2 +- src/pentobi/help/C/pentobi/nexos_rules.html | 8 +++--- src/pentobi/help/C/pentobi/stylesheet.css | 32 ++++++++++++++++++------ src/pentobi/help/C/pentobi/trigon_rules.html | 6 ++--- src/pentobi/help/de/pentobi/become_stronger.html | 10 ++++---- src/pentobi/help/de/pentobi/callisto_rules.html | 12 ++++----- src/pentobi/help/de/pentobi/classic_rules.html | 12 ++++----- src/pentobi/help/de/pentobi/duo_rules.html | 8 +++--- src/pentobi/help/de/pentobi/gembloq_rules.html | 12 ++++----- src/pentobi/help/de/pentobi/index.html | 1 + src/pentobi/help/de/pentobi/junior_rules.html | 4 +-- src/pentobi/help/de/pentobi/nexos_rules.html | 12 ++++----- src/pentobi/help/de/pentobi/trigon_rules.html | 12 ++++----- src/pentobi_qml/CMakeLists.txt | 7 ------ src/pentobi_qml/Main.cpp | 2 +- src/pentobi_qml/Pentobi.pro | 16 ++++++++---- src/pentobi_qml/PieceModel.cpp | 1 + src/pentobi_qml/android/AndroidManifest.xml | 18 +++---------- src/pentobi_qml/deployment.pri | 27 -------------------- src/pentobi_qml/pentobi.conf.in | 3 --- src/pentobi_qml/qml/Button.qml | 2 +- src/pentobi_qml/qml/Comment.qml | 2 -- src/pentobi_qml/qml/ComputerColorDialog.qml | 2 +- src/pentobi_qml/qml/ExportImageDialog.qml | 2 +- src/pentobi_qml/qml/GameDisplayMobile.qml | 2 +- src/pentobi_qml/qml/GameInfoDialog.qml | 2 +- src/pentobi_qml/qml/GotoMoveDialog.qml | 2 +- src/pentobi_qml/qml/HelpWindow.qml | 15 +++++------ src/pentobi_qml/qml/InitialRatingDialog.qml | 2 +- src/pentobi_qml/qml/Main.js | 3 ++- src/pentobi_qml/qml/Main.qml | 1 - src/pentobi_qml/qml/MessageDialog.qml | 2 +- src/pentobi_qml/qml/PieceCallisto.qml | 2 +- src/pentobi_qml/qml/PieceClassic.qml | 2 +- src/pentobi_qml/qml/PieceGembloQ.qml | 2 +- src/pentobi_qml/qml/PieceNexos.qml | 2 +- src/pentobi_qml/qml/PieceTrigon.qml | 2 +- src/pentobi_qml/qml/RatingDialog.qml | 2 +- src/pentobi_qml/qml/ToolBar.qml | 2 +- src/twogtp/Analyze.cpp | 1 - src/unittest/libboardgame_gtp/EngineTest.cpp | 8 +++--- 62 files changed, 215 insertions(+), 209 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 889ed69..051f548 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.1.0) project(Pentobi) -set(PENTOBI_VERSION 14.0) -set(PENTOBI_RELEASE_DATE 2017-10-26) +set(PENTOBI_VERSION 14.1) +set(PENTOBI_RELEASE_DATE 2018-01-03) cmake_policy(SET CMP0043 NEW) @@ -68,11 +68,11 @@ if(PENTOBI_BUILD_GUI) find_package(Qt5Svg 5.6 REQUIRED) endif() if(PENTOBI_BUILD_QML) - find_package(Qt5Concurrent 5.6 REQUIRED) - find_package(Qt5Qml 5.6 REQUIRED) - find_package(Qt5Gui 5.6 REQUIRED) - find_package(Qt5Svg 5.6 REQUIRED) - find_package(Qt5WebView 5.6 REQUIRED) + find_package(Qt5Concurrent 5.7 REQUIRED) + find_package(Qt5Qml 5.7 REQUIRED) + find_package(Qt5Gui 5.7 REQUIRED) + find_package(Qt5Svg 5.7 REQUIRED) + find_package(Qt5WebView 5.7 REQUIRED) endif() if(UNIX) diff --git a/COPYING b/COPYING index 72591e1..7eb2fa2 100644 --- a/COPYING +++ b/COPYING @@ -1,4 +1,4 @@ -Copyright (C) 2011-2017 Markus Enzenberger <e...@users.sourceforge.net> +Copyright (C) 2011-2018 Markus Enzenberger <e...@users.sourceforge.net> Pentobi is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/INSTALL b/INSTALL index e6c3f78..ba97879 100644 --- a/INSTALL +++ b/INSTALL @@ -6,11 +6,11 @@ This file explains how to compile and install Pentobi from the sources. Pentobi requires the Qt libraries (>=5.6). The C++ compiler needs C++14 support (GCC >=4.9). The build system uses CMake (>=3.1.0). -Ubuntu 16.10 provides suitable versions of the required tools and libraries in +Ubuntu 17.10 provides suitable versions of the required tools and libraries in its package repository. They can be installed with the shell command: sudo apt-get install \ - g++ make cmake qttools5-dev qttools5-dev-tools libqt5svg5-dev + g++ make cmake qtbase5-dev libqt5svg5-dev qttools5-dev-tools == Building == @@ -25,8 +25,8 @@ Pentobi can be compiled from the source directory with the shell commands: A thumbnailer plugin for KDE can be built by using the cmake option -DPENTOBI_BUILD_KDE_THUMBNAILER=1. In this case, the KDE development files -need to be installed (packages kio-dev and extra-cmake-modules on -Ubuntu 16.10). Note that on Ubuntu 16.10, the plugin will not be found if +need to be installed (packages libkf5kio-dev and extra-cmake-modules on +Ubuntu 17.10). Note that on Ubuntu 17.10, the plugin will not be found if the default installation prefix /usr/local is used. You need to add QT_PLUGIN_PATH=/usr/local/lib/plugins to /etc/environment. After that, you can enable previews for Blokus game file in the Dolphin file manager in @@ -41,7 +41,7 @@ On Linux, Pentobi can be installed after compilation with the shell command: After installation, the system-wide databases should be updated to make Pentobi appear in the desktop menu and register it as handler for Blokus -files (*.blksgf). On Ubuntu 16.10 with install prefix /usr/local, this can be +files (*.blksgf). On Ubuntu 17.10 with install prefix /usr/local, this can be done by running: sudo update-mime-database /usr/local/share/mime @@ -51,9 +51,8 @@ done by running: == Building the Android version == For building the Android app, there is a QtCreator project file in -src/pentobi_qml/Pentobi.pro. It requires Qt 5.6. Before compilation, the -binary translation files need to be generated by using File/Release in -Qt Linguist for all TS files in src/pentobi_qml/qml/i18n +src/pentobi_qml/Pentobi.pro. It requires Qt >=5.7. For testing purposes, the GUI that is used for Android can also be built as a -desktop application by running CMake with -DPENTOBI_BUILD_QML=1. +desktop application by running CMake with -DPENTOBI_BUILD_QML=1 (needs the +packages qtdeclarative5-dev and libqt5webview5-dev on Ubuntu 17.10). diff --git a/NEWS b/NEWS index 54aca92..041ff00 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,22 @@ +Version 14.1 (03 Jan 2018) +========================== + +General: + +* Fixed a potential race condition during move generation. +* Reduced maximum memory usage to a quarter instead of a third of the + total system memory. +* Made unit tests work again. + +Android version: + +* Migrated QML files from Qt 5.6 to Qt >=5.7. +* The binary translation files are now automatically created by the + qmake project file. + + Version 14.0 (26 Oct 2017) -================================ +========================== General: @@ -13,7 +30,8 @@ Desktop version: * Minimum required Qt version is now 5.6. * Bugfix: dot indicating color to play in orientation selector was not - always updated correctly after loading a file of a different game variant. + always updated correctly after loading a file of a different game + variant. * Bugfix: added missing include that broke compilation on FreeBSD 11. diff --git a/README b/README index 8974089..5070931 100644 --- a/README +++ b/README @@ -3,7 +3,7 @@ Pentobi is a computer opponent for the board game Blokus. It has a strong Blokus engine with 9 different playing levels. The supported game variants are: Classic, Duo, Trigon, Junior, Nexos, GembloQ, Callisto. -Copyright (C) 2011-2017 Markus Enzenberger <e...@users.sourceforge.net> +Copyright (C) 2011-2018 Markus Enzenberger <e...@users.sourceforge.net> See COPYING for license information. See INSTALL for instructions how to build the program from the sources. diff --git a/doc/blksgf/Pentobi-SGF.html b/doc/blksgf/Pentobi-SGF.html index 4987a61..2c8d5d1 100644 --- a/doc/blksgf/Pentobi-SGF.html +++ b/doc/blksgf/Pentobi-SGF.html @@ -3,6 +3,21 @@ <head> <title>Pentobi SGF Files</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<style type="text/css"> +html { background-color: lightgray; } +body { + background-color:white; + color:black; + font-size:17px; + line-height:23px; + max-width:60em; + margin:auto; + padding:15px; + min-height: 100vh; +} +a:link { text-decoration:none; color:blue; } +a:visited { text-decoration:none; color:purple; } +</style> </head> <body> <h1>Pentobi SGF Files</h1> diff --git a/doc/gtp/Pentobi-GTP.html b/doc/gtp/Pentobi-GTP.html index 1e4e5ca..f00b2ca 100644 --- a/doc/gtp/Pentobi-GTP.html +++ b/doc/gtp/Pentobi-GTP.html @@ -3,6 +3,21 @@ <head> <title>Pentobi GTP Interface</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<style type="text/css"> +html { background-color: lightgray; } +body { + background-color:white; + color:black; + font-size:17px; + line-height:23px; + max-width:60em; + margin:auto; + padding:15px; + min-height: 100vh; +} +a:link { text-decoration:none; color:blue; } +a:visited { text-decoration:none; color:purple; } +</style> </head> <body> <h1>Pentobi GTP Interface</h1> @@ -173,8 +188,6 @@ was played, otherwise to the last position in the main variation.</dd> <dd>Return the name of the GTP engine (<tt>Pentobi</tt>).</dd> <dt>play <i>color</i> <i>move</i></dt> <dd>Play a move for a given color in the current board position.</dd> -<dt>protocol_version</dt> -<dd>Return the version of the GTP protocol used (currently <tt>2</tt>).</dd> <dt>quit</dt> <dd>Exit the command loop and quit the engine.</dd> <dt>reg_genmove <i>color</i></dt> diff --git a/doc/man/pentobi.6.in b/doc/man/pentobi.6.in index 6bfb301..917fb74 100644 --- a/doc/man/pentobi.6.in +++ b/doc/man/pentobi.6.in @@ -1,4 +1,4 @@ -.TH PENTOBI 6 "2017-04-17" "Pentobi @PENTOBI_VERSION@" "Pentobi command reference" +.TH PENTOBI 6 "2017-11-03" "Pentobi @PENTOBI_VERSION@" "Pentobi command reference" .SH NAME pentobi \- computer opponent for the board game Blokus @@ -25,10 +25,10 @@ doc/blksgf/Pentobi-SGF.html in the Pentobi source package. Set the maximum playing level. Reducing this value reduces the amount of memory used by the search, which can be useful to run Pentobi on systems that have low memory or are too slow to use the highest levels. -By default, Pentobi currently allocates up to 2 GB (but not more than a third +By default, Pentobi currently allocates up to 2 GB (but not more than a quarter of the physical memory available on the system). Reducing the maximum level to 8 currently reduces this amount by a factor -of 6 and lower maximum levels even more. +of 3 to 4 and lower maximum levels even more. .TP .B \-h, \-\-help Display help and exit. diff --git a/src/libboardgame_base/Rating.cpp b/src/libboardgame_base/Rating.cpp index 786dc2e..ada6dbe 100644 --- a/src/libboardgame_base/Rating.cpp +++ b/src/libboardgame_base/Rating.cpp @@ -10,7 +10,6 @@ #include "Rating.h" -#include <cmath> #include <iostream> #include "libboardgame_util/Assert.h" diff --git a/src/libboardgame_mcts/LastGoodReply.h b/src/libboardgame_mcts/LastGoodReply.h index 4726cef..2f49133 100644 --- a/src/libboardgame_mcts/LastGoodReply.h +++ b/src/libboardgame_mcts/LastGoodReply.h @@ -7,12 +7,9 @@ #ifndef LIBBOARDGAME_MCTS_LAST_GOOD_REPLY_H #define LIBBOARDGAME_MCTS_LAST_GOOD_REPLY_H -#include <algorithm> -#include <cstring> -#include <memory> +#include <cstddef> #include <random> #include "Atomic.h" -#include "PlayerMove.h" namespace libboardgame_mcts { diff --git a/src/libboardgame_mcts/Node.h b/src/libboardgame_mcts/Node.h index c898946..9cac9f1 100644 --- a/src/libboardgame_mcts/Node.h +++ b/src/libboardgame_mcts/Node.h @@ -118,7 +118,7 @@ private: Move m_move; - NodeIdx m_first_child; + Atomic<NodeIdx, MT> m_first_child; }; template<typename M, typename F, bool MT> @@ -185,7 +185,7 @@ template<typename M, typename F, bool MT> inline NodeIdx Node<M, F, MT>::get_first_child() const { LIBBOARDGAME_ASSERT(has_children()); - return m_first_child; + return m_first_child.load(memory_order_acquire); } template<typename M, typename F, bool MT> @@ -256,7 +256,10 @@ inline void Node<M, F, MT>::link_children(NodeIdx first_child, LIBBOARDGAME_ASSERT(nu_children < Move::range); // first_child cannot be 0 because 0 is always used for the root node LIBBOARDGAME_ASSERT(first_child != 0); - m_first_child = first_child; + // Even if m_first_child is only used by other threads after m_nu_children + // was set, we need release/acquire order for both because m_first_child + // can be overwritten later if two threads expand a node simultaneously. + m_first_child.store(first_child, memory_order_release); m_nu_children.store(nu_children, memory_order_release); } @@ -267,8 +270,8 @@ inline void Node<M, F, MT>::link_children_st(NodeIdx first_child, LIBBOARDGAME_ASSERT(nu_children < Move::range); // first_child cannot be 0 because 0 is always used for the root node LIBBOARDGAME_ASSERT(first_child != 0); - m_first_child = first_child; // Store relaxed (wouldn't even need to be atomic) + m_first_child.store(first_child, memory_order_relaxed); m_nu_children.store(nu_children, memory_order_relaxed); } diff --git a/src/libpentobi_mcts/Player.cpp b/src/libpentobi_mcts/Player.cpp index dac4169..8fd4db7 100644 --- a/src/libpentobi_mcts/Player.cpp +++ b/src/libpentobi_mcts/Player.cpp @@ -241,11 +241,7 @@ size_t Player::get_memory() available = 512000000; } // Don't use all of the available memory -#if PENTOBI_LOW_RESOURCES size_t reasonable = available / 4; -#else - size_t reasonable = available / 3; -#endif size_t wanted = 2000000000; if (m_max_level < max_supported_level) { diff --git a/src/libpentobi_mcts/State.cpp b/src/libpentobi_mcts/State.cpp index 70e93b7..594bc77 100644 --- a/src/libpentobi_mcts/State.cpp +++ b/src/libpentobi_mcts/State.cpp @@ -114,7 +114,7 @@ void State::add_starting_moves(Color c, const Board::PiecesLeftList& pieces, for (Piece piece : pieces) for (Move mv : get_moves(c, piece, p, 0)) { - // In GembloQ, not all moves covering on starting point + // In GembloQ, not all moves covering one starting point // (=quarter-square tringle) are legal. if (is_gembloq && ! m_bd.is_legal(c, mv)) continue; diff --git a/src/pentobi/MainWindow.cpp b/src/pentobi/MainWindow.cpp index e4a46f3..903c076 100644 --- a/src/pentobi/MainWindow.cpp +++ b/src/pentobi/MainWindow.cpp @@ -286,7 +286,7 @@ void MainWindow::about() "<p>" + tr("Computer opponent for the board game Blokus.") + "<br>" + - tr("© 2011–%1 Markus Enzenberger").arg(2017) + + tr("© 2011–%1 Markus Enzenberger").arg(2018) + + "<br>" + "<a href=\"https://pentobi.sourceforge.io\">https://pentobi.sourceforge.io</a>" "</p>"); diff --git a/src/pentobi/Util.h b/src/pentobi/Util.h index 1f8f9a9..3e8aef4 100644 --- a/src/pentobi/Util.h +++ b/src/pentobi/Util.h @@ -7,7 +7,6 @@ #ifndef PENTOBI_UTIL_H #define PENTOBI_UTIL_H -#include "RatingHistory.h" #include "libboardgame_base/Rating.h" #include "libpentobi_base/Color.h" #include "libpentobi_base/Variant.h" diff --git a/src/pentobi/help/C/pentobi/become_stronger.html b/src/pentobi/help/C/pentobi/become_stronger.html index 1d738ab..8a33b13 100644 --- a/src/pentobi/help/C/pentobi/become_stronger.html +++ b/src/pentobi/help/C/pentobi/become_stronger.html @@ -16,8 +16,7 @@ player.</p> <i>Tools</i> menu. This will make the computer player evaluate each position in the main variation. The result is displayed in a window with a diagram of colored dots.</p> -<p align="center"><img src="analysis.jpg" width="320" height="160" alt= -"Game analysis window"></p> +<p align="center"><img src="analysis.jpg" alt="Game analysis window"></p> <div align="center" class="caption">Analysis of a game of variant Classic (2 players).</div> <p>Each dot represents a game position in which the color of the dot was to @@ -46,10 +45,10 @@ disabled: you cannot undo moves, navigate in the game, change the computer colors or change the playing level. To get an accurate rating, you should always play rated games until the end.</p> <p>After the game has ended, your rating will be updated depending on the game -result and the computer level. For the game result, it only matters if the game -was won, lost or a tie. The exact number of score points does not matter.</p> -<p align="center"><img src="rating.jpg" width="240" height="239" alt= -"Rating window"></p> +result and the computer level. For the game result, it only matters whether the +game was won, lost or a tie. The exact number of score points does not +matter.</p> +<p align="center"><img src="rating.jpg" alt="Rating window"></p> <div align="center" class="caption">Window with rating graph.</div> <p>You can always see your current rating by selecting <i>Rating</i> from the <i>Tools</i> menu. This will open a window that shows the development of your diff --git a/src/pentobi/help/C/pentobi/callisto_rules.html b/src/pentobi/help/C/pentobi/callisto_rules.html index a5c9dfd..b673eaa 100644 --- a/src/pentobi/help/C/pentobi/callisto_rules.html +++ b/src/pentobi/help/C/pentobi/callisto_rules.html @@ -14,21 +14,21 @@ from the classic 20×20 Blokus board by removing the corners such that an octagon with a top edge of size six remains. The pieces are a subset of the polyominoes up to size five. They include three 1×1 pieces per player that play a special role.</p> -<p align="center"><img src="pieces_callisto.png" width="317" height="132" alt= +<p align="center"><img src="pieces_callisto.png" alt= "Pieces for game variant Callisto"></p> <div align="center" class="caption">The 21 pieces.</div> <p>The 1×1 pieces may be placed anywhere on the board apart from the center of the board. The center consists of an octagon with width six and top edge size two. The first two moves of a player must use a 1×1 piece, the third 1×1 piece may be played anytime later.</p> -<p align="center"><img src="board_callisto.png" width="320" height="320" alt= +<p align="center"><img src="board_callisto.png" alt= "Board for game variant Callisto"></p> <div align="center" class="caption">The board with the center having a darker color.</div> <p>All larger pieces may be placed anwhere on the board but must touch an existing piece of the same color edge-to-edge.</p> -<p align="center"><img src="position_callisto.png" width="321" height="320" -alt="Example position for game variant Callisto"></p> +<p align="center"><img src="position_callisto.png" alt= +"Example position for game variant Callisto"></p> <div align="center" class="caption">An example position after a few moves.</div> <p>The score of a color is the number of squares on the board occupied by the diff --git a/src/pentobi/help/C/pentobi/classic_rules.html b/src/pentobi/help/C/pentobi/classic_rules.html index a891332..90f1a77 100644 --- a/src/pentobi/help/C/pentobi/classic_rules.html +++ b/src/pentobi/help/C/pentobi/classic_rules.html @@ -14,13 +14,13 @@ of 20×20 squares.</p> <p>Each player has a set of 21 pieces of his color shaped like the polyominoes up to size five. (A polyomino is a shape built by a number of squares connected along the edges.)</p> -<p align="center"><img src="pieces.png" width="294" height="122" alt= +<p align="center"><img src="pieces.png" alt= "Pieces for game variant Classic"></p> <div align="center" class="caption">The 21 pieces.</div> <p>The players alternate in placing one of their pieces on the board. The first piece of a player must cover its starting square. The starting squares are located in the corners of the board.</p> -<p align="center"><img src="board_classic.png" width="320" height="320" alt= +<p align="center"><img src="board_classic.png" alt= "Board for game variant Classic"></p> <div align="center" class="caption">The 20×20 board with the starting<br> squares marked with colored dots.</div> @@ -28,7 +28,7 @@ squares marked with colored dots.</div> touches at least one piece of its own color corner-to-corner but does not touch any piece of its own color along the edges. The new piece may touch edges of pieces of the opponent colors.</p> -<p align="center"><img src="position_classic.png" width="320" height="320" alt= +<p align="center"><img src="position_classic.png" alt= "Example position for game variant Classic"></p> <div align="center" class="caption">An example position after a few moves.</div> diff --git a/src/pentobi/help/C/pentobi/duo_rules.html b/src/pentobi/help/C/pentobi/duo_rules.html index a39c174..1292b1a 100644 --- a/src/pentobi/help/C/pentobi/duo_rules.html +++ b/src/pentobi/help/C/pentobi/duo_rules.html @@ -14,12 +14,12 @@ played on a smaller board with 14×14 squares. There is only one color per player (Purple and Orange) and the starting squares are not in the corners, but on the square with the coordinates (5,10) for Purple, and on (10,5) for Orange.</p> -<p align="center"><img src="board_duo.png" width="224" height="224" alt= +<p align="center"><img src="board_duo.png" alt= "Board for game variant Duo"></p> <div align="center" class="caption">The 14×14 board used in game variant Duo with<br> the starting squares marked with colored dots.</div> -<p align="center"><img src="position_duo.png" width="224" height="224" alt= +<p align="center"><img src="position_duo.png" alt= "Example position for game variant Duo"></p> <div align="center" class="caption">An example position in game variant Duo.</div> diff --git a/src/pentobi/help/C/pentobi/gembloq_rules.html b/src/pentobi/help/C/pentobi/gembloq_rules.html index 8697a4f..8abcb2e 100644 --- a/src/pentobi/help/C/pentobi/gembloq_rules.html +++ b/src/pentobi/help/C/pentobi/gembloq_rules.html @@ -13,13 +13,11 @@ rotated by 45 degrees. The board has a diagonal size of 27 squares. In addition to the full squares, the edges also contain half squares such that the edges are straight lines.</p> -<p align="center"><img src="pieces_gembloq.jpg" width="304" height="110" alt= -"Pieces for GembloQ"></p> +<p align="center"><img src="pieces_gembloq.jpg" alt="Pieces for GembloQ"></p> <div align="center" class="caption">The 21 pieces.</div> <p>Each player has a set of 21 pieces, which include a subset of the pieces used in Blokus, but also some pieces that contain a half square.</p> -<p align="center"><img src="board_gembloq.png" width="320" height="320" alt= -"Board for GembloQ"></p> +<p align="center"><img src="board_gembloq.png" alt="Board for GembloQ"></p> <div align="center" class="caption">The board for GembloQ with the<br> starting points marked with colored dots.</div> <p>As in Blokus, the starting squares are in the corners, the first move must @@ -27,7 +25,7 @@ fully cover the starting square of the color and subsequent moves must touch a piece of the player color at a vertex, but not edge-to-edge. Moves are also legal, if a vertex of a half square touches an edge of a piece of the same color.</p> -<p align="center"><img src="position_gembloq.png" width="320" height="320" alt= +<p align="center"><img src="position_gembloq.png" alt= "Example position for GembloQ"></p> <div align="center" class="caption">An example position after a few moves.</div> diff --git a/src/pentobi/help/C/pentobi/index.html b/src/pentobi/help/C/pentobi/index.html index 8fec6d7..cd26a63 100644 --- a/src/pentobi/help/C/pentobi/index.html +++ b/src/pentobi/help/C/pentobi/index.html @@ -25,5 +25,6 @@ and the game variants Duo, Trigon, Junior, Nexos, GembloQ and Callisto.</p> <a href="shortcuts.html">Keyboard Shortcuts</a><br> <a href="system.html">System Requirements</a><br> <a href="license.html">License</a></p> +<p align="right"><a href="classic_rules.html">Next</a></p> </body> </html> diff --git a/src/pentobi/help/C/pentobi/junior_rules.html b/src/pentobi/help/C/pentobi/junior_rules.html index d28a9bc..152a26d 100644 --- a/src/pentobi/help/C/pentobi/junior_rules.html +++ b/src/pentobi/help/C/pentobi/junior_rules.html @@ -12,7 +12,7 @@ <p>Junior is a simplified game variant for two players. It is played on the same 14×14 board as game variant Duo but uses only a subset of the pentominoes and the players get two of each of those pentominoes.</p> -<p align="center"><img src="pieces_junior.png" width="300" height="110" alt= +<p align="center"><img src="pieces_junior.png" alt= "Pieces for game variant Junior"></p> <div align="center" class="caption">The 24 pieces used in Junior.</div> <p>Bonus points are not used in Junior.</p> diff --git a/src/pentobi/help/C/pentobi/nexos_rules.html b/src/pentobi/help/C/pentobi/nexos_rules.html index 511b7ed..8eeda92 100644 --- a/src/pentobi/help/C/pentobi/nexos_rules.html +++ b/src/pentobi/help/C/pentobi/nexos_rules.html @@ -12,14 +12,12 @@ <p>Nexos is a board game similar to Blokus. The board is a rectangular 13×13 line grid. Each color uses 24 pieces that consist of up to four connected line segments.</p> -<p align="center"><img src="pieces_nexos.png" width="308" height="112" alt= -"Pieces for Nexos"></p> +<p align="center"><img src="pieces_nexos.png" alt="Pieces for Nexos"></p> <div align="center" class="caption">The 24 pieces.</div> <p>Each color has a starting intersection on the intersection of the third lines close to a corner. The first piece must touch the starting intersection.</p> -<p align="center"><img src="board_nexos.png" width="320" height="320" alt= -"Board for Nexos"></p> +<p align="center"><img src="board_nexos.png" alt="Board for Nexos"></p> <div align="center" class="caption">The board for Nexos with segments touching the<br> starting intersections marked with colored dots.</div> @@ -30,7 +28,7 @@ or cover the same intersection. However, pieces may not overlap. The junctions between the segments within a piece are such that two rectangular junctions of different pieces can cover the same intersection without overlapping, but straight junctions cannot.</p> -<p align="center"><img src="position_nexos.png" width="320" height="320" alt= +<p align="center"><img src="position_nexos.png" alt= "Example position for Nexos"></p> <div align="center" class="caption">An example position after a few moves.</div> diff --git a/src/pentobi/help/C/pentobi/stylesheet.css b/src/pentobi/help/C/pentobi/stylesheet.css index 62522b0..553a026 100644 --- a/src/pentobi/help/C/pentobi/stylesheet.css +++ b/src/pentobi/help/C/pentobi/stylesheet.css @@ -1,20 +1,36 @@ -body -{ +html { + background-color: lightgray; +} + +body { color: black; background-color: white; font-family: sans-serif; font-size: 15px; - margin-left: 0.5em; - margin-right: 0.5em; + line-height: 20px; max-width: 60em; + margin:auto; + padding:15px; + min-height: 100vh; } -:link -{ +:link { text-decoration: none; + color:blue; +} + +:visited { + text-decoration: none; + color:purple; +} + +img { + width: auto; + height: auto; + max-width: 100%; + max-height: 90%; } -div.caption -{ +div.caption { font-size: 14px; } diff --git a/src/pentobi/help/C/pentobi/trigon_rules.html b/src/pentobi/help/C/pentobi/trigon_rules.html index 2994ae6..4414b2f 100644 --- a/src/pentobi/help/C/pentobi/trigon_rules.html +++ b/src/pentobi/help/C/pentobi/trigon_rules.html @@ -14,19 +14,19 @@ but it uses a differently shaped board and a different set of pieces. Each color uses 22 pieces that are shaped like the polyiamonds up to size six. (A polyiamond is a shape built by a number of equilateral triangles connected along the edges.)</p> -<p align="center"><img src="pieces_trigon.jpg" width="332" height="115" alt= +<p align="center"><img src="pieces_trigon.jpg" alt= "Pieces for game variant Trigon"></p> <div align="center" class="caption">The 22 Trigon pieces.</div> <p>The board also consists of triangles and is shaped like a hexagon with an edge size of nine triangles.</p> -<p align="center"><img src="board_trigon.jpg" width="320" height="277" alt= +<p align="center"><img src="board_trigon.jpg" alt= "Board for game variant Trigon"></p> <div align="center" class="caption">The board with the starting<br> fields marked with gray dots.</div> <p>There are six starting points on the board, each located in the middle of the fourth row away from each edge. The starting points are not colored and the players may freely choose a starting point for the first piece of a color.</p> -<p align="center"><img src="position_trigon.jpg" width="320" height="276" alt= +<p align="center"><img src="position_trigon.jpg" alt= "Example position for game variant Trigon"></p> <div align="center" class="caption">An example position after a few moves.</div> diff --git a/src/pentobi/help/de/pentobi/become_stronger.html b/src/pentobi/help/de/pentobi/become_stronger.html index 39af79e..f768070 100644 --- a/src/pentobi/help/de/pentobi/become_stronger.html +++ b/src/pentobi/help/de/pentobi/become_stronger.html @@ -16,8 +16,8 @@ Blokus-Spieler zu werden.</p> <i>Extras</i>-Menü wählen. Dies lässt den Computer eine Bewertung jeder Brettstellung der Hauptvariante ausführen. Das Ergebnis wird in einem Fenster mit einem Diagramm farbiger Punkte dargestellt.</p> -<p align="center"><img src="../../C/pentobi/analysis.jpg" width="320" height= -"160" alt="Spielanalyse-Fenster"></p> +<p align="center"><img src="../../C/pentobi/analysis.jpg" alt= +"Spielanalyse-Fenster"></p> <div align="center" class="caption">Analyse eines Spiels der Spielvariante Klassisch (2 Spieler).</div> <p>Jeder Punkt repräsentiert eine Spielstellung, in der die Farbe des Punkts am @@ -45,7 +45,7 @@ Sie Anfänger sind, belassen Sie die Anfangswertung auf 1000.</p> Computerspieler gemäß Ihrer gegenwärtigen Wertung wählen. Die Farbe, die Sie spielen, wird in jedem Spiel zufällig ausgewählt.</p> <p>Während eines gewerteten Spiels sind die meisten Funktionen, die nicht zum -Spielen benötigt werden, deaktiviert: Sie können keine Züge zurücknehmen, im +Spielen benötigt werden, deaktiviert: Sie können nicht Züge zurücknehmen, im Spiel navigieren, die Computer-Farben ändern oder die Spielstufe ändern. Um eine akkurate Wertung zu erhalten, sollten Sie gewertete Spiele immer bis zum Ende spielen.</p> @@ -53,8 +53,8 @@ Ende spielen.</p> Spielergebnis und der Spielstufe aktualisiert. Für das Spielergebnis zählt nur, ob Sie gewonnen oder verloren haben, oder ob das Spiel in einem Unentschieden endete. Die genaue Anzahl der Spielpunkte spielt keine Rolle.</p> -<p align="center"><img src="../../C/pentobi/rating.jpg" width="240" height= -"239" alt="Wertungsfenster"></p> +<p align="center"><img src="../../C/pentobi/rating.jpg" alt= +"Wertungsfenster"></p> <div align="center" class="caption">Fenster mit Wertungsgraph.</div> <p>Sie können Ihre aktuelle Wertung jederzeit mit <i>Wertung</i> aus dem <i>Extras</i>-Menü sehen. Dies öffnet ein Fenster, in dem die Entwicklung Ihrer diff --git a/src/pentobi/help/de/pentobi/callisto_rules.html b/src/pentobi/help/de/pentobi/callisto_rules.html index eec55e5..06cc2d5 100644 --- a/src/pentobi/help/de/pentobi/callisto_rules.html +++ b/src/pentobi/help/de/pentobi/callisto_rules.html @@ -15,23 +15,23 @@ werden, sodass ein Achteck verbleibt mit einer oberen Kantenlänge von sechs. Die Spielsteine sind eine Untermenge der Polyominos bis zur Größe fünf. Sie beinhalten drei 1×1-Spielsteine pro Spieler, die eine besondere Rolle spielen.</p> -<p align="center"><img src="../../C/pentobi/pieces_callisto.png" width="317" -height="132" alt="Spielsteine für Spielvariante Callisto"></p> +<p align="center"><img src="../../C/pentobi/pieces_callisto.png" alt= +"Spielsteine für Spielvariante Callisto"></p> <div align="center" class="caption">Die 21 Spielsteine.</div> <p>Die 1×1-Spielsteine dürfen überall auf dem Spielbrett gesetzt werden außer im Zentrum des Spielbretts. Das Zentrums besteht aus einem Achteck mit Breite sechs und oberer Kantenlänge zwei. Die ersten zwei Züge eines Spielers müssen einen 1×1-Spielstein benutzen, der dritte 1×1-Spielstein kann jederzeit später gespielt werden.</p> -<p align="center"><img src="../../C/pentobi/board_callisto.png" width="320" -height="320" alt="Spielbrett für Spielvariante Callisto"></p> +<p align="center"><img src="../../C/pentobi/board_callisto.png" alt= +"Spielbrett für Spielvariante Callisto"></p> <div align="center" class="caption">Das Brett mit einer dunkleren Farbe im Zentrum.</div> <p>Alle größeren Spielsteine dürfen überall auf dem Brett gesetzt werden, müssen aber einen existierenden Spielstein der selben Farbe Kante an Kante berühren.</p> -<p align="center"><img src="../../C/pentobi/position_callisto.png" width="321" -height="320" alt="Beispielstellung für Spielvariante Callisto"></p> +<p align="center"><img src="../../C/pentobi/position_callisto.png" alt= +"Beispielstellung für Spielvariante Callisto"></p> <div align="center" class="caption">Eine Beispielstellung nach ein paar Zügen.</div> <p>Die Punktzahl einer Farbe ist die Anzahl der Quadrate auf dem Brett, die von diff --git a/src/pentobi/help/de/pentobi/classic_rules.html b/src/pentobi/help/de/pentobi/classic_rules.html index 51b56bb..ba76810 100644 --- a/src/pentobi/help/de/pentobi/classic_rules.html +++ b/src/pentobi/help/de/pentobi/classic_rules.html @@ -14,22 +14,22 @@ Quadraten besteht.</p> <p>Jeder Spieler besitzt 21 Spielsteine seiner Farbe, die die Form von Polyominos bis zur Größe fünf haben (ein Polyomino ist eine Figur, die aus einer Anzahl von Quadraten besteht, die entlang der Kanten verbunden sind).</p> -<p align="center"><img src="../../C/pentobi/pieces.png" width="294" height= -"122" alt="Spielsteine für Spielvariante Klassisch"></p> +<p align="center"><img src="../../C/pentobi/pieces.png" alt= +"Spielsteine für Spielvariante Klassisch"></p> <div align="center" class="caption">Die 21 Spielsteine.</div> <p>Die Spieler setzen abwechselnd einen ihrer Spielsteine aufs Brett. Der erste Spielstein eines Spielers muss sein Startfeld abdecken. Die Startfelder befinden sich in den Ecken des Bretts.</p> -<p align="center"><img src="../../C/pentobi/board_classic.png" width="320" -height="320" alt="Spielbrett für Spielvariante Klassisch"></p> +<p align="center"><img src="../../C/pentobi/board_classic.png" alt= +"Spielbrett für Spielvariante Klassisch"></p> <div align="center" class="caption">Das 20×20-Brett mit den Startfeldern<br> durch farbige Punkte markiert.</div> <p>Die folgenden Spielsteine müssen so auf leere Quadrate gesetzt werden, dass der neue Spielstein mindestens einen Spielstein der eigenen Farbe Ecke an Ecke berührt, aber keinen Spielstein der eigenen Farbe entlang der Kanten. Der neue Spielstein darf die Kanten von gegnerischen Spielsteinen berühren.</p> -<p align="center"><img src="../../C/pentobi/position_classic.png" width="320" -height="320" alt="Beispielstellung für Spielvariante Klassisch"></p> +<p align="center"><img src="../../C/pentobi/position_classic.png" alt= +"Beispielstellung für Spielvariante Klassisch"></p> <div align="center" class="caption">Eine Beispielstellung nach ein paar Zügen.</div> <p>Wenn der Spieler einer Farbe keine Spielsteine mehr setzen kann, muss der diff --git a/src/pentobi/help/de/pentobi/duo_rules.html b/src/pentobi/help/de/pentobi/duo_rules.html index eee3fd2..4e146b9 100644 --- a/src/pentobi/help/de/pentobi/duo_rules.html +++ b/src/pentobi/help/de/pentobi/duo_rules.html @@ -14,13 +14,13 @@ Spiel wird auf einem kleineren Brett mit 14×14 Quadraten gespielt. Es gibt eine Farbe pro Spieler (Lila und Orange) und die Startfelder befinden sich nicht in den Ecken, sondern auf dem Feld mit den Koordinaten (5,10) für Lila und auf (10,5) für Orange.</p> -<p align="center"><img src="../../C/pentobi/board_duo.png" width="224" height= -"224" alt="Spielbrett für Spielvariante Duo"></p> +<p align="center"><img src="../../C/pentobi/board_duo.png" alt= +"Spielbrett für Spielvariante Duo"></p> <div align="center" class="caption">Das 14×14-Brett, das in der Spielvariante Duo benutzt<br> wird, mit den Startfeldern durch farbige Punkte markiert.</div> -<p align="center"><img src="../../C/pentobi/position_duo.png" width="224" -height="224" alt="Beispielstellung für Spielvariante Duo"></p> +<p align="center"><img src="../../C/pentobi/position_duo.png" alt= +"Beispielstellung für Spielvariante Duo"></p> <div align="center" class="caption">Eine Beispielstellung in der Spielvariante Duo.</div> <p align="right"><a href="classic_rules.html">Zurück</a> | <a href= diff --git a/src/pentobi/help/de/pentobi/gembloq_rules.html b/src/pentobi/help/de/pentobi/gembloq_rules.html index 4c04987..7c8324d 100644 --- a/src/pentobi/help/de/pentobi/gembloq_rules.html +++ b/src/pentobi/help/de/pentobi/gembloq_rules.html @@ -13,14 +13,14 @@ des Bretts sind um 45 Grad gedreht. Die Diagonale des Bretts hat eine Größe von 27 Quadraten. Zusätzlich zu den vollen Quadraten enthalten die Ränder noch halbe Quadrate, so dass die Ränder gerade Linien sind.</p> -<p align="center"><img src="../../C/pentobi/pieces_gembloq.jpg" width="304" -height="110" alt="Spielsteine für GembloQ"></p> +<p align="center"><img src="../../C/pentobi/pieces_gembloq.jpg" alt= +"Spielsteine für GembloQ"></p> <div align="center" class="caption">Die 21 Spielsteine.</div> <p>Jeder Spieler besitzt 21 Spielsteine, unter denen eine Teilmenge der in Blokus benutzten Spielsteine ist, jedoch zusätzlich einige Spielsteine, die ein halbes Quadrat beinhalten.</p> -<p align="center"><img src="../../C/pentobi/board_gembloq.png" width="320" -height="320" alt="Spielbrett für GembloQ"></p> +<p align="center"><img src="../../C/pentobi/board_gembloq.png" alt= +"Spielbrett für GembloQ"></p> <div align="center" class="caption">Das Brett für GembloQ mit den Startfeldern<br> durch farbige Punkte markiert.</div> @@ -29,8 +29,8 @@ Startfeld der Farbe vollständig abdecken und folgende Züge müssen einen Spielstein der Farbe am Zug an einer Ecke berühren, jedoch noch entlang der Kanten. Züge sind auch legal, wenn eine Spitze eines halben Quadrats die Kante eines Spielsteins der selben Farbe berührt.</p> -<p align="center"><img src="../../C/pentobi/position_gembloq.png" width="320" -height="320" alt="Beispielstellung für GembloQ"></p> +<p align="center"><img src="../../C/pentobi/position_gembloq.png" alt= +"Beispielstellung für GembloQ"></p> <div align="center" class="caption">Eine Beispielstellung nach ein paar Zügen.</div> <p>Die Punktzahl am Spielende wird wie in Blokus ermittelt, wobei halbe diff --git a/src/pentobi/help/de/pentobi/index.html b/src/pentobi/help/de/pentobi/index.html index aca3077..1c9c9c2 100644 --- a/src/pentobi/help/de/pentobi/index.html +++ b/src/pentobi/help/de/pentobi/index.html @@ -26,5 +26,6 @@ Junior, Nexos, GembloQ und Callisto.</p> <a href="shortcuts.html">Tastenkürzel</a><br> <a href="system.html">Systemvoraussetzungen</a><br> <a href="license.html">Lizenz</a></p> +<p align="right"><a href="classic_rules.html">Weiter</a></p> </body> </html> diff --git a/src/pentobi/help/de/pentobi/junior_rules.html b/src/pentobi/help/de/pentobi/junior_rules.html index 5bf4c78..5077c7a 100644 --- a/src/pentobi/help/de/pentobi/junior_rules.html +++ b/src/pentobi/help/de/pentobi/junior_rules.html @@ -13,8 +13,8 @@ gleichen 14×14-Brett gespielt wie die Spielvariante Duo, benutzt aber nur eine Teilmenge der Pentominos und die Spieler bekommen zwei von jedem dieser Pentominos.</p> -<p align="center"><img src="../../C/pentobi/pieces_junior.png" width="300" -height="110" alt="Spielsteine für Spielvariante Junior"></p> +<p align="center"><img src="../../C/pentobi/pieces_junior.png" alt= +"Spielsteine für Spielvariante Junior"></p> <div align="center" class="caption">Die 24 Spielsteine, die in Junior benutzt werden.</div> <p>Bonuspunkte werden in Junior nicht benutzt.</p> diff --git a/src/pentobi/help/de/pentobi/nexos_rules.html b/src/pentobi/help/de/pentobi/nexos_rules.html index 8413e69..85c3d98 100644 --- a/src/pentobi/help/de/pentobi/nexos_rules.html +++ b/src/pentobi/help/de/pentobi/nexos_rules.html @@ -12,14 +12,14 @@ <p>Nexos ist ein Brettspiel ähnlich wie Blokus. Das Spielbrett ist ein rechtwinkliges 13×13-Liniengitter. Jede Farbe benutzt 24 Spielsteine, die aus bis zu vier verbundenen Liniensegmenten bestehen.</p> -<p align="center"><img src="../../C/pentobi/pieces_nexos.png" width="308" -height="112" alt="Spielsteine für Nexos"></p> +<p align="center"><img src="../../C/pentobi/pieces_nexos.png" alt= +"Spielsteine für Nexos"></p> <div align="center" class="caption">Die 24 Spielsteine.</div> <p>Jede Farbe hat einen Startkreuzungspunkt auf der Kreuzung der dritten Linien nahe einer Ecke. Der erste Spielstein muss den Startkreuzungspunkt berühren.</p> -<p align="center"><img src="../../C/pentobi/board_nexos.png" width="320" -height="320" alt="Spielbrett für Nexos"></p> +<p align="center"><img src="../../C/pentobi/board_nexos.png" alt= +"Spielbrett für Nexos"></p> <div align="center" class="caption">Das Brett für Nexos mit den die Startkreuzungspunkte<br> berührenden Segmenten durch farbige Punkte markiert.</div> @@ -31,8 +31,8 @@ Allerdings dürfen sich Spielsteine nicht überlappen. Die Verbindungen zwischen den Segmenten innerhalb eines Spielsteins sind so, dass zwei rechtwinklige Verbindungen verschiedener Spielsteine denselben Kreuzungspunkt bedecken können ohne sich zu überlappen, während gerade Verbindungen das nicht können.</p> -<p align="center"><img src="../../C/pentobi/position_nexos.png" width="320" -height="320" alt="Beispielstellung für Nexos"></p> +<p align="center"><img src="../../C/pentobi/position_nexos.png" alt= +"Beispielstellung für Nexos"></p> <div align="center" class="caption">Eine Beispielstellung nach ein paar Zügen.</div> <p>Die Punktzahl einer Farbe ist die Anzahl der Liniensegmente auf dem Brett, diff --git a/src/pentobi/help/de/pentobi/trigon_rules.html b/src/pentobi/help/de/pentobi/trigon_rules.html index fe8ba16..ea28798 100644 --- a/src/pentobi/help/de/pentobi/trigon_rules.html +++ b/src/pentobi/help/de/pentobi/trigon_rules.html @@ -15,21 +15,21 @@ Spielsteine verwendet. Jede Farbe benutzt 22 Spielsteine, die wie die Polyiamonds bis zur Größe sechs geformt sind (ein Polyiamond ist eine Figur, die aus einer Anzahl von gleichseitigen Dreiecken besteht, die entlang der Kanten verbunden sind).</p> -<p align="center"><img src="../../C/pentobi/pieces_trigon.jpg" width="332" -height="115" alt="Spielsteine für Spielvariante Trigon"></p> +<p align="center"><img src="../../C/pentobi/pieces_trigon.jpg" alt= +"Spielsteine für Spielvariante Trigon"></p> <div align="center" class="caption">Die 22 Trigon-Spielsteine.</div> <p>Das Spielbrett besteht ebenfalls aus Dreiecken und hat die Form eines Sechsecks mit jeweils neun Dreiecken pro Kante.</p> -<p align="center"><img src="../../C/pentobi/board_trigon.jpg" width="320" -height="277" alt="Spielbrett für Spielvariante Trigon"></p> +<p align="center"><img src="../../C/pentobi/board_trigon.jpg" alt= +"Spielbrett für Spielvariante Trigon"></p> <div align="center" class="caption">Das Brett mit den Startfeldern<br> durch graue Punkte markiert.</div> <p>Es gibt sechs Startfelder auf dem Brett, jedes in der Mitte der vierten Reihe von jeder Kante aus gesehen. Die Startfelder sind nicht farbig und die Spieler dürfen das Startfeld für den ersten Spielstein einer Farbe frei wählen.</p> -<p align="center"><img src="../../C/pentobi/position_trigon.jpg" width="320" -height="276" alt="Beispielstellung für Spielvariante Trigon"></p> +<p align="center"><img src="../../C/pentobi/position_trigon.jpg" alt= +"Beispielstellung für Spielvariante Trigon"></p> <div align="center" class="caption">Eine Beispielstellung nach ein paar Zügen.</div> <h3>Regeln für zwei Spieler</h3> diff --git a/src/pentobi_qml/CMakeLists.txt b/src/pentobi_qml/CMakeLists.txt index 1865937..7bb5096 100644 --- a/src/pentobi_qml/CMakeLists.txt +++ b/src/pentobi_qml/CMakeLists.txt @@ -56,10 +56,3 @@ target_link_libraries(pentobi_qml Qt5::WebView Threads::Threads ) - -if(MSVC) - configure_file(pentobi.conf.in Debug/pentobi.conf @ONLY) - configure_file(pentobi.conf.in Release/pentobi.conf @ONLY) -else() - configure_file(pentobi.conf.in pentobi.conf @ONLY) -endif() diff --git a/src/pentobi_qml/Main.cpp b/src/pentobi_qml/Main.cpp index 3dca800..e468efa 100644 --- a/src/pentobi_qml/Main.cpp +++ b/src/pentobi_qml/Main.cpp @@ -45,6 +45,7 @@ int main(int argc, char *argv[]) { libboardgame_util::LogInitializer log_initializer; QGuiApplication app(argc, argv); + QtWebView::initialize(); app.setOrganizationName("Pentobi"); app.setApplicationName("Pentobi"); #ifdef VERSION @@ -112,7 +113,6 @@ int main(int argc, char *argv[]) PlayerModel::nuThreads = nuThreads; } QQmlApplicationEngine engine(QUrl("qrc:///qml/Main.qml")); - QtWebView::initialize(); return app.exec(); } catch (const bad_alloc&) diff --git a/src/pentobi_qml/Pentobi.pro b/src/pentobi_qml/Pentobi.pro index 82a9b35..b44518c 100644 --- a/src/pentobi_qml/Pentobi.pro +++ b/src/pentobi_qml/Pentobi.pro @@ -6,7 +6,7 @@ INCLUDEPATH += .. CONFIG += c++14 DEFINES += QT_DEPRECATED_WARNINGS DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x050900 -DEFINES += VERSION=\"\\\"14.0\\\"\" +DEFINES += VERSION=\"\\\"14.1\\\"\" DEFINES += PENTOBI_LOW_RESOURCES android { QMAKE_CXXFLAGS_RELEASE += -DLIBBOARDGAME_DISABLE_LOG @@ -103,7 +103,9 @@ RESOURCES += \ translations.qrc # Default rules for deployment. -include(deployment.pri) +qnx: target.path = /tmp/$${TARGET}/bin +else: unix:!android: target.path = /opt/$${TARGET}/bin +!isEmpty(target.path): INSTALLS += target HEADERS += \ AnalyzeGameModel.h \ @@ -220,9 +222,13 @@ SOURCES += \ qml/*.js } -TRANSLATIONS += \ - qml/i18n/qml_de.ts \ - qml/i18n/replace_qtbase_de.ts +TRANSLATIONS = $$files(qml/i18n/*.ts) +qtPrepareTool(LRELEASE, lrelease) +updateqm.input = TRANSLATIONS +updateqm.output = ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}.qm +updateqm.commands = $$LRELEASE -silent ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT} +updateqm.CONFIG += no_link target_predeps +QMAKE_EXTRA_COMPILERS += updateqm OTHER_FILES += \ android/AndroidManifest.xml diff --git a/src/pentobi_qml/PieceModel.cpp b/src/pentobi_qml/PieceModel.cpp index e7e318a..cc13f2c 100644 --- a/src/pentobi_qml/PieceModel.cpp +++ b/src/pentobi_qml/PieceModel.cpp @@ -11,6 +11,7 @@ #include "libboardgame_sys/Compiler.h" #include "libpentobi_base/Board.h" #include "libpentobi_base/GembloQTransform.h" +#include "libpentobi_base/PieceInfo.h" #include "libpentobi_base/TrigonTransform.h" using namespace std; diff --git a/src/pentobi_qml/android/AndroidManifest.xml b/src/pentobi_qml/android/AndroidManifest.xml index f209c77..897d035 100644 --- a/src/pentobi_qml/android/AndroidManifest.xml +++ b/src/pentobi_qml/android/AndroidManifest.xml @@ -1,5 +1,5 @@ <?xml version="1.0"?> -<manifest package="net.sf.pentobi" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="14.0" android:versionCode="14000" android:installLocation="auto"> +<manifest package="net.sf.pentobi" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="14.1" android:versionCode="14001" android:installLocation="auto"> <application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="Pentobi" android:theme="@style/AppTheme" android:icon="@drawable/icon"> <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="@string/app_name" android:screenOrientation="portrait" android:launchMode="singleTop" android:windowSoftInputMode="adjustPan"> <intent-filter> @@ -32,18 +32,8 @@ <!-- Splash screen --> </activity> </application> - <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="16"/> + <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23"/> <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/> - - <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application. - Remove the comment if you do not require these default permissions. --> - - - <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application. - Remove the comment if you do not require these default features. --> - - -<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> - - + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> + <!-- %%INSERT_FEATURES --> </manifest> diff --git a/src/pentobi_qml/deployment.pri b/src/pentobi_qml/deployment.pri deleted file mode 100644 index 5441b63..0000000 --- a/src/pentobi_qml/deployment.pri +++ /dev/null @@ -1,27 +0,0 @@ -android-no-sdk { - target.path = /data/user/qt - export(target.path) - INSTALLS += target -} else:android { - x86 { - target.path = /libs/x86 - } else: armeabi-v7a { - target.path = /libs/armeabi-v7a - } else { - target.path = /libs/armeabi - } - export(target.path) - INSTALLS += target -} else:unix { - isEmpty(target.path) { - qnx { - target.path = /tmp/$${TARGET}/bin - } else { - target.path = /opt/$${TARGET}/bin - } - export(target.path) - } - INSTALLS += target -} - -export(INSTALLS) diff --git a/src/pentobi_qml/pentobi.conf.in b/src/pentobi_qml/pentobi.conf.in deleted file mode 100644 index c0a0217..0000000 --- a/src/pentobi_qml/pentobi.conf.in +++ /dev/null @@ -1,3 +0,0 @@ -# Config file to override installation settings such that the executable -# can be tested without installation -HelpDir=@CMAKE_SOURCE_DIR@/src/pentobi/help diff --git a/src/pentobi_qml/qml/Button.qml b/src/pentobi_qml/qml/Button.qml index 25df28d..1f5ecd9 100644 --- a/src/pentobi_qml/qml/Button.qml +++ b/src/pentobi_qml/qml/Button.qml @@ -1,6 +1,6 @@ import QtQuick 2.0 import QtQuick.Window 2.0 -import Qt.labs.controls 1.0 +import QtQuick.Controls 2.0 /** Button that supports an automatically scaled image. The image source should be a SVG file with size 22x22. */ diff --git a/src/pentobi_qml/qml/Comment.qml b/src/pentobi_qml/qml/Comment.qml index 69ce58c..d1c3f72 100644 --- a/src/pentobi_qml/qml/Comment.qml +++ b/src/pentobi_qml/qml/Comment.qml @@ -3,8 +3,6 @@ import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 TextArea { - id: comment - style: TextAreaStyle { textColor: theme.fontColorPosInfo selectionColor: theme.selectionColor diff --git a/src/pentobi_qml/qml/ComputerColorDialog.qml b/src/pentobi_qml/qml/ComputerColorDialog.qml index ce5b3ed..e2342cc 100644 --- a/src/pentobi_qml/qml/ComputerColorDialog.qml +++ b/src/pentobi_qml/qml/ComputerColorDialog.qml @@ -1,5 +1,5 @@ import QtQuick 2.0 -import Qt.labs.controls 1.0 +import QtQuick.Controls 2.0 import QtQuick.Layouts 1.1 import QtQuick.Dialogs 1.2 diff --git a/src/pentobi_qml/qml/ExportImageDialog.qml b/src/pentobi_qml/qml/ExportImageDialog.qml index f010242..a4b2303 100644 --- a/src/pentobi_qml/qml/ExportImageDialog.qml +++ b/src/pentobi_qml/qml/ExportImageDialog.qml @@ -1,5 +1,5 @@ import QtQuick 2.0 -import Qt.labs.controls 1.0 +import QtQuick.Controls 2.0 import QtQuick.Dialogs 1.2 Dialog { diff --git a/src/pentobi_qml/qml/GameDisplayMobile.qml b/src/pentobi_qml/qml/GameDisplayMobile.qml index 800a543..4da5aab 100644 --- a/src/pentobi_qml/qml/GameDisplayMobile.qml +++ b/src/pentobi_qml/qml/GameDisplayMobile.qml @@ -1,6 +1,6 @@ import QtQuick 2.0 import QtQuick.Controls 1.1 -import Qt.labs.controls 1.0 as Controls2 +import QtQuick.Controls 2.0 as Controls2 import QtQuick.Layouts 1.0 import Qt.labs.settings 1.0 import "GameDisplay.js" as Logic diff --git a/src/pentobi_qml/qml/GameInfoDialog.qml b/src/pentobi_qml/qml/GameInfoDialog.qml index 32db46e..eab7807 100644 --- a/src/pentobi_qml/qml/GameInfoDialog.qml +++ b/src/pentobi_qml/qml/GameInfoDialog.qml @@ -1,5 +1,5 @@ import QtQuick 2.0 -import Qt.labs.controls 1.0 +import QtQuick.Controls 2.0 import QtQuick.Dialogs 1.2 import QtQuick.Layouts 1.0 diff --git a/src/pentobi_qml/qml/GotoMoveDialog.qml b/src/pentobi_qml/qml/GotoMoveDialog.qml index a0341ad..768b156 100644 --- a/src/pentobi_qml/qml/GotoMoveDialog.qml +++ b/src/pentobi_qml/qml/GotoMoveDialog.qml @@ -1,5 +1,5 @@ import QtQuick 2.0 -import Qt.labs.controls 1.0 +import QtQuick.Controls 2.0 import QtQuick.Dialogs 1.2 Dialog { diff --git a/src/pentobi_qml/qml/HelpWindow.qml b/src/pentobi_qml/qml/HelpWindow.qml index 3e43d34..3a8b6a5 100644 --- a/src/pentobi_qml/qml/HelpWindow.qml +++ b/src/pentobi_qml/qml/HelpWindow.qml @@ -15,9 +15,14 @@ Window { } property url startUrl: helpFileExtractor.extract(language) + // Instead of initializing webView.url with startUrl, we provide an init + // function that needs to be called after show() to work around an issue + // with the initial zoom factor of WebView sometimes very large on Android + // (last tested with Qt 5.9.2) + function init() { webView.url = startUrl } + width: isAndroid ? Screen.desktopAvailableWidth : Math.min(Screen.pixelDensity * 150, Screen.desktopAvailableWidth) height: isAndroid ? Screen.desktopAvailableHeight : Math.min(Screen.pixelDensity * 180, Screen.desktopAvailableHeight) - visibility: Window.AutomaticVisibility title: qsTr("Pentobi Help") color: theme.backgroundColor flags: Qt.Dialog @@ -31,14 +36,6 @@ Window { id: webView anchors.fill: parent - url: startUrl - - // Workaround for a bug in Qt on Android that makes the webview - // sometimes have a very small initial width until it is scrolled for - // the first time despite that we create it with - // "anchors.fill: parent" (last tested with Qt 5.8-rc) - onWidthChanged: reload() - onHeightChanged: reload() } HelpFileExtractor { id: helpFileExtractor } } diff --git a/src/pentobi_qml/qml/InitialRatingDialog.qml b/src/pentobi_qml/qml/InitialRatingDialog.qml index 037a818..00f80c9 100644 --- a/src/pentobi_qml/qml/InitialRatingDialog.qml +++ b/src/pentobi_qml/qml/InitialRatingDialog.qml @@ -1,5 +1,5 @@ import QtQuick 2.0 -import Qt.labs.controls 1.0 +import QtQuick.Controls 2.0 import QtQuick.Controls 1.2 as Controls1 import QtQuick.Dialogs 1.2 import QtQuick.Layouts 1.0 diff --git a/src/pentobi_qml/qml/Main.js b/src/pentobi_qml/qml/Main.js index 925a569..9df2b22 100644 --- a/src/pentobi_qml/qml/Main.js +++ b/src/pentobi_qml/qml/Main.js @@ -5,7 +5,7 @@ function about() { showInfo("<h2>" + qsTr("Pentobi") + "</h2><br/>" + qsTr("Version %1").arg(Qt.application.version) + "<br/><br/>" + qsTr("Computer opponent for the board game Blokus.") + "<br/>" + - qsTr("Copyright 2011-%1 Markus Enzenberger").arg(2017) + + qsTr("Copyright 2011-%1 Markus Enzenberger").arg(2018) + "<br><a href=\"" + url + "\">" + url + "</a></p>") } @@ -268,6 +268,7 @@ function help() { if (helpWindowLoader.status === Loader.Null) helpWindowLoader.source = "HelpWindow.qml" helpWindowLoader.item.show() + helpWindowLoader.item.init() } function init() { diff --git a/src/pentobi_qml/qml/Main.qml b/src/pentobi_qml/qml/Main.qml index 480d42d..758ad6d 100644 --- a/src/pentobi_qml/qml/Main.qml +++ b/src/pentobi_qml/qml/Main.qml @@ -45,7 +45,6 @@ Window { minimumWidth: 240; minimumHeight: 301 width: defaultWidth; height: defaultHeight - visibility: Window.AutomaticVisibility color: theme.backgroundColor title: qsTr("Pentobi") Component.onCompleted: { diff --git a/src/pentobi_qml/qml/MessageDialog.qml b/src/pentobi_qml/qml/MessageDialog.qml index 995a4dc..77367a2 100644 --- a/src/pentobi_qml/qml/MessageDialog.qml +++ b/src/pentobi_qml/qml/MessageDialog.qml @@ -1,5 +1,5 @@ import QtQuick 2.0 -import Qt.labs.controls 1.0 +import QtQuick.Controls 2.0 import QtQuick.Dialogs 1.2 import QtQuick.Window 2.0 diff --git a/src/pentobi_qml/qml/PieceCallisto.qml b/src/pentobi_qml/qml/PieceCallisto.qml index b9ab63f..419bfd4 100644 --- a/src/pentobi_qml/qml/PieceCallisto.qml +++ b/src/pentobi_qml/qml/PieceCallisto.qml @@ -254,7 +254,7 @@ Item NumberAnimation { properties: "x,y,scale" duration: 300 - easing.type: Easing.InOutQuad + easing.type: Easing.InOutSine } } } diff --git a/src/pentobi_qml/qml/PieceClassic.qml b/src/pentobi_qml/qml/PieceClassic.qml index 19d026c..782aeb6 100644 --- a/src/pentobi_qml/qml/PieceClassic.qml +++ b/src/pentobi_qml/qml/PieceClassic.qml @@ -218,7 +218,7 @@ Item NumberAnimation { properties: "x,y,scale" duration: 300 - easing.type: Easing.InOutQuad + easing.type: Easing.InOutSine } } } diff --git a/src/pentobi_qml/qml/PieceGembloQ.qml b/src/pentobi_qml/qml/PieceGembloQ.qml index 4ab9be0..cc5df91 100644 --- a/src/pentobi_qml/qml/PieceGembloQ.qml +++ b/src/pentobi_qml/qml/PieceGembloQ.qml @@ -254,7 +254,7 @@ Item NumberAnimation { properties: "x,y,scale" duration: 300 - easing.type: Easing.InOutQuad + easing.type: Easing.InOutSine } } } diff --git a/src/pentobi_qml/qml/PieceNexos.qml b/src/pentobi_qml/qml/PieceNexos.qml index c954a04..99372fd 100644 --- a/src/pentobi_qml/qml/PieceNexos.qml +++ b/src/pentobi_qml/qml/PieceNexos.qml @@ -271,7 +271,7 @@ Item NumberAnimation { properties: "x,y,scale" duration: 300 - easing.type: Easing.InOutQuad + easing.type: Easing.InOutSine } } } diff --git a/src/pentobi_qml/qml/PieceTrigon.qml b/src/pentobi_qml/qml/PieceTrigon.qml index 29b1ef1..6bea320 100644 --- a/src/pentobi_qml/qml/PieceTrigon.qml +++ b/src/pentobi_qml/qml/PieceTrigon.qml @@ -257,7 +257,7 @@ Item NumberAnimation { properties: "x,y,scale" duration: 300 - easing.type: Easing.InOutQuad + easing.type: Easing.InOutSine } } } diff --git a/src/pentobi_qml/qml/RatingDialog.qml b/src/pentobi_qml/qml/RatingDialog.qml index e13c092..888edc3 100644 --- a/src/pentobi_qml/qml/RatingDialog.qml +++ b/src/pentobi_qml/qml/RatingDialog.qml @@ -1,5 +1,5 @@ import QtQuick 2.0 -import Qt.labs.controls 1.0 +import QtQuick.Controls 2.0 import QtQuick.Controls 1.1 as Controls1 import QtQuick.Dialogs 1.2 import QtQuick.Layouts 1.0 diff --git a/src/pentobi_qml/qml/ToolBar.qml b/src/pentobi_qml/qml/ToolBar.qml index 2d4cff1..10ad727 100644 --- a/src/pentobi_qml/qml/ToolBar.qml +++ b/src/pentobi_qml/qml/ToolBar.qml @@ -1,6 +1,6 @@ import QtQuick 2.0 import QtQuick.Controls 1.1 -import Qt.labs.controls 1.0 as Controls2 +import QtQuick.Controls 2.0 as Controls2 import QtQuick.Layouts 1.1 import QtQuick.Window 2.0 import "." as Pentobi diff --git a/src/twogtp/Analyze.cpp b/src/twogtp/Analyze.cpp index 198a60f..a5a77b3 100644 --- a/src/twogtp/Analyze.cpp +++ b/src/twogtp/Analyze.cpp @@ -12,7 +12,6 @@ #include <fstream> #include <map> -#include <regex> #include "libboardgame_util/FmtSaver.h" #include "libboardgame_util/Statistics.h" #include "libboardgame_util/StringUtil.h" diff --git a/src/unittest/libboardgame_gtp/EngineTest.cpp b/src/unittest/libboardgame_gtp/EngineTest.cpp index de8aff5..e1d07cf 100644 --- a/src/unittest/libboardgame_gtp/EngineTest.cpp +++ b/src/unittest/libboardgame_gtp/EngineTest.cpp @@ -64,20 +64,20 @@ void InvalidResponseEngine::invalid_response_2(Response& r) LIBBOARDGAME_TEST_CASE(gtp_engine_command) { - istringstream in("version\n"); + istringstream in("known_command known_command\n"); ostringstream out; Engine engine; engine.exec_main_loop(in, out); - LIBBOARDGAME_CHECK_EQUAL(string("= \n\n"), out.str()); + LIBBOARDGAME_CHECK_EQUAL(string("= true\n\n"), out.str()); } LIBBOARDGAME_TEST_CASE(gtp_engine_command_with_id) { - istringstream in("10 version\n"); + istringstream in("10 known_command known_command\n"); ostringstream out; Engine engine; engine.exec_main_loop(in, out); - LIBBOARDGAME_CHECK_EQUAL(string("=10 \n\n"), out.str()); + LIBBOARDGAME_CHECK_EQUAL(string("=10 true\n\n"), out.str()); } /** Check that invalid responses with one empty line are sanitized. */ -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/pentobi.git _______________________________________________ Pkg-games-commits mailing list Pkg-games-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits