[gbrainy] More analogies & analogies fixes
- From: Jordi Mas <jmas src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gbrainy] More analogies & analogies fixes
- Date: Wed, 9 Sep 2009 18:38:06 +0000 (UTC)
commit b49219c733a1a50994806f6221a15d5f9190563d
Author: Jordi Mas <jmas softcatala org>
Date: Wed Sep 9 20:37:57 2009 +0200
More analogies & analogies fixes
data/verbal_analogies.xml | 90 ++++++++++++++++++++
src/VerbalAnalogies/Analogies.cs | 19 ++---
src/VerbalAnalogies/AnalogiesFactory.cs | 24 +++++-
src/VerbalAnalogies/AnalogiesMultipleOptions.cs | 6 +-
src/VerbalAnalogies/AnalogiesPairOfWordsCompare.cs | 12 ++-
src/VerbalAnalogies/AnalogiesPairOfWordsOptions.cs | 6 +-
src/VerbalAnalogies/AnalogiesQuestionAnswer.cs | 6 +-
src/VerbalAnalogies/Analogy.cs | 2 +-
8 files changed, 142 insertions(+), 23 deletions(-)
---
diff --git a/data/verbal_analogies.xml b/data/verbal_analogies.xml
index 6351e9b..edb4afd 100644
--- a/data/verbal_analogies.xml
+++ b/data/verbal_analogies.xml
@@ -86,4 +86,94 @@
<_question type = "PairOfWordsCompare">toy / play | tool</_question>
<_answer correct ="yes">work</_answer>
</analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">fish / submarine | bird</_question>
+ <_answer correct ="yes">airplane</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">tears / eyes | sweat</_question>
+ <_answer correct ="yes">body</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">toy / play | tool</_question>
+ <_answer correct ="yes">work</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">dish / break | balloon</_question>
+ <_answer correct ="yes">burst</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">bridge / over | tunnel</_question>
+ <_answer correct ="yes">in</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">toy / play | tool</_question>
+ <_answer correct ="yes">work</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">error / correct | damage</_question>
+ <_answer correct ="yes">repair | fix</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">orange / fruit | spinach</_question>
+ <_answer correct ="yes">vegetable</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">hands / grab | teeth</_question>
+ <_answer correct ="yes">bite</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">puzzle / solve | game</_question>
+ <_answer correct ="yes">wins</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">store / sign | bottle</_question>
+ <_answer correct ="yes">label</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">eyebrow / eye | mustache</_question>
+ <_answer correct ="yes">lip</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">ice / slippery | glue</_question>
+ <_answer correct ="yes">sticky</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">button / push | key</_question>
+ <_answer correct ="yes">turns</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">whirlpool / water | tornado</_question>
+ <_answer correct ="yes">wind</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">fox / den | bird</_question>
+ <_answer correct ="yes">nest</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">dog / tame | wolf</_question>
+ <_answer correct ="yes">wild</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">train / whistle | ambulance</_question>
+ <_answer correct ="yes">siren</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">sugar / sweet | vinegar</_question>
+ <_answer correct ="yes">sour</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">tennis / sport | ballet</_question>
+ <_answer correct ="yes">dance</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">slurp / tongue | snort</_question>
+ <_answer correct ="yes">nose</_answer>
+ </analogy>
+ <analogy>
+ <_question type = "PairOfWordsCompare">elbow / knee | wrist</_question>
+ <_answer correct ="yes">ankle</_answer>
+ </analogy>
</analogies>
+
+
diff --git a/src/VerbalAnalogies/Analogies.cs b/src/VerbalAnalogies/Analogies.cs
index 80d0a6d..d488789 100644
--- a/src/VerbalAnalogies/Analogies.cs
+++ b/src/VerbalAnalogies/Analogies.cs
@@ -32,6 +32,9 @@ public abstract class Analogies : Game
public override string Question {
get {
+ if (current == null)
+ return string.Empty;
+
return current.question;
}
}
@@ -55,7 +58,7 @@ public abstract class Analogies : Game
string [] items;
string str = string.Empty;
- items = right_answer.Split ('|');
+ items = right_answer.Split (AnalogiesFactory.Separator);
for (int i = 0 ; i < items.Length; i++)
{
@@ -96,19 +99,14 @@ public abstract class Analogies : Game
get;
}
- public override void Initialize ()
- {
- current = GetNext ();
-
- if (current == null)
- return;
- }
-
public Analogy GetNext ()
{
int idx;
Analogy analogy;
+ if (List.Count == 0)
+ return null;
+
if (Indices == null || CurrentIndex + 1 >= List.Count) {
Indices = new ArrayListIndicesRandom (List.Count);
Indices.Initialize ();
@@ -162,8 +160,7 @@ public abstract class Analogies : Game
public override bool CheckAnswer (string answer)
{
- string [] items = right_answer.Split ('|');
- Console.WriteLine ("answer is null {0}", answer == null);
+ string [] items = right_answer.Split (AnalogiesFactory.Separator);
foreach (string ans in items)
{
diff --git a/src/VerbalAnalogies/AnalogiesFactory.cs b/src/VerbalAnalogies/AnalogiesFactory.cs
index 1015ad1..61c5dcc 100644
--- a/src/VerbalAnalogies/AnalogiesFactory.cs
+++ b/src/VerbalAnalogies/AnalogiesFactory.cs
@@ -30,6 +30,8 @@ static public class AnalogiesFactory
{
static Dictionary <int, Analogy> [] analogies_arrays;
static bool read = false;
+
+ public const char Separator = '|';
static AnalogiesFactory ()
{
@@ -142,9 +144,27 @@ static public class AnalogiesFactory
Console.WriteLine (Catalog.GetString ("Read a total of {0} verbal analogies"), cnt);
}
- catch (Exception)
+ catch (Exception e)
+ {
+ Console.WriteLine ("Error loading {0}. Exception {1}", Defines.DATA_DIR + Defines.VERBAL_ANALOGIES, e.Message);
+ }
+
+ finally
+ {
+ CheckEmpty ();
+ }
+ }
+
+ static void CheckEmpty ()
+ {
+ Analogy empty = new Analogy ();
+ empty.question = Catalog.GetString ("There are no verbal analogies available.");
+
+ for (int i = 0; i < (int) Analogy.Type.Last; i++)
{
- Console.WriteLine ("Error loading {0}", Defines.DATA_DIR + Defines.VERBAL_ANALOGIES);
+ if (analogies_arrays[i].Count == 0)
+ analogies_arrays[i].Add (0, empty);
}
}
+
}
diff --git a/src/VerbalAnalogies/AnalogiesMultipleOptions.cs b/src/VerbalAnalogies/AnalogiesMultipleOptions.cs
index 86adb9b..76dcf58 100644
--- a/src/VerbalAnalogies/AnalogiesMultipleOptions.cs
+++ b/src/VerbalAnalogies/AnalogiesMultipleOptions.cs
@@ -43,6 +43,10 @@ public class AnalogiesMultipleOptions : Analogies
public override string Question {
get {
string str = string.Empty;
+
+ if (current.answers == null)
+ return current.question;
+
for (int n = 0; n < current.answers.Length; n++)
{
str+= GetPossibleAnswer (n);
@@ -82,7 +86,7 @@ public class AnalogiesMultipleOptions : Analogies
current = GetNext ();
- if (current == null)
+ if (current == null || current.answers == null)
return;
right_answer = GetPossibleAnswer (current.right);
diff --git a/src/VerbalAnalogies/AnalogiesPairOfWordsCompare.cs b/src/VerbalAnalogies/AnalogiesPairOfWordsCompare.cs
index 3f84793..6ceeccd 100644
--- a/src/VerbalAnalogies/AnalogiesPairOfWordsCompare.cs
+++ b/src/VerbalAnalogies/AnalogiesPairOfWordsCompare.cs
@@ -58,6 +58,9 @@ public class AnalogiesPairOfWordsCompare : Analogies
public override string Question {
get {
+ if (current.answers == null)
+ return current.question;
+
return String.Format (Catalog.GetString (
"Given the pair of words below, which word has the closest relationship to '{0}'?"),
sample);
@@ -72,12 +75,12 @@ public class AnalogiesPairOfWordsCompare : Analogies
current = GetNext ();
- if (current == null)
+ if (current == null || current.answers == null)
return;
string [] items;
- items = current.question.Split ('|');
+ items = current.question.Split (AnalogiesFactory.Separator);
if (items.Length == 2)
sample = items [1].Trim ();
@@ -85,7 +88,6 @@ public class AnalogiesPairOfWordsCompare : Analogies
sample = string.Empty;
samples = items [0].Trim ();
-
right_answer = current.answers [current.right];
Console.WriteLine ("Name:" + Name + " " + current.ToString ());
}
@@ -100,7 +102,7 @@ public class AnalogiesPairOfWordsCompare : Analogies
return;
gr.SetPangoLargeFontSize ();
- gr.MoveTo (0.2, y + 0.25);
- gr.ShowPangoText (String.Format (Catalog.GetString ("Pair of words: {0}"), samples));
+ gr.DrawTextCentered (0.5, y + 0.25,
+ String.Format (Catalog.GetString ("Pair of words: {0}"), samples));
}
}
diff --git a/src/VerbalAnalogies/AnalogiesPairOfWordsOptions.cs b/src/VerbalAnalogies/AnalogiesPairOfWordsOptions.cs
index 338204d..d1952b7 100644
--- a/src/VerbalAnalogies/AnalogiesPairOfWordsOptions.cs
+++ b/src/VerbalAnalogies/AnalogiesPairOfWordsOptions.cs
@@ -57,6 +57,10 @@ public class AnalogiesPairOfWordsOptions : Analogies
public override string Question {
get {
string str = string.Empty;
+
+ if (current.answers == null)
+ return current.question;
+
for (int n = 0; n < current.answers.Length; n++)
{
str+= GetPossibleAnswer (n);
@@ -83,7 +87,7 @@ public class AnalogiesPairOfWordsOptions : Analogies
current = GetNext ();
- if (current == null)
+ if (current == null || current.answers == null)
return;
right_answer = GetPossibleAnswer (current.right);
diff --git a/src/VerbalAnalogies/AnalogiesQuestionAnswer.cs b/src/VerbalAnalogies/AnalogiesQuestionAnswer.cs
index 632dbee..ff17d0b 100644
--- a/src/VerbalAnalogies/AnalogiesQuestionAnswer.cs
+++ b/src/VerbalAnalogies/AnalogiesQuestionAnswer.cs
@@ -55,7 +55,7 @@ public class AnalogiesQuestionAnswer : Analogies
public override void Initialize ()
{
if (analogies == null) {
- analogies = AnalogiesFactory. Get (Analogy.Type.QuestionAnswer);
+ analogies = AnalogiesFactory.Get (Analogy.Type.QuestionAnswer);
}
current = GetNext ();
@@ -63,7 +63,9 @@ public class AnalogiesQuestionAnswer : Analogies
if (current == null)
return;
- right_answer = current.answers [current.right];
+ if (current.answers != null)
+ right_answer = current.answers [current.right];
+
Console.WriteLine ("Name:" + Name + " " + current.ToString ());
}
}
diff --git a/src/VerbalAnalogies/Analogy.cs b/src/VerbalAnalogies/Analogy.cs
index 217edb4..b8edea8 100644
--- a/src/VerbalAnalogies/Analogy.cs
+++ b/src/VerbalAnalogies/Analogy.cs
@@ -46,7 +46,7 @@ public class Analogy
public bool MultipleAnswers {
get {
- string [] items = answers[right].Split ('|');
+ string [] items = answers[right].Split (Analogies Factory.Separator);
return items.Length > 1;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]