From e52cebeda021cf4e76330eabd3777ec6136720d3 Mon Sep 17 00:00:00 2001 From: Constantin Date: Fri, 19 Jul 2013 20:25:57 +0200 Subject: [PATCH 1/1] ralfs Fixes --- play.sh | 2 +- qt/multypo.cpp | 22 +++++++++++++++------- qt/player.cpp | 12 ++++++++---- qt/player.h | 2 +- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/play.sh b/play.sh index f51371e..6c3b185 100755 --- a/play.sh +++ b/play.sh @@ -4,5 +4,5 @@ WORDSTOPLAY=10 -sort -R dict.txt | egrep '^[A-Za-z]{5,}$' | head -n $WORDSTOPLAY | tr [:upper:] [:lower:] +sort -R dict.txt | egrep '^[A-Za-z]{5,}$' | head -n $WORDSTOPLAY | tr [:upper:] [:lower:] | qt/multypo diff --git a/qt/multypo.cpp b/qt/multypo.cpp index 8dea3e0..c9e7101 100644 --- a/qt/multypo.cpp +++ b/qt/multypo.cpp @@ -12,15 +12,16 @@ MultypoWindow::MultypoWindow(QWidget *parent) : QWidget(parent), - xiInited(false) + xiInited(false), + gameStarted(false) { /* Prepare colors */ - setStyleSheet("background-color: black; color: green; font-size: 30pt"); + setStyleSheet("background-color: black; color: green; font-size: 55pt"); /* Prepare conents */ setLayout(new QVBoxLayout(this)); - mainLabel = new QLabel("Hit to quit", this); + mainLabel = new QLabel("Namen eingeben, dann Return", this); layout()->addWidget(mainLabel); /* Fullscreen, no cursor */ @@ -28,6 +29,8 @@ MultypoWindow::MultypoWindow(QWidget *parent) : setCursor(QCursor(Qt::BlankCursor)); words.open(stdin,QIODevice::ReadOnly); + + typingPlayers = 0; } MultypoWindow::~MultypoWindow() @@ -43,6 +46,7 @@ void MultypoWindow::resetPlayerText() { void MultypoWindow::nextWord() { QByteArray tmp = words.readLine().trimmed(); QString word = QString::fromUtf8(tmp); + qDebug() << "New word" << word; if (word.isEmpty()) { // game over mainLabel->setText("GAME OVER"); for (QMap::Iterator it = players.begin(); it != players.end(); ++it) { @@ -66,14 +70,16 @@ void MultypoWindow::handleKeyPress(int device, QString string) } if (!players.contains(device)) { + if (gameStarted) + return; players[device] = new Player(this); } - players[device]->handleKey(string); + bool newChar = players[device]->handleKey(string); if (gameStarted) { // ingame - qDebug() << players[device]->getCurrentLine(); - qDebug() << mainLabel->text(); - if (players[device]->getCurrentLine() == mainLabel->text()) { + qDebug() << "current player line" << players[device]->getCurrentLine(); + qDebug() << "current word" << mainLabel->text(); + if (newChar && players[device]->getCurrentLine() == mainLabel->text()) { players[device]->score += typingPlayers; QString readyString = QString("READY: %1 points").arg(typingPlayers); players[device]->setWaiting(readyString); @@ -85,6 +91,7 @@ void MultypoWindow::handleKeyPress(int device, QString string) } } } else { // name entering phase + qDebug() << "checking for game started"; bool allHaveNames = true; for (QMap::Iterator it = players.begin(); it != players.end(); ++it) { if (! it.value()->hasName()) { @@ -92,6 +99,7 @@ void MultypoWindow::handleKeyPress(int device, QString string) break; } } + qDebug() << "Players empty?" << players.empty() << "All have names?" << allHaveNames; if (!players.empty() && allHaveNames) { gameStarted = true; nextWord(); diff --git a/qt/player.cpp b/qt/player.cpp index 4c84eb7..937bbab 100644 --- a/qt/player.cpp +++ b/qt/player.cpp @@ -1,6 +1,7 @@ #include "player.h" #include +#include static QString colorToString(QColor col) { @@ -13,11 +14,11 @@ Player::Player(QWidget* parent) { theLabel = new QLabel (parent); parent->layout()->addWidget(theLabel); modifyable = true; + qDebug() << "Player created"; } - bool Player::hasName() { - return !name.isNull(); + return !name.isEmpty(); } QString Player::getName() { @@ -39,11 +40,13 @@ void Player::resetText() { modifyable = true; } -void Player::handleKey(QString str) { +bool Player::handleKey(QString str) { if (!modifyable) - return; + return false; + bool newChar = false; if (str.length() == 1) { currentLine += str; + newChar = true; } else if (!hasName() && str == "Return") { // set name name = currentLine; @@ -52,4 +55,5 @@ void Player::handleKey(QString str) { currentLine.chop(1); } theLabel->setText(currentLine); + return newChar; } diff --git a/qt/player.h b/qt/player.h index 7b78283..c74413c 100644 --- a/qt/player.h +++ b/qt/player.h @@ -13,7 +13,7 @@ private: bool modifyable; public: Player(QWidget* parent); - void handleKey(QString); + bool handleKey(QString); /* returns whether a char was added */ void resetText(); bool hasName(); QString getName(); -- 2.30.2