[SCM] Development fot GoFind! branch, master, updated. 97cf7519db476bae719fffb07c829b6ce2ac18b9
Miriam Ruiz
miriam at debian.org
Thu Apr 30 13:36:41 UTC 2009
The following commit has been merged in the master branch:
commit 97cf7519db476bae719fffb07c829b6ce2ac18b9
Author: Miriam Ruiz <miriam at debian.org>
Date: Thu Apr 30 15:44:05 2009 +0200
Finished filter configuration loader
Added support for minimal recommended age
diff --git a/filter.cfg b/filter.cfg
index ff9fba1..0a3ad42 100644
--- a/filter.cfg
+++ b/filter.cfg
@@ -1,18 +1,27 @@
<gofind version="1">
- <filter target="black" id="B 1">
+ <filter class="hidden" id="invisible">
+ </filter>
+ <filter class="highlight" id="gold">
+ </filter>
+ <filter class="intolerable" id="black">
<rule condition="sex::violent" />
</filter>
- <filter target="red" id="R 1">
- <rule condition="violence::non-realistic-optional" />
- <rule condition="violence::non-realistic" id="R 1 b" />
+ <filter class="dangerous" id="red">
+ <rule condition="violence::realistic" />
+ <rule condition="violence::against-humans | violence::against-players" />
+ <rule condition="sex::realistic" />
+ </filter>
+ <filter class="warning" id="yellow">
+ <rule condition="violence::realistic-optional | violence::non-realistic | violence::non-realistic-optional" />
+ </filter>
+ <filter class="safe" id="green">
+ <rule condition="violence::none & sex::none" />
</filter>
- <filter target="yellow" id="Y 1">
- <rule condition=" ! issues::horror" />
+ <filter class="recommended" id="blue">
</filter>
- <filter target="yellow" id="Y 2">
- <rule condition="issues::horror&(issues::horror|issues::cruelty)" />
+ <filter class="normal" id="white">
</filter>
- <filter target="green" id="G 1">
- <rule condition="violence::none & sex::none & !issues::bad-words & ! issues::discrimination " />
+ <filter age="6" id="reading skills">
+ <rule condition="!cognitive::no-reading & !cognitive::minimal-reading" />
</filter>
</gofind>
diff --git a/filter.cpp b/filter.cpp
index c0fd46e..3dc49b2 100644
--- a/filter.cpp
+++ b/filter.cpp
@@ -50,6 +50,9 @@ PackageFilter::~PackageFilter()
DeleteList();
}
+const char *const PackageFilter::TypeNames[16] = { NULL, "Unknown", "Recommended", "Safe", "Normal",
+ "Warning", "Dangerous", "Intolerable", "Highlight", "Hidden", NULL };
+
using namespace std;
bool PackageFilter::Load(FILE *fd)
@@ -79,23 +82,39 @@ bool PackageFilter::Load(FILE *fd)
if (atoi(version->value()) != 1) return false;
Type type = PackageFilter::Unknown;
+ int min_age = 0;
for (rapidxml::xml_node<> *filter = data->first_node("filter");
filter; filter = filter->next_sibling("filter"))
{
- rapidxml::xml_attribute<> *target = filter->first_attribute("target");
- if (!target) break;
- std::cout << target->name() << " = " << target->value() << std::endl;
-
- if (strcasecmp(target->value(), "black") == 0) type = PackageFilter::Black;
- else if (strcasecmp(target->value(), "red") == 0) type = PackageFilter::Red;
- else if (strcasecmp(target->value(), "yellow") == 0) type = PackageFilter::Yellow;
- else if (strcasecmp(target->value(), "green") == 0) type = PackageFilter::Green;
- else if (strcasecmp(target->value(), "white") == 0) type = PackageFilter::White;
- else if (strcasecmp(target->value(), "blue") == 0) type = PackageFilter::Blue;
- else if (strcasecmp(target->value(), "hidden") == 0) type = PackageFilter::Hidden;
+ rapidxml::xml_attribute<> *target = filter->first_attribute("class");
+
+ if (target)
+ {
+ std::cout << target->name() << " = " << target->value() << std::endl;
+
+ if (strcasecmp(target->value(), "intolerable") == 0) type = PackageFilter::Intolerable;
+ else if (strcasecmp(target->value(), "dangerous") == 0) type = PackageFilter::Dangerous;
+ else if (strcasecmp(target->value(), "warning") == 0) type = PackageFilter::Warning;
+ else if (strcasecmp(target->value(), "normal") == 0) type = PackageFilter::Normal;
+ else if (strcasecmp(target->value(), "safe") == 0) type = PackageFilter::Safe;
+ else if (strcasecmp(target->value(), "recommended") == 0) type = PackageFilter::Recommended;
+ else if (strcasecmp(target->value(), "highlight") == 0) type = PackageFilter::Highlight;
+ else if (strcasecmp(target->value(), "hidden") == 0) type = PackageFilter::Hidden;
+ else type = PackageFilter::Unknown;
+ }
else type = PackageFilter::Unknown;
+ rapidxml::xml_attribute<> *age = filter->first_attribute("age");
+
+ if (age)
+ {
+ std::cout << age->name() << " = " << age->value() << std::endl;
+ int age_num = atoi(age->value());
+ if (min_age < age_num)
+ min_age = age_num;
+ }
+
rapidxml::xml_attribute<> *tid = filter->first_attribute("id");
if (tid)
std::cout << tid->name() << " = " << tid->value() << std::endl;
@@ -108,10 +127,12 @@ bool PackageFilter::Load(FILE *fd)
rapidxml::xml_attribute<> *rid = rule->first_attribute("id");
if (rid)
std::cout << rid->name() << " = " << rid->value() << std::endl;
+ std::cout << type << std::endl;
std::cout << condition->name() << " = " << condition->value() << std::endl;
if (!AddLast(
rid ? rid->value() : tid ? tid->value() : "?" ,
type,
+ min_age,
condition->value()
))
std::cerr << "Error Adding '"<< condition->value() << "'" << std::endl;
@@ -144,18 +165,21 @@ int PackageFilter::TagValue(const Tag &tag)
//std::string facet_name = tag.facet().name();
//std::string tag_name = tag.name();
+ Type type = PackageFilter::Unknown;
+
// The order is important
PackageFilter::ResultList *item = list;
while (item != NULL) {
if (tagdata.CheckTag(&item->positive, name))
{
//std::cout << "ITEM = " << item->name << std::endl;
- return item->type;
+ if (type < item->type)
+ type = item->type;
}
item = item->next;
}
- return PackageFilter::Unknown;
+ return type;
}
/* Find out the color of a set of tags */
@@ -174,6 +198,8 @@ int PackageFilter::TagsValue(const TagSet &tags)
tagdata.SetTagIfExists(&t, name);
}
+ Type type = PackageFilter::Unknown;
+
// The order is important
PackageFilter::ResultList *item = list;
while (item != NULL) {
@@ -185,12 +211,13 @@ int PackageFilter::TagsValue(const TagSet &tags)
if (t.CompareAll(item->positive) && !t.CompareAny(item->negative))
{
//std::cout << "ITEM = " << item->name << std::endl;
- return item->type;
+ if (type < item->type)
+ type = item->type;
}
item = item->next;
}
- return PackageFilter::Unknown;
+ return type;
}
@@ -229,7 +256,7 @@ bool PackageFilter::AddLastAndHelper(ResultList *element, boolstuff::BoolExpr<st
return success;
}
-bool PackageFilter::AddLastOrHelper(const std::string str, Type t, boolstuff::BoolExpr<std::string> *expr)
+bool PackageFilter::AddLastOrHelper(const std::string str, Type type, int age, boolstuff::BoolExpr<std::string> *expr)
{
bool success = true;
@@ -242,7 +269,7 @@ bool PackageFilter::AddLastOrHelper(const std::string str, Type t, boolstuff::Bo
case boolstuff::BoolExpr<std::string>::NOT:
case boolstuff::BoolExpr<std::string>::AND:
if (!success) break;
- element = new ResultList(str, t);
+ element = new ResultList(str, type, age);
success &= AddLastAndHelper(element, expr);
if (success) AddLast(element);
else delete element;
@@ -250,9 +277,9 @@ bool PackageFilter::AddLastOrHelper(const std::string str, Type t, boolstuff::Bo
case boolstuff::BoolExpr<std::string>::OR:
if (!success) break;
if (expr->getLeft())
- success &= AddLastOrHelper(str, t, expr->getLeft());
+ success &= AddLastOrHelper(str, type, age, expr->getLeft());
if (expr->getRight())
- success &= AddLastOrHelper(str, t, expr->getRight());
+ success &= AddLastOrHelper(str, type, age, expr->getRight());
break;
default:
success = false;
@@ -262,7 +289,7 @@ bool PackageFilter::AddLastOrHelper(const std::string str, Type t, boolstuff::Bo
return success;
}
-bool PackageFilter::AddLast(const std::string str, Type t, const std::string &bool_expr)
+bool PackageFilter::AddLast(const std::string str, Type type, int age, const std::string &bool_expr)
{
bool success = true;
BoolParser parser;
@@ -280,7 +307,7 @@ bool PackageFilter::AddLast(const std::string str, Type t, const std::string &bo
else
{
//std::cout << "expr = " << expr << std::endl;
- success &= AddLastOrHelper(str, t, expr);
+ success &= AddLastOrHelper(str, type, age, expr);
}
delete expr;
@@ -289,6 +316,7 @@ bool PackageFilter::AddLast(const std::string str, Type t, const std::string &bo
{
std::cout << "? column " << err.index + 1
<< " : ";
+ success = false;
switch (err.code)
{
case BoolParser::Error::GARBAGE_AT_END:
@@ -299,10 +327,12 @@ bool PackageFilter::AddLast(const std::string str, Type t, const std::string &bo
break;
case BoolParser::Error::STRING_EXPECTED:
std::cout << "string expected";
+ ResultList *element = new ResultList(str, type, age);
+ AddLast(element);
+ success = true;
break;
}
std::cout << std::endl;
- success = false;
}
if (success)
diff --git a/filter.h b/filter.h
index ad2f79e..967b364 100644
--- a/filter.h
+++ b/filter.h
@@ -39,15 +39,19 @@ public:
typedef enum {
Unknown = 1, // The calification for the tag/package is unknown
- Blue, // Especially remarkable for some reason
- Green, // Green light, the tag/package is safe
- White, // Normal package, nothing special about it
- Yellow, // Yellow light, handle with care
- Red, // Green light, the tag/package is definitely unsafe
- Black, // Mayday, mayday, the tag/package might be really dangerous!
+ Recommended, // The tag/package is recommended
+ Safe, // Green light, the tag/package is safe
+ Normal, // Normal package, nothing special about it
+ Warning, // Yellow light, handle with care
+ Dangerous, // Red light, the tag/package is definitely unsafe
+ Intolerable, // Mayday, mayday, the tag/package might be really dangerous!
+ Highlight, // Especially remarkable for some reason
Hidden // Invisible, hidden, not shown
} Type;
+ static const char *const TypeNames[16];
+ inline static const char * TypeName(int i) { return TypeNames[i]; }
+
typedef ept::debtags::Tag Tag;
typedef std::set<Tag> TagSet;
@@ -58,9 +62,10 @@ protected:
class ResultList
{
public:
- inline ResultList(const std::string str, Type t) {
+ inline ResultList(const std::string str, Type t, int age) {
name = str;
type = t;
+ minimal_age = age;
next= NULL;
}
@@ -72,6 +77,7 @@ protected:
std::string name;
Type type;
+ int minimal_age;
FilterTagHandler::Result positive;
FilterTagHandler::Result negative;
PackageFilter::ResultList *next;
@@ -96,8 +102,8 @@ protected:
}
bool AddLastAndHelper(ResultList *element, boolstuff::BoolExpr<std::string> *expr);
- bool AddLastOrHelper(const std::string str, Type t, boolstuff::BoolExpr<std::string> *expr);
- bool AddLast(const std::string str, Type t, const std::string &bool_expr);
+ bool AddLastOrHelper(const std::string str, Type type, int age, boolstuff::BoolExpr<std::string> *expr);
+ bool AddLast(const std::string str, Type type, int age, const std::string &bool_expr);
inline void AddLast(PackageFilter::ResultList *new_list) {
if (!list) { list = new_list; }
@@ -117,7 +123,8 @@ protected:
inline void Print(std::ostream &out) const {
PackageFilter::ResultList *item = list;
while (item) {
- out << item->name << ": " << std::endl;
+ out << item->name << ": CLASS=" << PackageFilter::TypeName(item->type) << " (" << item->type
+ << "), AGE=" << item->minimal_age << std::endl;
out << " +: ";
tagdata.Print(out, &item->positive);
out << " -: ";
diff --git a/fltk/pkgbrowser.cpp b/fltk/pkgbrowser.cpp
index 83f1912..7070628 100644
--- a/fltk/pkgbrowser.cpp
+++ b/fltk/pkgbrowser.cpp
@@ -244,19 +244,21 @@ void PackageBrowser::item_select(void *p, int s)
switch (pkgdata.GetPackageFilter().TagValue(*i))
{
- case PackageFilter::Blue:
- fr = FL_BLACK; bk = FL_BLUE; break;
- case PackageFilter::Green:
- fr = FL_BLACK; bk = FL_GREEN; break;
- case PackageFilter::Yellow:
- fr = FL_BLACK; bk = FL_YELLOW; break;
- case PackageFilter::Red:
- fr = FL_WHITE; bk = FL_RED; break;
- case PackageFilter::Black:
- fr = FL_WHITE; bk = FL_BLACK; break;
case PackageFilter::Hidden:
- fr = FL_CYAN; bk = FL_BLACK; break;
- case PackageFilter::White:
+ fr = FL_CYAN; bk = FL_WHITE; break;
+ case PackageFilter::Highlight:
+ fr = FL_WHITE; bk = FL_DARK_MAGENTA; break;
+ case PackageFilter::Intolerable:
+ fr = FL_WHITE; bk = FL_BLACK; break;
+ case PackageFilter::Dangerous:
+ fr = FL_WHITE; bk = FL_RED; break;
+ case PackageFilter::Warning:
+ fr = FL_BLACK; bk = FL_YELLOW; break;
+ case PackageFilter::Safe:
+ fr = FL_BLACK; bk = FL_GREEN; break;
+ case PackageFilter::Recommended:
+ fr = FL_BLACK; bk = FL_BLUE; break;
+ case PackageFilter::Normal:
default:
fr = FL_BLACK; bk = FL_WHITE; break;
}
diff --git a/gui_cli.cpp b/gui_cli.cpp
index b0dd3da..2b75bf9 100644
--- a/gui_cli.cpp
+++ b/gui_cli.cpp
@@ -175,14 +175,6 @@ static bool Go(PackageData &pkgdata)
set<Tag> tags = pkgdata.debtags().getTagsOfItem((const char *)rec.package().c_str());
switch (pkgdata.GetPackageFilter().TagsValue(tags))
{
- case PackageFilter::Green:
- break;
- case PackageFilter::Yellow:
- break;
- case PackageFilter::Red:
- break;
- case PackageFilter::Black:
- break;
default:
break;
}
diff --git a/gui_fltk.cpp b/gui_fltk.cpp
index 4085498..36dc006 100644
--- a/gui_fltk.cpp
+++ b/gui_fltk.cpp
@@ -126,19 +126,23 @@ static void UpdateUILists(GamesUI& ui)
PackageData::TagSet tags = pkgdata.debtags().getTagsOfItem((const char *)rec.package().c_str());
switch (pkgdata.GetPackageFilter().TagsValue(tags))
{
- case PackageFilter::Blue:
- fr = FL_BLACK; bk = FL_BLUE; break;
- case PackageFilter::Green:
- fr = FL_BLACK; bk = FL_GREEN; break;
- case PackageFilter::Yellow:
- fr = FL_BLACK; bk = FL_YELLOW; break;
- case PackageFilter::Red:
- fr = FL_WHITE; bk = FL_RED; break;
- case PackageFilter::Black:
- fr = FL_WHITE; bk = FL_BLACK; break;
case PackageFilter::Hidden:
- showPkg = false; break;
- case PackageFilter::White:
+ fr = FL_CYAN; bk = FL_WHITE;
+ showPkg = false;
+ break;
+ case PackageFilter::Highlight:
+ fr = FL_WHITE; bk = FL_DARK_MAGENTA; break;
+ case PackageFilter::Intolerable:
+ fr = FL_WHITE; bk = FL_BLACK; break;
+ case PackageFilter::Dangerous:
+ fr = FL_WHITE; bk = FL_RED; break;
+ case PackageFilter::Warning:
+ fr = FL_BLACK; bk = FL_YELLOW; break;
+ case PackageFilter::Safe:
+ fr = FL_BLACK; bk = FL_GREEN; break;
+ case PackageFilter::Recommended:
+ fr = FL_BLACK; bk = FL_BLUE; break;
+ case PackageFilter::Normal:
default:
fr = FL_BLACK; bk = FL_WHITE; break;
}
diff --git a/vocabulary.openrating b/vocabulary.openrating
new file mode 100644
index 0000000..6180068
--- /dev/null
+++ b/vocabulary.openrating
@@ -0,0 +1,438 @@
+Facet: violence
+Description: violence contents
+ No kind of violence appears in any part of the program. The package
+ does not contain any violence, nor does any kind of reference or
+ apology of violence. It does not refer to violence as a possible way of
+ solving conflicts and no kind of fight or usage of weapons appear.
+
+Facet: sex
+Description: sexual contents
+ Reflects whether the package shows any sexual related contents.
+
+Facet: social
+Description: social relationship issues
+ Reflects what kind of social relational issues are promoted.
+
+Facet: sensory
+Description: sensory issues
+ Sensory issues of any kind: Visual, acustical, etc.
+
+Facet: issues
+Description: sensitive issues and themes
+ Issues and themes that might be sensitive for some groups of people.
+
+Facet: cognitive
+Description: cognitive skills needed
+ Cognitive skills needed to use the program.
+
+Facet: physical
+Description: physical and coordination skills needed
+ Physical and coordination skills needed to use the program.
+
+Facet: skills
+Description: skills developed
+ Skills that the game helps to develop.
+
+Facet: educational
+Description: educational usage
+ Educational purposes for which the game can be useful.
+
+Tag: violence::none
+Description: no violence
+ No kind of violence appears in any part of the program. The package
+ does not contain any violence, nor does any kind of reference or
+ apology of violence. It does not refer to violence as a possible way of
+ solving conflicts and no kind of fight or usage of weapons appear.
+
+Tag: violence::minor
+Description: minor violence
+ The package includes violence that do not result in bloodshed or
+ death, and the main goal of the game is not to promote violence itself.
+ The violence shown is not especially cruel nor sadistic, and it is not
+ encouraged or promoted. Violence might be a core part of the program,
+ but in a very light kind of way, like platform games in which the
+ character must jump over other characters or shot at them to make them
+ disappear or space invaders type of games.
+
+Tag: violence::minor-optional
+Description: optional minor violence
+ The software involves minor violence contents, but they can be
+ removed. The program allows the user to remove the violence of this kind
+ through the program configuration, command line switches or similar
+ means, without hurting functionality or gameplay severely.
+
+Tag: violence::non-realistic
+Description: non-realistic violence
+ Non-realistic characters are shown commiting acts of violence that
+ might result in bloodshed or death. Violence itself might be the goal of
+ the game, or take an important part in it
+
+Tag: violence::non-realistic-optional
+Description: optional non-realistic violence
+ Non-realistic characters commiting acts of violence, but it can be
+ removed. The program allows the user to remove the violence of this kind
+ through the program configuration, command line switches or similar
+ means, without hurting functionality or gameplay severely.
+
+Tag: violence::realistic
+Description: realistic violence
+ Realistic characters are shown committing acts of violence that might
+ result in bloodshed or death. Violence is a core part of the program.
+ The characters might be shown or not, but the program shows the
+ violence in a way that is felt as real.
+
+Tag: violence::realistic-optional
+Description: optional realistic violence
+ Realistic characters committing acts of violence, but it can be
+ removed. The program allows the user to remove the violence of this kind
+ through the program configuration, command line switches or similar
+ means, without hurting functionality or gameplay severely.
+
+Tag: violence::against-objects
+Description: violence against objects
+ Violence is directed non-living things.
+
+Tag: violence::against-animals
+Description: violence against animals
+ Violence is directed towards animals or non-rational living species.
+
+Tag: violence::against-humans
+Description: violence against human-like species
+ Violence is directed towards rational or human-like species.
+
+Tag: violence::against-players
+Description: violence against players
+ Violence is used against other players.
+
+Tag: violence::against-players-optional
+Description: optional violence against players
+
+
+Tag: sex::none
+Description: no sex
+ No sexual contents of any kind appear in the game.
+
+Tag: sex::innuendo
+Description: no sexual contents, but they're suggested
+ No sexual contents appear directly in the game, but they're suggested.
+
+Tag: sex::nudity
+Description: nudity
+ Graphical depictions of nudity.
+
+Tag: sex::nudity-optional
+Description: optional nudity
+ Graphical depictions of nudity, but they can be removed through the
+ program configuration, command line switches or similar means, without
+ hurting functionality or gameplay severely.
+
+Tag: sex::non-realistic
+Description: non-realistic sexual contents
+ Non-realistic depictions of sexual activity.
+
+Tag: sex::non-realistic-optional
+Description: optional non-realistic sexual contents
+ Non-realistic depictions of sexual activity, but they can be removed
+ through the program configuration, command line switches or similar
+ means, without hurting functionality or gameplay severely.
+
+Tag: sex::realistic
+Description: realistic sexual contents
+ Realistic depictions of sexual activity without violence of sexual
+ nature.
+
+Tag: sex::realistic-optional
+Description: optional realistic sexual contents
+ Realil charge implied.
+
+Tag: sex::violent
+Description: violent sexual contents
+ Violence of a sexual nature or references to it.
+
+Tag: sex::violent-optional
+Description: optional violent sexual contents
+ Violence of a sexual nature or references to it, but it can be
+ removed through the program configuration, command line switches or similar
+ means, without hurting functionality or gameplay severely.
+
+Tag: issues::breaks-social-values
+Description: breaks social values
+ The software breaks commonly accepted social values. Transgression is
+ violently breaking commonly accepted social values, like advocating
+ crime, encouraging murder and so forth. The program might reward acts
+ of violence, especially against humans (as opposed to monsters),
+ innocents and not in self-defence, or even immoral acts might be mandatory.
+
+Tag: issues::genocide
+Description: genocide
+ Deliberate and systematic destruction of a racial, political, or
+ cultural group.
+
+Tag: issues::gambling
+Description: gambling
+ Promotes gambling, or gambling is a core element.
+
+Tag: issues::religion
+Description: religion, sacred matters or religious institutions
+ Religious matters play a core and major part in the program. The
+ goals or main usage of the program involves taking into account the
+ supernatural, sacred or divine, or the moral codes, practices and
+ institutions associated with some religious belief.
+
+Tag: issues::politics
+Description: politics
+ Political matters play a core and major part in the program.
+
+Tag: issues::drugs
+Description: drugs
+ Promotes or encourages the usage of other drugs, including tobacco
+ and alcoholic drinks.
+
+Tag: issues::unsafe-sex
+Description: unsafe sex
+ Promotes or encourages unsafe sexual acts.
+
+Tag: issues::bad-words
+Description: profane language
+ Promotes or encourages the usage of insults, crude language or bad
+ words. Might include verbal violence, harassing, despective talking,
+ verbal aggressions or verbal violence in general.
+
+Tag: issues::discrimination
+Description: discrimination
+ Discrimination or prejudiced based on race, gender, social class,
+ age, or any other reason. Includes the promotion of discrimination,
+ especially the belief that some people are superior to another. It might
+ include the stereotyping of the members of some group, or the belief
+ that genetic or inherited differences produce the inherent superiority or
+ inferiority between people. The program purposedly attacks other
+ people's ideology, sexuality, religious beliefs, tastes or way of life.
+
+Tag: issues::mocks-religion
+Description: mocks about religion
+ The program makes mocks about some religion. Parodying or making a
+ mockery about some religion plays a core and major part in the program.
+
+Tag: cognitive::sensorimotor
+Description: sensorimotor cognitive skills needed
+ The software involves the usage of just sensorimotor cognitive
+ skills. Infants are born with a set of congenital reflexes. This stage marks
+ the development of essential spatial abilities and understanding of
+ the world.
+
+Tag: cognitive::preconceptual
+Description: preoperational preconceptual cognitive skills needed
+ The software needs the usage of just preoperational preconceptual
+ cognitive skills. This period is marked by egocentric thinking and
+ animistic thought and usually extends between 2-4 years old.
+
+Tag: cognitive::intuitive
+Description: preoperational intuitive cognitive skills needed
+ The software involves the usage of just preoperational intuitive
+ cognitive skills. Children start employing mental activities to solve
+ problems and obtain goals but they are unaware of how they came to their
+ conclusions. This period usually extends around 4-7 years old.
+
+Tag: cognitive::concrete
+Description: concrete cognitive skills needed
+ The software involves the usage of concrete cognitive skills. This
+ stage occurs between the ages of 7 and 12 years and is characterized by
+ the appropriate use of logic. Important processes during this stage
+ are:
+ * Seriation (the ability to sort objects in an order)
+ * Classification (the ability to name and identify sets of objects)
+ * A child is no longer subject to the illogical limitations of
+ animism (the belief that all objects are alive and therefore have feelings).
+ * Decentering (take into account multiple aspects of a problem to
+ solve it)
+ * Reversibility (numbers or objects can be changed, then returned to
+ their original state)
+ * Conservation (understanding that quantity, length or number of
+ items is unrelated to the arrangement or appearance)
+ * Elimination of Egocentrism
+
+Tag: cognitive::formal
+Description: formal cognitive skills needed
+ The software needs the usage of formal cognitive skills. This stage
+ commences at around 11 years of age (puberty) and continues into
+ adulthood. It is characterized by acquisition of the ability to think
+ abstractly, reason logically and draw conclusions from the information
+ available.
+
+Tag: cognitive::time-to-think
+Description: time to think
+ User has unlimited time to think the next move, either because time
+ is not relevant, because it is an unlimited-time turn-based game, or a
+ pause in the game can be triggered without darkening the screen.
+
+Tag: cognitive::no-reading
+Description: reading is not needed at all
+ The player does not need to read at all, neither for playing the game
+ nor for learning or getting started to it.
+
+Tag: cognitive::minimal-reading
+Description: reading is not needed for playing
+ The game can be played even if the user cannot read. It is possible
+ that reading might be needed for learning how to play, though, and
+ maybe the player might need a helping hand to get started.
+
+Tag: physical::locomotor
+Description: locomotor movement skills needed
+ Involves movement of the body from place to place. Physical abilities
+ such as crawling, walking, hopping, jumping, running, leaping,
+ galloping and skipping are examples of this. This type of movement involves
+ gross-motor skills.
+
+Tag: physical::non-locomotor
+Description: non-locomotor movement skills needed
+ Involves movement of the body while staying in one place. Physical
+ abilities such as pushing, pulling, twisting, turning, wiggling, sitting
+ and rising are examples of nonlocomotor movement. This type of
+ movement involves balance and coordination skills.
+
+Tag: physical::manipulative
+Description: manipulative movement skills needed
+ Involves movement that requires controlled use of the hands or feet.
+ Physical abilities such as grasping, opening and closing hands,
+ waving, throwing and catching are examples of manipulative movement. It
+ involves motor skills and hand-eye coordination. Manipulating a computer
+ keyboard or a joystick are manipulative movements.
+
+Tag: physical::low-coordination
+Description: simple physical coordination skills needed
+ The program controls are simple and do not neet any special
+ coordination skills. Only one key must be pressed at once, a single joystick
+ must be used, or very simple movements are needed for interacting with
+ it.
+
+Tag: physical::synchronous-coordination
+Description: synchronous coordination skills
+ Different movements must be executed at the same time, but they're
+ not unrelated. The game is either playable with a single hand, or if
+ both are needed then.
+
+Tag: physical::asynchronous-coordination
+Description: different unrelated movements must be coordinated
+ Different unrelated movements must be executed at the same time. The
+ user must be able to command different movements at the same time to
+ control different aspects of the game, usually with both hands at once.
+
+Tag: physical::slow-movements
+Description: slow movement capable
+ Movements can be as slow as needed by the user.
+
+Tag: physical::accurate-time
+Description: high time accuracy needed
+ Actions must be executed in the right time with high time accuracy.
+
+Tag: physical::accurate-movements
+Description: accurate and precise movements are needed
+ Movements must be quite accurate for being successful.
+
+Tag: physical::quick-reflexes
+Description: quick reflexes are needed
+ It is neccesary to have quick reflexes. The program needs a quick
+ reaction to some events for success.
+
+Tag: physical::voice
+Description: controlled by voice
+ The program needs talking/singing skills from the user
+
+Tag: skills::spatial
+Description: develops spatial vision
+ Useful to develop spatial vision.
+
+Tag: skills::coordination
+Description: improves coordination skills
+ Useful for improving hand-eye coordination skills.
+
+Tag: skills::logic
+Description: development of logical skills
+ Useful for developing logical skills and deductive reasoning, based
+ on the principles of valid demonstration and inference.
+
+Tag: skills::abstraction
+Description: mental development, reasoning and problem-solving
+ Aids in the mental development by encouraging reasoning,
+ problem-solving and abstract thinking. Abstraction is the process or result of
+ generalization by reducing the information content of a concept or an
+ observable phenomenon, typically in order to retain only information
+ which is relevant for a particular purpose.
+
+Tag: skills::multitask
+Description: capacity of taking care of different tasks at the same time
+ Useful for developing the capacity of taking care of different tasks
+ at the same time, and managing different events that take place
+ simultaneously.
+
+Tag: skills::strategy
+Description: improves analysis, strategy and planning skills
+ Useful for improving analysis, strategy and planning skills, as well
+ as deductive capacity predicting events. Develops problem-solving
+ skills. A Strategy is a long term plan of action designed to achieve a
+ particular goal.
+
+Tag: skills::leadership
+Description: improves leadership skills
+ Helps to develop the capacity for setting goals and making decisions
+ on how to achieve them and how to manage the resources available.
+
+Tag: skills::responsiveness
+Description: improves quick decision making
+ Useful for developing quick decision making and improving speed in
+ taking decisions.
+
+Tag: skills::social
+Description: improves social skills
+ Useful for developing positive social skills such as team play, team
+ building and collaboration and social interaction in general.
+
+Tag: skills::creativity
+Description: improves creativity
+ Improves the creative expression and to become problem solvers.
+ Develops the imagination and lateral thinking in a constructive way.
+ Creativity is a mental and social process involving the generation of new
+ ideas or concepts, or new associations of the creative mind between
+ existing ideas or concepts.
+
+Tag: skills::rhythm
+Description: improves rhythmic skills
+ Useful to improve skills related to rhythm or measured regularity
+ tasks.
+
+Tag: skills::music
+Description: improves music skills
+ Useful to improve the sense of music or musical skills.
+
+Tag: educational::languages
+Description: useful for learning languages
+ Useful for learning languages.
+
+Tag: educational::technology
+Description: useful for learning technology
+ Useful for learning technology.
+
+Tag: educational::geography
+Description: useful for learning geography
+ Useful for learning geography.
+
+Tag: educational::history
+Description: useful for learning history
+ Useful for learning history.
+
+Tag: educational::science
+Description: useful for learning science
+ Useful for learning science.
+
+Tag: educational::social
+Description: useful for learning social matters
+ Useful for learning social and cultural matters.
+
+Tag: educational::mathematics
+Description: useful for learning mathematics
+ Useful for learning mathematics.
+
+Tag: educational::programming
+Description: useful for learning computer programming
+ Useful for learning computer programming.
+
--
Development fot GoFind!
More information about the Pkg-games-commits
mailing list