[gbrainy] Mouse support for three more puzzles
- From: Jordi Mas <jmas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gbrainy] Mouse support for three more puzzles
- Date: Mon, 15 Feb 2010 22:21:18 +0000 (UTC)
commit 04148f47a33f7a01de9561b7c2791970b9f7971b
Author: Jordi Mas <jmas softcatala org>
Date: Mon Feb 15 23:21:37 2010 +0100
Mouse support for three more puzzles
src/Games/Logic/PuzzleMissingPiece.cs | 39 +++++++++++++------
src/Games/Logic/PuzzleMissingSlice.cs | 55 +++++++++++++++++++--------
src/Games/Logic/PuzzleNextFigure.cs | 66 ++++++++++++++++++++------------
3 files changed, 106 insertions(+), 54 deletions(-)
---
diff --git a/src/Games/Logic/PuzzleMissingPiece.cs b/src/Games/Logic/PuzzleMissingPiece.cs
index b42ffd9..a7d2f20 100644
--- a/src/Games/Logic/PuzzleMissingPiece.cs
+++ b/src/Games/Logic/PuzzleMissingPiece.cs
@@ -23,6 +23,7 @@ using Mono.Unix;
using gbrainy.Core.Main;
using gbrainy.Core.Libraries;
+using gbrainy.Core.Toolkit;
namespace gbrainy.Games.Logic
{
@@ -64,6 +65,29 @@ namespace gbrainy.Games.Logic
break;
}
}
+
+ HorizontalContainer container = new HorizontalContainer (DrawAreaX, 0.7, 0.8, 0.3);
+ DrawableArea drawable_area;
+ AddWidget (container);
+
+ for (int i = 0; i < random_indices.Count; i++)
+ {
+ drawable_area = new DrawableArea (0.8 / 3, 0.3);
+
+ drawable_area.SelectedArea = new Rectangle (0, 0, sub_figure, sub_figure);
+ drawable_area.Data = i;
+ drawable_area.DataEx = GetPossibleAnswer (i);
+ container.AddChild (drawable_area);
+
+ drawable_area.DrawEventHandler += delegate (object sender, DrawEventArgs e)
+ {
+ int n = (int) e.Data;
+
+ DrawAnswerFigures (e.Context, 0, 0, random_indices [n]);
+ e.Context.MoveTo (0, 0.2);
+ e.Context.ShowPangoText (GetPossibleFigureAnswer (n));
+ };
+ }
}
private void DrawFigureSequence (CairoContextEx gr, double x, double y, int sequence, bool last_block)
@@ -138,26 +162,17 @@ namespace gbrainy.Games.Logic
public override void Draw (CairoContextEx gr, int area_width, int area_height, bool rtl)
{
- double x = DrawAreaX + 0.15, y = DrawAreaY;
- int figure;
+ double x = DrawAreaX + 0.15;
base.Draw (gr, area_width, area_height, rtl);
for (int i = 0; i < 2; i++)
- DrawFigureSequence (gr, x, y + sub_figure * i , i, true);
+ DrawFigureSequence (gr, x, DrawAreaY + sub_figure * i , i, true);
- DrawFigureSequence (gr, x, y + sub_figure * 2 , 2, false);
+ DrawFigureSequence (gr, x, DrawAreaY + sub_figure * 2 , 2, false);
gr.MoveTo (0.1, 0.62);
gr.ShowPangoText (Catalog.GetString ("Possible answers are:"));
-
- x = DrawAreaX + 0.1;
- for (int i = 0; i < random_indices.Count; i++) {
- figure = random_indices [i];
- DrawAnswerFigures (gr, x + (0.08 + sub_figure) * i, 0.70, figure);
- gr.MoveTo (x + (0.08 + sub_figure) * i, 0.9);
- gr.ShowPangoText (GetPossibleFigureAnswer (i));
- }
}
}
}
diff --git a/src/Games/Logic/PuzzleMissingSlice.cs b/src/Games/Logic/PuzzleMissingSlice.cs
index e8620f9..16a728f 100644
--- a/src/Games/Logic/PuzzleMissingSlice.cs
+++ b/src/Games/Logic/PuzzleMissingSlice.cs
@@ -23,6 +23,7 @@ using Mono.Unix;
using gbrainy.Core.Main;
using gbrainy.Core.Libraries;
+using gbrainy.Core.Toolkit;
namespace gbrainy.Games.Logic
{
@@ -92,6 +93,42 @@ namespace gbrainy.Games.Logic
for (int i = 0; i < bad_answers.Length; i++) {
bad_answers[i] = 1 + random.Next (9);
}
+
+ HorizontalContainer container = new HorizontalContainer (DrawAreaX, 0.68, 0.8, 0.3);
+ DrawableArea drawable_area;
+ AddWidget (container);
+
+ for (int i = 0; i < possible_answers; i++)
+ {
+ drawable_area = new DrawableArea (0.8 / 3, 0.3);
+ drawable_area.SelectedArea = new Rectangle (0, 0, radius, 0.2);
+ drawable_area.Data = i;
+ drawable_area.DataEx = GetPossibleAnswer (i);
+ container.AddChild (drawable_area);
+
+ drawable_area.DrawEventHandler += delegate (object sender, DrawEventArgs e)
+ {
+ int n = (int) e.Data;
+
+ DrawSlice (e.Context, 0, 0);
+ if (n == ans_pos) {
+ int pos = random_indices [0];
+ DrawSliceText (e.Context, 0, 0, 0, (sum_offset +
+ slices [pos * items_per_slice]).ToString (),
+ (sum_offset + slices [1 + (pos * items_per_slice)]).ToString (),
+ (sum_offset + slices [2 + (pos * items_per_slice)]).ToString ());
+ } else {
+ DrawSliceText (e.Context, 0, 0, 0,
+ bad_answers [n * items_per_slice].ToString (),
+ bad_answers [1 + (n * items_per_slice)].ToString (),
+ bad_answers [2 + (n * items_per_slice)].ToString ());
+ }
+
+ e.Context.MoveTo (0.0, 0.25);
+ e.Context.ShowPangoText (GetPossibleFigureAnswer (n));
+ e.Context.Stroke ();
+ };
+ }
}
private static void DrawSlice (CairoContextEx gr, double x, double y)
@@ -180,23 +217,7 @@ namespace gbrainy.Games.Logic
gr.MoveTo (0.1, 0.61);
gr.ShowPangoText (Catalog.GetString ("Possible answers are:"));
-
- y = 0.68;
- for (int i = 0; i < possible_answers; i++)
- {
- DrawSlice (gr, 0.10 + i * 0.28, y);
- if (i == ans_pos) {
- pos = random_indices [0];
- DrawSliceText (gr, 0.10 + i * 0.28, y, 0, (sum_offset + slices [pos * items_per_slice]).ToString (),
- (sum_offset + slices [1 + (pos * items_per_slice)]).ToString (), (sum_offset + slices [2 + (pos * items_per_slice)]).ToString ());
- } else {
- DrawSliceText (gr, 0.10 + i * 0.28, y, 0, bad_answers [i * items_per_slice].ToString (),
- bad_answers [1 + (i * items_per_slice)].ToString (), bad_answers [2 + (i * items_per_slice)].ToString ());
- }
-
- gr.MoveTo (0.10 + i * 0.28, y + 0.25);
- gr.ShowPangoText (GetPossibleFigureAnswer (i));
- }
+ gr.Stroke ();
}
}
}
diff --git a/src/Games/Logic/PuzzleNextFigure.cs b/src/Games/Logic/PuzzleNextFigure.cs
index 3754567..64b3714 100644
--- a/src/Games/Logic/PuzzleNextFigure.cs
+++ b/src/Games/Logic/PuzzleNextFigure.cs
@@ -23,13 +23,15 @@ using System;
using gbrainy.Core.Main;
using gbrainy.Core.Libraries;
+using gbrainy.Core.Toolkit;
namespace gbrainy.Games.Logic
{
public class PuzzleNextFigure : Game
{
- private const double figure_size = 0.2;
- private ArrayListIndicesRandom random_indices;
+ const double figure_size = 0.2;
+ const double space_figures = figure_size + 0.066;
+ ArrayListIndicesRandom random_indices;
public enum CerclePosition
{
@@ -80,6 +82,43 @@ namespace gbrainy.Games.Logic
break;
}
}
+
+ HorizontalContainer container = new HorizontalContainer (DrawAreaX, DrawAreaY + figure_size + 0.16, 0.8, 0.3);
+
+ DrawableArea drawable_area;
+ AddWidget (container);
+
+ for (int i = 0; i < (int) Figures.Last; i++)
+ {
+ drawable_area = new DrawableArea (space_figures, 0.2);
+ drawable_area.SelectedArea = new Rectangle (0, 0, figure_size, figure_size);
+ drawable_area.Data = i;
+ drawable_area.DataEx = GetPossibleAnswer (i);
+ container.AddChild (drawable_area);
+
+ drawable_area.DrawEventHandler += delegate (object sender, DrawEventArgs e)
+ {
+ int n = (int) e.Data;
+
+ switch ((Figures) random_indices[n]) {
+ case Figures.First:
+ DrawDiamon (e.Context, 0, 0, CerclePosition.Right | CerclePosition.Left);
+ break;
+ case Figures.Second:
+ DrawDiamon (e.Context, 0, 0, CerclePosition.Top | CerclePosition.Right);
+ break;
+ case Figures.Third:
+ DrawDiamon (e.Context, 0, 0, CerclePosition.Bottom | CerclePosition.Top);
+ break;
+ default:
+ throw new InvalidOperationException ();
+ }
+
+ e.Context.MoveTo (0.02, 0.25);
+ e.Context.ShowPangoText (GetPossibleFigureAnswer (n));
+ e.Context.Stroke ();
+ };
+ }
}
static private void DrawDiamon (CairoContextEx gr, double x, double y, CerclePosition cercles)
@@ -118,7 +157,6 @@ namespace gbrainy.Games.Logic
{
double x = DrawAreaX;
double y = DrawAreaY;
- double space_figures = figure_size + 0.1;
base.Draw (gr, area_width, area_height, rtl);
@@ -130,28 +168,6 @@ namespace gbrainy.Games.Logic
gr.MoveTo (x, y);
gr.ShowPangoText (Catalog.GetString ("Possible answers are:"));
gr.Stroke ();
- y += 0.10;
-
- for (int i = 0; i < (int) Figures.Last; i++)
- {
- switch ((Figures) random_indices[i]) {
- case Figures.First:
- DrawDiamon (gr, x, y, CerclePosition.Right | CerclePosition.Left);
- break;
- case Figures.Second:
- DrawDiamon (gr, x, y, CerclePosition.Top | CerclePosition.Right);
- break;
- case Figures.Third:
- DrawDiamon (gr, x, y, CerclePosition.Bottom | CerclePosition.Top);
- break;
- }
-
- gr.MoveTo (x + 0.02, y + 0.25);
- gr.ShowPangoText (GetPossibleFigureAnswer (i));
- x += space_figures;
- }
-
- gr.Stroke ();
}
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]