[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