[gcompris: 96/111] color_mix_light



commit c344f7b2c2bf4a2d0adb9d20aedbb59f56d2e6a8
Author: serah <serah4291 gmail com>
Date:   Thu Aug 30 02:06:50 2012 +0530

    color_mix_light

 src/color_mix_light-activity/.gitignore            |    1 +
 src/color_mix_light-activity/Makefile.am           |   35 ++
 src/color_mix_light-activity/color_mix_light.py    |  346 ++++++++++++++
 src/color_mix_light-activity/color_mix_light.svg   |  503 ++++++++++++++++++++
 .../color_mix_light.xml.in                         |   24 +
 src/color_mix_light-activity/gcompris              |    1 +
 src/color_mix_light-activity/init_path.sh          |    9 +
 src/color_mix_light-activity/resources/Makefile.am |    2 +
 .../resources/color_mix_light/Makefile.am          |    9 +
 .../resources/color_mix_light/background.jpg       |  Bin 0 -> 74754 bytes
 .../resources/color_mix_light/torch_blue.png       |  Bin 0 -> 25788 bytes
 .../resources/color_mix_light/torch_green.png      |  Bin 0 -> 28830 bytes
 .../resources/color_mix_light/torch_red.png        |  Bin 0 -> 31292 bytes
 13 files changed, 930 insertions(+), 0 deletions(-)
