Wt examples
3.3.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
build
witty-j3_x7u
witty-3.3.0
examples
hangman
HangmanWidget.C
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2011 Emweb bvba, Heverlee, Belgium
3
*
4
* See the LICENSE file for terms of use.
5
*/
6
7
#include "
HangmanWidget.h
"
8
9
#include <Wt/WBreak>
10
#include <Wt/WComboBox>
11
#include <Wt/WPushButton>
12
#include <Wt/WText>
13
#include <boost/lexical_cast.hpp>
14
15
#include "
Session.h
"
16
#include "
WordWidget.h
"
17
#include "
ImagesWidget.h
"
18
#include "
LettersWidget.h
"
19
20
using namespace
Wt;
21
22
namespace
{
23
const
int
MaxGuesses = 9;
24
}
25
26
HangmanWidget::HangmanWidget
(
const
std::string &name,
WContainerWidget
*parent)
27
:
WContainerWidget
(parent),
28
name_(name),
29
badGuesses_(0)
30
{
31
setContentAlignment
(
AlignCenter
);
32
33
title_
=
new
WText
(
tr
(
"hangman.readyToPlay"
),
this
);
34
35
word_
=
new
WordWidget
(
this
);
36
statusText_
=
new
WText
(
this
);
37
images_
=
new
ImagesWidget
(MaxGuesses,
this
);
38
39
letters_
=
new
LettersWidget
(
this
);
40
letters_
->
letterPushed
().
connect
(
this
, &
HangmanWidget::registerGuess
);
41
42
language_
=
new
WComboBox
(
this
);
43
language_
->
addItem
(
tr
(
"hangman.englishWords"
).arg(18957));
44
language_
->
addItem
(
tr
(
"hangman.dutchWords"
).arg(1688));
45
46
new
WBreak
(
this
);
47
48
newGameButton_
=
new
WPushButton
(
tr
(
"hangman.newGame"
),
this
);
49
newGameButton_
->
clicked
().connect(
this
, &
HangmanWidget::newGame
);
50
51
letters_
->
hide
();
52
}
53
54
void
HangmanWidget::newGame
()
55
{
56
WString
title(
tr
(
"hangman.guessTheWord"
));
57
title_
->
setText
(title.
arg
(
name_
));
58
59
language_
->
hide
();
60
newGameButton_
->
hide
();
61
62
/*
63
* Choose a new secret word and reset the game
64
*/
65
Dictionary
dictionary = (
Dictionary
)
language_
->
currentIndex
();
66
word_
->
init
(
RandomWord
(dictionary));
67
letters_
->
reset
();
68
badGuesses_
= 0;
69
images_
->
showImage
(
badGuesses_
);
70
statusText_
->
setText
(
""
);
71
}
72
73
void
HangmanWidget::registerGuess
(
char
c)
74
{
75
bool
correct =
word_
->
guess
(c);
76
77
if
(!correct) {
78
++
badGuesses_
;
79
images_
->
showImage
(
badGuesses_
);
80
}
81
82
if
(
badGuesses_
== MaxGuesses) {
83
WString
status(
tr
(
"hangman.youHang"
));
84
statusText_
->
setText
(status.
arg
(
word_
->
word
()));
85
86
letters_
->
hide
();
87
language_
->
show
();
88
newGameButton_
->
show
();
89
90
scoreUpdated_
.
emit
(-10);
91
}
else
if
(
word_
->
won
()) {
92
statusText_
->
setText
(
tr
(
"hangman.youWin"
));
93
images_
->
showImage
(
ImagesWidget::HURRAY
);
94
95
letters_
->
hide
();
96
language_
->
show
();
97
newGameButton_
->
show
();
98
99
scoreUpdated_
.
emit
(20 -
badGuesses_
);
100
}
101
}
Session.h
WordWidget
Definition:
WordWidget.h:13
Wt::Signal::emit
void emit(A1 a1=NoClass::none, A2 a2=NoClass::none, A3 a3=NoClass::none, A4 a4=NoClass::none, A5 a5=NoClass::none, A6 a6=NoClass::none) const
HangmanWidget::scoreUpdated_
Wt::Signal< int > scoreUpdated_
Definition:
HangmanWidget.h:40
HangmanWidget::newGame
void newGame()
Definition:
HangmanWidget.C:54
Wt::WString::arg
WString & arg(const std::wstring &value)
Wt::WInteractWidget::clicked
EventSignal< WMouseEvent > & clicked()
LettersWidget.h
LettersWidget::reset
void reset()
Definition:
LettersWidget.C:39
ImagesWidget.h
Wt::WWidget::tr
static WString tr(const char *key)
Wt::WComboBox::addItem
void addItem(const WString &text)
Wt::WWidget::show
void show()
Wt::WText
HangmanWidget::images_
ImagesWidget * images_
Definition:
HangmanWidget.h:33
LettersWidget
Definition:
LettersWidget.h:19
Wt::WComboBox::currentIndex
int currentIndex() const
WordWidget::init
void init(const std::wstring &word)
Definition:
WordWidget.C:19
Wt::WWidget::hide
void hide()
Wt::WContainerWidget::setContentAlignment
void setContentAlignment(WFlags< AlignmentFlag > contentAlignment)
ImagesWidget::showImage
void showImage(int index)
Definition:
ImagesWidget.C:38
Wt::WText::setText
bool setText(const WString &text)
HangmanWidget::HangmanWidget
HangmanWidget(const std::string &name, Wt::WContainerWidget *parent=0)
Definition:
HangmanWidget.C:26
Wt::AlignCenter
AlignCenter
HangmanWidget::language_
Wt::WComboBox * language_
Definition:
HangmanWidget.h:37
ImagesWidget::HURRAY
static const int HURRAY
Definition:
ImagesWidget.h:18
HangmanWidget::word_
WordWidget * word_
Definition:
HangmanWidget.h:32
Wt::WPushButton
Wt::Signal::connect
virtual boost::signals::connection connect(WObject *target, WObject::Method method)
WordWidget.h
WordWidget::word
std::wstring word() const
Definition:
WordWidget.h:18
WordWidget::guess
bool guess(wchar_t c)
Definition:
WordWidget.C:32
HangmanWidget::newGameButton_
Wt::WPushButton * newGameButton_
Definition:
HangmanWidget.h:38
Dictionary
Dictionary
Definition:
Dictionary.h:13
Wt::WString
WordWidget::won
bool won()
Definition:
WordWidget.C:47
HangmanWidget::letters_
LettersWidget * letters_
Definition:
HangmanWidget.h:34
HangmanWidget::name_
std::string name_
Definition:
HangmanWidget.h:42
Wt::WComboBox
RandomWord
std::wstring RandomWord(Dictionary dictionary)
Definition:
Dictionary.C:16
Wt::WContainerWidget
LettersWidget::letterPushed
Wt::Signal< char > & letterPushed()
Definition:
LettersWidget.h:26
HangmanWidget::badGuesses_
int badGuesses_
Definition:
HangmanWidget.h:45
HangmanWidget::statusText_
Wt::WText * statusText_
Definition:
HangmanWidget.h:36
HangmanWidget::title_
Wt::WText * title_
Definition:
HangmanWidget.h:30
HangmanWidget.h
ImagesWidget
Definition:
ImagesWidget.h:15
Wt::WBreak
HangmanWidget::registerGuess
void registerGuess(char c)
Definition:
HangmanWidget.C:73
Generated on Tue Dec 3 2013 for
the C++ Web Toolkit (Wt)
by
1.8.5