source: trunk/doc/src/examples/rogue.qdoc@ 1168

Last change on this file since 1168 was 846, checked in by Dmitry A. Kuminov, 14 years ago

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

  • Property svn:eol-style set to native
File size: 8.5 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the documentation of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:FDL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in a
14** written agreement between you and Nokia.
15**
16** GNU Free Documentation License
17** Alternatively, this file may be used under the terms of the GNU Free
18** Documentation License version 1.3 as published by the Free Software
19** Foundation and appearing in the file included in the packaging of this
20** file.
21**
22** If you have questions regarding the use of this file, please contact
23** Nokia at [email protected].
24** $QT_END_LICENSE$
25**
26****************************************************************************/
27
28/*!
29 \example statemachine/rogue
30 \title Rogue Example
31
32 The Rogue example shows how to use the Qt state machine for event
33 handling.
34
35 \image rogue-example.png
36
37 This example implements a simple text based game. Do you see the
38 \c{@} in the screenshot? That's you, the rogue. The \c{#}
39 characters are walls, and the dots represent floor. In a real
40 game, other ASCII characters would represent all kinds of objects
41 and creatures, for instance, ancient dragons (\c{D}s) or food
42 rations (\c{%}s). But let's not get carried away. In this game,
43 the rogue is simply running around in an empty room.
44
45 The rogue is moved with the keypad (2, 4, 8, 6). That aside, we
46 have implemented a \c quit command that triggers if the player
47 types \c {q}. The player is then asked if he/she really wants to
48 quit.
49
50 Most games have commands that need more than one key press (we
51 think of consecutive presses, i.e., not of several keys being
52 pressed at the same time). In this game, only the \c quit command
53 falls under this category, but for the sake of argument, let's
54 imagine a fully-fledged game with a rich set of commands. If we
55 were to implement these by catching key events in
56 \l{QWidget::}{keyPressEvent()}, we would have to keep a lot of
57 class member variables to track the sequence of keys already typed
58 (or find some other way of deducing the current state of a