---
diff --git a/src/color_mix_light-activity/.gitignore b/src/color_mix_light-activity/.gitignore
new file mode 100644
index 0000000..8a2073b
--- /dev/null
+++ b/src/color_mix_light-activity/.gitignore
@@ -0,0 +1 @@
+color_mix_light.xml
diff --git a/src/color_mix_light-activity/Makefile.am b/src/color_mix_light-activity/Makefile.am
new file mode 100644
index 0000000..4ad759c
--- /dev/null
+++ b/src/color_mix_light-activity/Makefile.am
@@ -0,0 +1,35 @@
+include $(top_srcdir)/Makefile.activity
+
+SUBDIRS = resources
+
+pythondir = $(PYTHON_PLUGIN_DIR)
+
+dist_python_DATA= 	color_mix_light.py
+
+
+
+xmldir = $(pkgdatadir)/@PACKAGE_DATA_DIR@
+
+xml_in_files = \
+	color_mix_light.xml.in
+
+
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+# Do not use the INTLTOOL_XML_RULE, we don't need to embed the translations
+# in the file themselves. GCompris pick the translations from the po file at
+# runtime.
+#
+$(xml_DATA): %.xml: %.xml.in
+	sed -e "s/\(<\{1\}\/*\)_/\1/g" $< > $@
+
+# Use this directive and instead of the one above to embed the translations
+# in the xml files directly, this is needed for the tool gcompris2spip
+# INTLTOOL_XML_RULE@
+
+icondir = $(pkgdatadir)/@PACKAGE_DATA_DIR@
+icon_DATA = color_mix_light.svg
+
+EXTRA_DIST = $(icon_DATA) ${xml_in_files} init_path.sh
+CLEANFILES = $(xml_DATA)
+
diff --git a/src/color_mix_light-activity/color_mix_light.py b/src/color_mix_light-activity/color_mix_light.py
new file mode 100644
index 0000000..ee9310d
--- /dev/null
+++ b/src/color_mix_light-activity/color_mix_light.py
@@ -0,0 +1,346 @@
+#  gcompris - color_mix_light.py
+#
+# Copyright (C) 2012 Matilda Bernard and Bruno Coudoin
+#
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 3 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# color_mix_light activity.
+import gtk
+import gtk.gdk
+import gcompris
+import gcompris.utils
+import gcompris.skin
+import gcompris.bonus
+import goocanvas
+import pango
+import random
+
+from gcompris import gcompris_gettext as _
+
+class Gcompris_color_mix_light:
+  """Empty gcompris python class"""
+
+
+  def __init__(self, gcomprisBoard):
+    self.gcomprisBoard = gcomprisBoard
+    self.game_complete = False
+    self.gcomprisBoard.level = 1
+    self.gcomprisBoard.maxlevel = 4
+
+    # Needed to get key_press
+    gcomprisBoard.disable_im_context = True
+
+  def start(self):
+    gcompris.bar_set_level(self.gcomprisBoard)
+
+    # Set the buttons we want in the bar
+    gcompris.bar_set(gcompris.BAR_LEVEL)
+    gcompris.bar_location(2, -1, 0.5)
+
+    # Create our rootitem. We put each canvas item in it so at the end we
+    # only have to kill it. The canvas deletes all the items it contains
+    # automaticaly.
+    self.rootitem = goocanvas.Group(parent =
+                                    self.gcomprisBoard.canvas.get_root_item())
+
+    # Set a background image
+    gcompris.set_background(self.gcomprisBoard.canvas.get_root_item(),
+                            'color_mix_light/background.jpg')
+
+    text = goocanvas.Text(
+      parent = self.rootitem,
+      x = 250,
+      y = 80,
+      fill_color = "black",
+      font = gcompris.skin.get_font("gcompris/subtitle"),
+      anchor = gtk.ANCHOR_CENTER,
+      alignment = pango.ALIGN_CENTER,
+      text = _("Match the \n color "))
+
+    # Set the points for the sliders
+    r_points = goocanvas.Points( [(242, 212), (130, 177)] )
+    b_points = goocanvas.Points( [(548, 213), (665, 177)] )
+    m_points = goocanvas.Points( [(390, 372), (390, 490)] )
+
+    colors = Colors(self, self.rootitem, self.gcomprisBoard.level)
+
+    # Pass the points of the buttons and slider for the color tubes
+    red_tube = Color_tubes(self.rootitem, colors, 'torch_red.png',
+                           1, 90, 115, r_points, 232, 210, 120, 175, self.gcomprisBoard.level)
+    green_tube = Color_tubes(self.rootitem, colors, 'torch_green.png',
+                             2, 265, 265, m_points, 390, 372, 390, 490, self.gcomprisBoard.level)
+    blue_tube = Color_tubes(self.rootitem, colors, 'torch_blue.png',
+                            3, 462, 115, b_points, 554, 210, 672, 175, self.gcomprisBoard.level)
+
+  def game_over(self, result):
+    self.game_complete = True
+    if result == 1:
+      self.next_level()
+      gcompris.bonus.display(gcompris.bonus.WIN, gcompris.bonus.TUX)
+    else:
+      gcompris.bonus.display(gcompris.bonus.LOOSE, gcompris.bonus.TUX)
+
+  def next_level(self):
+    if self.gcomprisBoard.level < self.gcomprisBoard.maxlevel:
+      self.gcomprisBoard.level += 1
+
+  def end(self):
+    self.rootitem.remove()
+
+  def ok(self):
+    pass
+
+  def repeat(self):
+    pass
+
+  #mandatory but unused yet
+  def config_stop(self):
+    pass
+
+  # Configuration function.
+  def config_start(self, profile):
+    pass
+
+  def key_press(self, keyval, commit_str, preedit_str):
+    pass
+
+  def pause(self, pause):
+    self.board_paused = pause
+    if pause == False and self.game_complete:
+      self.game_complete = False
+      self.end()
+      self.start()
+
+  def set_level(self, level):
+    self.gcomprisBoard.level = level
+    gcompris.bar_set_level(self.gcomprisBoard)
+    self.end()
+    self.start()
+
+class Color_tubes:
+  """ Class containing the three primary color tubes"""
+
+
+  def __init__(self, rootitem, color_instance, image, primary_color,
+               x, y, points, incr_x, incr_y, decr_x, decr_y, level):
+    self.rootitem = rootitem
+    self.primary_color = primary_color
+    self.color_instance = color_instance
+
+    # Load the tube image
+    image = 'color_mix_light/' + image
+    pixbuf = gcompris.utils.load_pixmap(image)
+    tube = goocanvas.Image(
+      parent = self.rootitem,
+      pixbuf = pixbuf,
+      x = x,
+      y = y
+      )
+
+    button_width = 20
+    line = goocanvas.Polyline(
+      parent = self.rootitem,
+      points = points,
+      stroke_color = "white",
+      width = 2.0)
+
+    self.difference_x = (incr_x - decr_x) / 7
+    self.difference_y = (incr_y - decr_y) / 8
+    slider_x = decr_x + self.difference_x
+    slider_y = decr_y + self.difference_y
+    self.bar = goocanvas.Polyline(
+      parent = self.rootitem,
+      points = goocanvas.Points([(slider_x, slider_y - 4),
+                                 (slider_x, slider_y + 6)]),
+      stroke_color = "white",
+      line_width = 10.0)
+
+    self.scale_value = 1
+    move = int(255/ (level * 2 + 1))
+    self.color_button(decr_x, decr_y, button_width, '-', -move)
+    self.color_button(incr_x, incr_y, button_width, '+', move)
+
+  def color_button(self, x, y, size, text, move):
+    button = goocanvas.Rect(
+      parent = self.rootitem,
+      x = x - size / 2.0,
+      y = y - size / 2.0,
+      width = size,
+      height =  size,
+      line_width = 1.0,
+      stroke_color_rgba= 0xCECECEFFL,
+      fill_color_rgba = 0x333333FFL,
+      radius_x = 15.0,
+      radius_y = 5.0,
+      )
+    gcompris.utils.item_focus_init(button, None)
+
+    text = goocanvas.Text(
+      parent = self.rootitem,
+      x = x,
+      y = y,
+      text = text,
+      font = gcompris.skin.get_font("gcompris/subtitle"),
+      fill_color = "white",
+      anchor = gtk.ANCHOR_CENTER,
+      alignment = pango.ALIGN_CENTER
+      )
+    gcompris.utils.item_focus_init(text, button)
+
+    button.connect("button_press_event", self.move_bar, move)
+    text.connect("button_press_event", self.move_bar, move)
+
+  def move_bar(self, widget, target, event, move):
+    self.scale_value += move
+    # Take care not to bypass bounds
+    if self.scale_value > 256:
+      self.scale_value = 255
+      return
+    elif self.scale_value < 0:
+      self.scale_value = 1
+      return
+
+    self.bar.translate(move * self.difference_x * 0.019,
+                       move * self.difference_y * 0.023)
+    self.set_color(move)
+
+  def set_color(self, change):
+    if self.primary_color == 1:
+      self.color_instance.color1 += int(change)
+      self.color_instance.resultant_color(1)
+    elif self.primary_color == 2:
+      self.color_instance.color2 += int(change)
+      self.color_instance.resultant_color(2)
+    if self.primary_color == 3:
+      self.color_instance.color3 += int(change)
+      self.color_instance.resultant_color(3)
+
+class Colors:
+  """ Class containing all the colors"""
+
+
+  def __init__(self, game, rootitem,  level):
+    self.game = game
+    self.rootitem = rootitem
+
+    self.color_rgb = [0, 0, 0]
+    self.color1 = self.color2 = self.color3 = 0
+
+    self.color_image = goocanvas.Ellipse(
+      parent = rootitem,
+      center_x = 395,
+      center_y = 230,
+      radius_y = 60,
+      radius_x = 75,
+      stroke_color_rgba = 0x000000FFL,
+      fill_color_rgba = 0x000000FFL,
+      line_width = 0.5)
+
+    # Random color to be matched
+    self.increment = int(255/ (level * 2 + 1))
+    rand_r = random.randrange(0, 2 * level + 1)
+    rand_g = random.randrange(0, 2 * level + 1)
+    rand_b = random.randrange(0, 2 * level + 1)
+
+    self.r_random = rand_r * self.increment
+    self.g_random = rand_g * self.increment
+    self.b_random = rand_b * self.increment
+    code = self.hex_code(self.r_random, self.g_random, self.b_random)
+
+    random_color = goocanvas.Rect(
+      parent = rootitem,
+      radius_x = 6,
+      radius_y = 6,
+      x = 350,
+      y = 50,
+      width = 100,
+      height = 70,
+      stroke_color_rgba = long(code, 16),
+      fill_color_rgba = long(code, 16))
+
+    # OK Button
+    ok = goocanvas.Svg(parent = rootitem,
+                       svg_handle = gcompris.skin.svg_get(),
+                       svg_id = "#OK"
+                       )
+    ok.translate(0, -130)
+
+    ok.connect("button_press_event", self.ok_event)
+    gcompris.utils.item_focus_init(ok, None)
+
+  def ok_event(self, widget, target, event):
+    c_diff = self.color_rgb[0] - self.r_random
+    m_diff = self.color_rgb[1] - self.g_random
+    y_diff = self.color_rgb[2] - self.b_random
+    if self.color_rgb[0] - self.increment <= self.r_random <= self.color_rgb[0] + self.increment and \
+       self.color_rgb[1] - self.increment <= self.g_random <= self.color_rgb[1] + self.increment and \
+       self.color_rgb[2] - self.increment <= self.b_random <= self.color_rgb[2] + self.increment:
+      self.game.game_over(1)
+    else:
+      self.show_message(c_diff, m_diff, y_diff)
+      self.game.game_over(2)
+
+  def show_message(self, red, green, blue):
+    if red > 0 and abs(red) > self.increment:
+      self.message('Too much red', 300)
+    elif red < 0 and abs(red) > self.increment:
+      self.message('Not enough red', 300)
+
+    if green > 0 and abs(green) > self.increment:
+      self.message('Too much green', 375)
+    elif green < 0 and abs(green) > self.increment:
+      self.message('Not enough green', 375)
+
+    if blue > 0 and abs(blue) > self.increment:
+      self.message('Too much blue', 450)
+    elif blue < 0 and abs(blue) > self.increment:
+      self.message('Not enough blue', 450)
+
+  def message(self, msg, y):
+    text = goocanvas.Text(
+      parent = self.rootitem,
+      x = 150,
+      y = y,
+      fill_color_rgba = 0x550000FFL,
+      anchor = gtk.ANCHOR_CENTER,
+      alignment = pango.ALIGN_CENTER,
+      text = _(msg))
+    bounds = text.get_bounds()
+    gap = 20
+
+    back = goocanvas.Rect(
+      parent = self.rootitem,
+      radius_x = 6,
+      radius_y = 6,
+      x = bounds.x1 - gap,
+      y = bounds.y1 - gap,
+      width = bounds.x2 - bounds.x1 + gap * 2,
+      height = bounds.y2 - bounds.y1 + gap * 2,
+      stroke_color_rgba = 0xFFFFFFFFL,
+      fill_color_rgba = 0xCCCCCC44L)
+
+  def resultant_color(self, change):
+    self.color_rgb[0] = self.color1
+    self.color_rgb[1] = self.color2
+    self.color_rgb[2] = self.color3
+
+    color_code = self.hex_code(self.color_rgb[0], self.color_rgb[1],
+                               self.color_rgb[2])
+    self.color_image.set_property('fill_color_rgba', long(color_code, 16))
+
+  def hex_code(self, r, g, b):
+    hexchars = "0123456789ABCDEF"
+    return hexchars[r / 16] + hexchars[r % 16] + hexchars[g / 16] + \
+          hexchars[g % 16] + hexchars[b / 16] + hexchars[b % 16] + 'FFL'
+
diff --git a/src/color_mix_light-activity/color_mix_light.svg b/src/color_mix_light-activity/color_mix_light.svg
new file mode 100644
index 0000000..3d79afc
--- /dev/null
+++ b/src/color_mix_light-activity/color_mix_light.svg
@@ -0,0 +1,503 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.1 r9760"
+   width="200"
+   height="200"
+   sodipodi:docname="light_mix.png">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs6" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="485"
+     id="namedview4"
+     showgrid="false"
+     inkscape:zoom="1.28"
+     inkscape:cx="100"
+     inkscape:cy="100"
+     inkscape:window-x="7"
+     inkscape:window-y="24"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2" />
+  <image
+     width="200"
+     height="200"
+     xlink:href="data:image/png;base64,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
+"
+     id="image10"
+     x="0"
+     y="0" />
+</svg>
diff --git a/src/color_mix_light-activity/color_mix_light.xml.in b/src/color_mix_light-activity/color_mix_light.xml.in
new file mode 100644
index 0000000..89b22e6
--- /dev/null
+++ b/src/color_mix_light-activity/color_mix_light.xml.in
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<GCompris>
+  <Board
+        name="color_mix_light"
+        type="python:color_mix_light"
+        section="/discovery/colors_group"
+        icon="color_mix_light.svg"
+        difficulty="1"
+        author="Matilda Bernard (serah4291 gmail com)"
+        boarddir=""
+        >
+        <_title>Colors of light</_title>
+        <_description>Understanding mixing of colors of light</_description>
+        <_goal>Mix the primary colors to match to the given color</_goal>
+        <_manual xml:space = 'preserve'>
+The activity deals with mixing primary colors of light.
+
+In case of light it is just the opposite of mixing color with paints! The more light you add the lighter the resultant color will get. Primary colors of light are red, green and blue.
+        </_manual>
+        <_credit>Openclipart.org</_credit>
+  </Board>
+  <Data directory=""/>
+</GCompris>
+
diff --git a/src/color_mix_light-activity/gcompris b/src/color_mix_light-activity/gcompris
new file mode 120000
index 0000000..6a7dc8a
--- /dev/null
+++ b/src/color_mix_light-activity/gcompris
@@ -0,0 +1 @@
+../boards/python/gcompris
\ No newline at end of file
diff --git a/src/color_mix_light-activity/init_path.sh b/src/color_mix_light-activity/init_path.sh
new file mode 100755
index 0000000..df30b33
--- /dev/null
+++ b/src/color_mix_light-activity/init_path.sh
@@ -0,0 +1,9 @@
+# Set the different path for this activity
+# This is sourced by runit.sh
+path=$1
+activity=color_mix_light
+plugindir=$path/../boards/.libs
+pythonplugindir=$path
+resourcedir=$path/resources
+section="/discovery/colors_group"
+
diff --git a/src/color_mix_light-activity/resources/Makefile.am b/src/color_mix_light-activity/resources/Makefile.am
new file mode 100644
index 0000000..9d6ec71
--- /dev/null
+++ b/src/color_mix_light-activity/resources/Makefile.am
@@ -0,0 +1,2 @@
+SUBDIRS = color_mix_light
+
diff --git a/src/color_mix_light-activity/resources/color_mix_light/Makefile.am b/src/color_mix_light-activity/resources/color_mix_light/Makefile.am
new file mode 100644
index 0000000..ce0b68b
--- /dev/null
+++ b/src/color_mix_light-activity/resources/color_mix_light/Makefile.am
@@ -0,0 +1,9 @@
+imgdir = $(pkgdatadir)/@PACKAGE_DATA_DIR@/color_mix_light
+img_DATA = \
+	background.jpg \
+	torch_blue.png \
+	torch_red.png \
+	torch_green.png \
+
+EXTRA_DIST = $(img_DATA)
+
diff --git a/src/color_mix_light-activity/resources/color_mix_light/background.jpg b/src/color_mix_light-activity/resources/color_mix_light/background.jpg
new file mode 100644
index 0000000..4356d48
Binary files /dev/null and b/src/color_mix_light-activity/resources/color_mix_light/background.jpg differ
diff --git a/src/color_mix_light-activity/resources/color_mix_light/torch_blue.png b/src/color_mix_light-activity/resources/color_mix_light/torch_blue.png
new file mode 100644
index 0000000..f2706a6
Binary files /dev/null and b/src/color_mix_light-activity/resources/color_mix_light/torch_blue.png differ
diff --git a/src/color_mix_light-activity/resources/color_mix_light/torch_green.png b/src/color_mix_light-activity/resources/color_mix_light/torch_green.png
new file mode 100644
index 0000000..7cba8a3
Binary files /dev/null and b/src/color_mix_light-activity/resources/color_mix_light/torch_green.png differ
diff --git a/src/color_mix_light-activity/resources/color_mix_light/torch_red.png b/src/color_mix_light-activity/resources/color_mix_light/torch_red.png
new file mode 100644
index 0000000..5ab2005
Binary files /dev/null and b/src/color_mix_light-activity/resources/color_mix_light/torch_red.png differ



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]