示例#1
0
 def __init__(self, game):
     self.grid = [0, 1, 2, 3, 4, 5, 6, 7, 8]
     self.card_table = []
     self.mask_table = []
     # Stuff to keep around for the graphics
     self.w = int(game.width)
     self.h = int(game.height)
     self.d = int(game.card_dim * game.scale)
     self.s = game.scale
     # Initialize the cards
     i = 0  # i is used as a label on the sprite
     for c in CARD_DEFS:
         x, y = self.i_to_xy(i)
         self.card_table.append(Card(game, c, i, x, y))
         i += 1
     # Initialize the masks (We need up to 6 of each one.)
     for i in range(4):
         bitmap = load_image(os.path.join(game.path, 'mask%dh.svg' % (i)),
                             120 * game.scale, 48 * game.scale)
         for j in range(6):
             x, y = self.mh_to_xy(j)
             self.mask_table.append(Sprite(game.sprites, x, y, bitmap))
         bitmap = load_image(os.path.join(game.path, 'mask%dv.svg' % (i)),
                             48 * game.scale, 120 * game.scale)
         for j in range(6):
             x, y = self.mv_to_xy(j)
             self.mask_table.append(Sprite(game.sprites, x, y, bitmap))
     self.hide_masks()
示例#2
0
    def _create_number_sprites(self):
        for i in range(5):
            self._numbers.append([])
            self._glownumbers.append([])
            for j in range(5):
                if self.i == 0:
                    x = self.sx(
                        NX[self.i]) + i * (self.ss(NS[self.i] + NO[self.i]))
                    y = self.sy(NY[self.i])
                else:
                    x = self.sx(NX[self.i])
                    y = self.sy(
                        NY[self.i]) + i * (self.ss(NS[self.i] + NO[self.i]))
                number = Sprite(
                    self._sprites, x, y,
                    self._parent.number_pixbuf(self.ss(NS[self.i]), j + 1,
                                               self._parent.sugarcolors[1]))
                number.type = 'number'
                number.name = '%d,%d' % (i, j)
                self._numbers[i].append(number)

                number = Sprite(
                    self._sprites, x, y,
                    self._parent.number_pixbuf(self.ss(NS[self.i]), j + 1,
                                               '#FFFFFF'))
                number.type = 'number'
                number.name = '%d,%d' % (i, j)
                self._glownumbers[i].append(number)
示例#3
0
    def _setup_workspace(self):
        ''' Add the bones. '''
        self._width = Gdk.Screen.width()
        self._height = int(Gdk.Screen.height() - (GRID_CELL_SIZE * 2))
        self._scale = self._height * 1.0 / BONE_HEIGHT
        self._bone_width = int(BONE_WIDTH * self._scale)
        self._bone_height = int(BONE_HEIGHT * self._scale)

        # Generate the sprites we'll need...
        self._sprites = Sprites(self._canvas)
        self._bone_index = Sprite(
            self._sprites, 0, 0,
            _load_svg_from_file(
                os.path.join(self._bone_path, 'bones-index.svg'),
                self._bone_width, self._bone_height))
        self._max_bones = int(self._width / self._bone_width) - 1
        self._blank_image = _load_svg_from_file(
            os.path.join(self._bone_path, 'blank-bone.svg'), self._bone_width,
            self._bone_height)
        for bones in range(self._max_bones):
            self._bones.append(
                Sprite(self._sprites, bones * self._bone_width, 0,
                       self._blank_image))
        circle_image = _load_svg_from_file(
            os.path.join(self._bone_path, 'circle.svg'), int(self._scale * 45),
            int(self._scale * 45))
        self._circles[0] = Sprite(self._sprites, 0, -100, circle_image)
        self._circles[1] = Sprite(self._sprites, 0, -100, circle_image)
        oval_image = _load_svg_from_file(
            os.path.join(self._bone_path, 'oval.svg'), int(self._scale * 129),
            int(self._scale * 92))
        for bones in range(self._max_bones - 1):
            self._ovals.append(Sprite(self._sprites, 0, -100, oval_image))
示例#4
0
 def __init__(self,
              sprites,
              path,
              name,
              x,
              y,
              w,
              h,
              svg_engine=None,
              function=None):
     if svg_engine is None:
         self.spr = Sprite(sprites, x, y, file_to_pixbuf(path, name, w, h))
     else:
         self.spr = Sprite(sprites, x, y,
                           svg_str_to_pixbuf(svg_engine().svg))
     self.tab_dx = [0, SWIDTH - TABWIDTH]
     self.tab_dy = [2 * SHEIGHT, 2 * SHEIGHT]
     self.tabs = []
     self.tabs.append(
         Tab(sprites, path, 'tab', x + self.tab_dx[0], y + self.tab_dy[0],
             TABWIDTH, SHEIGHT))
     self.tabs.append(
         Tab(sprites, path, 'tab', x + self.tab_dx[1], y + self.tab_dy[1],
             TABWIDTH, SHEIGHT))
     self.calculate = function
     self.name = name
示例#5
0
    def create(self, string, attributes=None, sprites=None, file_path=None):
        if attributes is None:
            if self.spr is None:
                self.spr = Sprite(sprites, 0, 0, svg_str_to_pixbuf(string))
            else:
                self.spr.set_image(svg_str_to_pixbuf(string))
            self.index = None
        else:
            self.shape = attributes[0]
            self.color = attributes[1]
            self.num = attributes[2]
            self.fill = attributes[3]
            self.index = self.shape * COLORS * NUMBER * FILLS + \
                self.color * NUMBER * FILLS + \
                self.num * FILLS + \
                self.fill
            if self.spr is None:
                self.spr = Sprite(sprites, 0, 0, svg_str_to_pixbuf(string))
            else:
                self.spr.set_image(svg_str_to_pixbuf(string))

            if file_path is not None:
                self.spr.set_image(load_image(file_path, self._scale),
                                   i=1,
                                   dx=int(self._scale * CARD_WIDTH * .125),
                                   dy=int(self._scale * CARD_HEIGHT * .125))
        self.spr.set_label_attributes(self._scale * 24)
        self.spr.set_label('')
示例#6
0
    def __init__(self, cards):
        self.frame = Sprite(
            0,
            c.sizes["topmenu"][1],
            image=pygame.image.load(
                "assets/misc/chooseYourPlants.png").convert_alpha(),
            size=c.sizes["choose"])
        self.button_images = list(
            map(lambda i: pygame.transform.smoothscale(i, c.sizes["letsRock"]),
                [
                    pygame.image.load(
                        "assets/misc/letsRock.png").convert_alpha(),
                    pygame.image.load(
                        "assets/misc/letsRockHighlight.png").convert_alpha()
                ]))
        self.button = Sprite(158, 568, image=self.button_images[0])

        self.cards = pygame.sprite.Group()
        self.x = c.pads["choose"][0]
        self.starting_x = self.x
        y = c.pads["choose"][1]
        _c = 0
        for card in cards:
            _c += 1
            image = pygame.image.load(
                f"assets/cards/card{card.__name__}.png").convert()
            s = Card(self.x, card, image=image, size=c.sizes["card"], y=y)
            self.cards.add(s)
            self.x += c.sizes["card"][0] + 2
            if _c % 7 == 0:
                self.x = self.starting_x
                y += c.sizes["card"][1] + 5
示例#7
0
 def word_card_append(self, card_list, pixbuf, i=-1):
     if i == -1:
         card_list.append(Sprite(self._sprites, 10, 10, pixbuf))
     else:
         card_list[i] = Sprite(self._sprites, 10, 10, pixbuf)
     card_list[i].set_label_attributes(36)
     card_list[i].set_margins(10, 0, 10, 0)
     card_list[i].hide()
示例#8
0
    def __init__(self, canvas, parent=None, colors=['#A0FFA0', '#FF8080']):
        self._activity = parent
        self._colors = colors

        self._canvas = canvas
        parent.show_all()

        self._canvas.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
        self._canvas.connect("draw", self.__draw_cb)
        self._canvas.connect("button-press-event", self._button_press_cb)

        self._width = Gdk.Screen.width()
        self._height = Gdk.Screen.height() - (GRID_CELL_SIZE * 1.5)
        self._scale = self._height / (14.0 * DOT_SIZE * 1.2)
        self._dot_size = int(DOT_SIZE * self._scale)
        self._turtle_offset = 0
        self._space = int(self._dot_size / 5.)
        self._orientation = 0
        self.level = 0
        self.custom_strategy = None
        self.strategies = [
            BEGINNER_STRATEGY, INTERMEDIATE_STRATEGY, EXPERT_STRATEGY,
            self.custom_strategy
        ]
        self.strategy = self.strategies[self.level]
        self._timeout_id = None

        # Generate the sprites we'll need...
        self._sprites = Sprites(self._canvas)
        self._dots = []
        for y in range(THIRTEEN):
            for x in range(THIRTEEN):
                xoffset = int((self._width - THIRTEEN * (self._dot_size + \
                                      self._space) - self._space) / 2.)
                if y % 2 == 1:
                    xoffset += int((self._dot_size + self._space) / 2.)
                if x == 0 or y == 0 or x == THIRTEEN - 1 or y == THIRTEEN - 1:
                    self._dots.append(
                        Sprite(self._sprites,
                               xoffset + x * (self._dot_size + self._space),
                               y * (self._dot_size + self._space),
                               self._new_dot('#B0B0B0')))
                else:
                    self._dots.append(
                        Sprite(self._sprites,
                               xoffset + x * (self._dot_size + self._space),
                               y * (self._dot_size + self._space),
                               self._new_dot(self._colors[FILL])))
                    self._dots[-1].type = False  # not set

        # Put a turtle at the center of the screen...
        self._turtle_images = []
        self._rotate_turtle(self._new_turtle())
        self._turtle = Sprite(self._sprites, 0, 0, self._turtle_images[0])
        self._move_turtle(self._dots[int(THIRTEEN * THIRTEEN / 2)].get_xy())

        # ...and initialize.
        self._all_clear()
    def draw_rods_and_beads(self, x, y):
        """ Draw the rods and beads """
        _white = _svg_header(BWIDTH, BHEIGHT, self.abacus.scale) +\
                 _svg_bead("#ffffff", "#000000") +\
                 _svg_footer()
        _yellow1 = _svg_header(BWIDTH, BHEIGHT, self.abacus.scale) +\
                 _svg_bead("#ffffcc", "#000000") +\
                 _svg_footer()
        _yellow2 = _svg_header(BWIDTH, BHEIGHT, self.abacus.scale) +\
                 _svg_bead("#ffff88", "#000000") +\
                 _svg_footer()
        _yellow3 = _svg_header(BWIDTH, BHEIGHT, self.abacus.scale) +\
                 _svg_bead("#ffff00", "#000000") +\
                 _svg_footer()
        self.colors = [_svg_str_to_pixbuf(_white),
                       _svg_str_to_pixbuf(_yellow1),
                       _svg_str_to_pixbuf(_yellow2),
                       _svg_str_to_pixbuf(_yellow3)]

        dx = (BWIDTH+BOFFSET)*self.abacus.scale
        bo =  (BWIDTH-BOFFSET)*self.abacus.scale/4
        ro =  (BWIDTH+5)*self.abacus.scale/2
        for i in range(self.num_rods):
            _rod = _svg_header(10, self.frame_height-(FSTROKE*2),
                               self.abacus.scale) +\
                   _svg_rect(10, self.frame_height-(FSTROKE*2), 0, 0, 0, 0,
                             ROD_COLORS[i%len(ROD_COLORS)], "#404040") +\
                   _svg_footer()
            self.rods.append(Sprite(self.abacus.sprites, x+i*dx+ro, y,
                                    _svg_str_to_pixbuf(_rod)))

            for b in range(self.top_beads):
                self.beads.append(Bead(Sprite(self.abacus.sprites, x+i*dx+bo,
                                              y+b*BHEIGHT*self.abacus.scale,
                                              self.colors[0]),
                                       2*BHEIGHT*self.abacus.scale,
                                       self.top_factor*(pow(self.base,
                                                        self.num_rods-i-1))))
            for b in range(self.bot_beads):
                if self.top_beads > 0:
                    self.beads.append(Bead(Sprite(self.abacus.sprites,
                                                  x+i*dx+bo,
                                                  y+(self.top_beads+5+b)*\
                                                  BHEIGHT*self.abacus.scale,
                                                  self.colors[0]),
                                           2*BHEIGHT*self.abacus.scale,
                                           pow(self.base,self.num_rods-i-1)))
                else:
                    self.beads.append(Bead(Sprite(self.abacus.sprites,
                                                  x+i*dx+bo,
                                                  y+(2+b)*BHEIGHT\
                                                  *self.abacus.scale,
                                                  self.colors[0]),
                                           2*BHEIGHT*self.abacus.scale,
                                           pow(self.base,self.num_rods-i-1)))

        for rod in self.rods:
            rod.type = "frame"
示例#10
0
 def _create_results_sprites(self):
     x = 0
     y = self.sy(GY[self.i])
     self._success = Sprite(self._sprites, x, y,
                            self._parent.good_job_pixbuf())
     self._success.hide()
     self._failure = Sprite(self._sprites, x, y,
                            self._parent.try_again_pixbuf())
     self._failure.hide()
示例#11
0
def highlight_graphic(sprites, scale=1.0):
    return [
        Sprite(sprites, -100, 0,
               svg_str_to_pixbuf(generate_corners(0, 0.125 * scale))),
        Sprite(sprites, -100, 0,
               svg_str_to_pixbuf(generate_corners(1, 0.125 * scale))),
        Sprite(sprites, -100, 0,
               svg_str_to_pixbuf(generate_corners(2, 0.125 * scale))),
        Sprite(sprites, -100, 0,
               svg_str_to_pixbuf(generate_corners(3, 0.125 * scale)))
    ]
示例#12
0
	def __init__(self, username,  size=(1200,800)):
		pygame.init()
		self.size = size
		self.screen = pygame.display.set_mode(size )
		pygame.display.set_caption("GrandTheftSchema2")
		pygame.mouse.set_visible(1)
		pygame.key.set_repeat(1, 1)

		self.renderitems=[]
		self.renderimages=[]
		self.renderlock = threading.Semaphore()
		self.clock = pygame.time.Clock()
		self.userpos = None
		self.username = username
		self.CACHEMODE = False
		self.font = pygame.font.Font("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 12)


		self.querybg = Sprite('images/querybg.png',(800,200), True)	
		self.forkme = Sprite('images/forkme.png',(298,298), True)
		self.GTS_OVERVIEW = Sprite('images/GTS_OVERVIEW.png',self.size, False)

                self._overviewmap = None
                self._overviewboundslower=None
                self._overviewboundsupper=None
                self._overviewsize=None

		self.lastactivity = time.time()


		self.kreis = Sprite('images/kreis.png',(20,20), True)	
		self.activelogo = Sprite('images/phant.png',(20,20), True)
		self.activelogo.xpos=0 
		#rasterm = rastermap.rastermap() 
		self.rastermap = rastermap.rastermap()

		self.envpool = []
		for x in range(0,multiprocessing.cpu_count()-1):
			a =  environmenter(self.rastermap)
			self.envpool.append( a )
			a.start()

		self.initBoundingBox()
		self.objectmanager = objectmanager()
		self.objectpuller = objectpuller(None,self.objectmanager, username )
		self.objectpuller.start()
		self.rastermap.setZoom(1)
		self.ticker=ticker()
		self.ticker.start()
		self.lastcontrolledobject = None
示例#13
0
 def make_labels(self):
     ''' Label the bar '''
     num = svg_header(BAR_HEIGHT * self.scale, BAR_HEIGHT * self.scale,
                      1.0) + \
           svg_rect(BAR_HEIGHT * self.scale, BAR_HEIGHT * self.scale,
                    0, 0, 0, 0, 'none', 'none') + \
           svg_footer()
     self.left = Sprite(self.sprites, int(self.ball_size / 4), self.bar_y(),
                        svg_str_to_pixbuf(num))
     self.left.set_label(_('0'))
     self.right = Sprite(self.sprites,
                         self.screen_width - int(self.ball_size / 2),
                         self.bar_y(), svg_str_to_pixbuf(num))
     self.right.set_label(_('1'))
示例#14
0
文件: game.py 项目: sugarlabs/flip
    def _generate_grid(self):
        ''' Make a new set of dots for a grid of size edge '''
        i = 0
        for y in range(self._edge):
            for x in range(self._edge):
                xoffset = int((self._width - self._edge * self._dot_size -
                               (self._edge - 1) * self._space) / 2.)
                yoffset = int((self._height - self._edge * self._dot_size -
                               (self._edge - 1) * self._space) / 2.)
                if i < len(self._dots):
                    self._dots[i].move(
                        (xoffset + x * (self._dot_size + self._space),
                         yoffset + y * (self._dot_size + self._space)))
                else:
                    self._dots.append(
                        Sprite(self._sprites,
                               xoffset + x * (self._dot_size + self._space),
                               yoffset + y * (self._dot_size + self._space),
                               self._new_dot(self._colors[0])))
                self._dots[i].type = 0
                self._dots[-1].set_label_attributes(40)
                i += 1

        # and initialize a few variables we'll need.
        self._all_clear()
示例#15
0
    def __init__(self, cards: list = None, pos: int = 100):
        if cards is None:
            cards = []
        # TODO добавить остальные цифры
        # Digits for sun display
        self.digits = {
            str(n): pygame.image.load(f"assets/misc/{n}.png").convert_alpha()
            for n in range(10)
        }
        # Main frame
        self.frame = Sprite(
            pos,
            0,
            image=pygame.image.load("assets/misc/topmenu.png").convert_alpha(),
            size=c.sizes["topmenu"])
        # Positions cards
        self.cards = pygame.sprite.Group()
        self.x = c.pads["sun"][0] + (c.pads["menubar"][0]
                                     if self.get_preparing() else 0)
        self.starting_x = self.x
        for card in cards:
            image = pygame.image.load(
                f"assets/cards/card{card.__name__}.png").convert()
            s = Card(self.x, card, image=image, size=c.sizes["card"])
            self.cards.add(s)
            self.x += c.sizes["card"][0] + c.pads["cards"]

        self.shovel = Shovel(c.sizes["topmenu"][0] + c.pads["menubar"][0], 0)
示例#16
0
 def _generate_spiral(self):
     ''' Make a new set of dots for a sprial '''
     for z in range(4):
         for i in range(len(colors)):
             if self._zones[i] == z:
                 self._dots.append(
                     Sprite(self._sprites, self._xy[0], self._xy[1],
                            self._new_dot(colors[i])))
                 self._dots[-1].type = i
                 self._calc_next_dot_position()
     if self._xo_man is None:
         x = 510 * self._scale
         y = 280 * self._scale
         self._xo_man = Sprite(self._sprites, x, y,
                               self._new_xo_man(self.colors))
         self._xo_man.type = None
示例#17
0
def create_toolbar_background(sprite_list, width):
    # Create the toolbar background for the selectors
    spr = Sprite(sprite_list, 0, 0,
                 svg_str_to_pixbuf(SVG().toolbar(2 * width, ICON_SIZE)))
    spr.type = 'toolbar'
    spr.set_layer(CATEGORY_LAYER)
    return spr
示例#18
0
    def _make_wedge_bar(self, nsegments):
        ''' Create a wedged-shaped bar with n segments '''
        s = 3.5  # add provision for stroke width
        svg = svg_header(self._width, BAR_HEIGHT * self._scale + s, 1.0)
        dx = self._width / float(nsegments)
        dy = (BAR_HEIGHT * self._scale) / float(nsegments)
        for i in range(int(nsegments) // 2):
            svg += svg_wedge(dx, BAR_HEIGHT * self._scale + s,
                             i * 2 * dx + s,
                             i * 2 * dy + s, (i * 2 + 1) * dy + s,
                             '#000000', '#FFFFFF')
            svg += svg_wedge(dx, BAR_HEIGHT * self._scale + s,
                             (i * 2 + 1) * dx + s,
                             (i * 2 + 1) * dy + s, (i * 2 + 2) * dy + s,
                             '#000000', '#FFFFFF')
        if int(nsegments) % 2 == 1:  # odd
            svg += svg_wedge(dx, BAR_HEIGHT * self._scale + s,
                             (i * 2 + 2) * dx + s,
                             (i * 2 + 2) * dy + s,
                             BAR_HEIGHT * self._scale + s,
                             '#000000', '#FFFFFF')
        svg += svg_footer()

        self.bars[nsegments] = Sprite(self._sprites, 0, 0,
                                      svg_str_to_pixbuf(svg))
        self.bars[nsegments].set_layer(2)
        self.bars[nsegments].set_label_attributes(18, horiz_align="left", i=0)
        self.bars[nsegments].set_label_attributes(18, horiz_align="right", i=1)
        self.bars[nsegments].set_label_color('black', i=0)
        self.bars[nsegments].set_label_color('white', i=1)
        self.bars[nsegments].set_label(' 0', i=0)
        self.bars[nsegments].set_label('1 ', i=1)
        self.bars[nsegments].move(
            (0, self._height - BAR_HEIGHT * self._scale))
示例#19
0
    def _make_background(self, x, y, w, h, regenerate=False):
        ''' Make the background sprite for the palette. '''
        orientation = self._turtle_window.orientation

        if regenerate and not self.backgrounds[orientation] is None:
            self.backgrounds[orientation].hide()
            self.backgrounds[orientation] = None

        if self.backgrounds[orientation] is None:
            svg = SVG()
            self.backgrounds[orientation] = \
                Sprite(self._turtle_window.sprite_list, x, y,
                       svg_str_to_pixbuf(svg.palette(w, h)))
            self.backgrounds[orientation].save_xy = (x, y)

            self._float_palette(self.backgrounds[orientation])

            if orientation == 0 and w > self._turtle_window.width:
                self.backgrounds[orientation].type = \
                    'category-shift-horizontal'
            elif orientation == 1 and \
                    h > self._turtle_window.height - ICON_SIZE:
                self.backgrounds[orientation].type = \
                    'category-shift-vertical'
            else:
                self.backgrounds[orientation].type = 'category'

            '''
示例#20
0
    def __init__(self, parent):
        super().__init__(parent)
        # Location music
        pygame.mixer_music.load("assets/audio/chooseYourSeeds.mp3")
        pygame.mixer_music.play(loops=-1)

        self.bg = Sprite(
            0, 0, image=pygame.image.load("assets/misc/bg.png").convert())
        # At the begging camera moves to the right side of background
        self.move_times = (self.bg.image.get_width() - c.sizes["win"][0]) / 5
        # Card choices
        self.plant_choice_widget = PlantChoiceMenu(  # Contains all working plants
            [
                PotatoMine, Sunflower, SnowPea, CherryBomb, Chomper, Repeater,
                WallNut, PeaShooter
            ])
        # Menu which usually displays suns and chosen cards
        # New cards added here
        self.top_menu = TopMenu(pos=0)
        # Sounds and images for pre-game state
        self.ready_set_plant = pygame.mixer.Sound(
            "assets/audio/readysetplant.wav")
        self.ready_set_plant_images = [
            pygame.image.load("assets/misc/StartReady.png").convert_alpha(),
            pygame.image.load("assets/misc/StartSet.png").convert_alpha(),
            pygame.image.load("assets/misc/StartPlant.png").convert_alpha(),
        ]
        self.counter = 0
示例#21
0
    def configure_cb(self, event):
        self._width = Gdk.Screen.width()
        self._height = Gdk.Screen.height() - GRID_CELL_SIZE
        self._scale = Gdk.Screen.height() / 900.0

        # We need to resize the backgrounds
        width, height = self._calc_background_size()
        for bg in list(self._backgrounds.keys()):
            if bg == 'custom':
                path = self._custom_dsobject.file_path
                pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(
                    path, width, height)
            else:
                pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(
                    os.path.join(self._path, 'images', bg), width, height)
            if Gdk.Screen.height() > Gdk.Screen.width():
                pixbuf = self._crop_to_portrait(pixbuf)

            self._backgrounds[bg] = pixbuf

        self._background = Sprite(self._sprites, 0, 0,
                                  self._backgrounds[self._current_bg])
        self._background.set_layer(-100)
        self._background.type = 'background'

        # and resize and reposition the bars
        self.bar.resize_all()
        self.bar.show_bar(2)
        self._current_bar = self.bar.get_bar(2)

        # Calculate a new accerlation based on screen height.
        self._ddy = (6.67 * self._height) / (STEPS * STEPS)

        self._guess_orientation()
示例#22
0
    def __init__(self, canvas, parent=None, path=None,
                 colors=['#A0FFA0', '#FF8080']):
        self._canvas = canvas
        self._parent = parent
        self._parent.show_all()
        self._path = path
        self.level = 1

        self._colors = ['#FFFFFF']
        self._colors.append(colors[0])
        self._colors.append(colors[1])
        self._colors.append(colors[0])
        self._colors.append('#FF0000')

        self._canvas.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
        self._canvas.connect("draw", self.__draw_cb)
        self._canvas.connect("button-press-event", self._button_press_cb)

        self._width = Gdk.Screen.width()
        self._height = Gdk.Screen.height() - GRID_CELL_SIZE
        if self._width < self._height:
            self.portrait = True
            self.grid_height = TEN
            self.grid.width = SEVEN
        else:
            self.portrait = False
            self.grid_height = SEVEN
            self.grid_width = TEN
        self._scale = min(self._width / (self.grid_width * DOT_SIZE * 1.2),
                          self._height / (self.grid_height * DOT_SIZE * 1.2))

        self._dot_size = int(DOT_SIZE * self._scale)
        self._space = int(self._dot_size / 5.)
        self.we_are_sharing = False

        # '-1' Workaround for showing 'second 0'
        self._game_time_seconds = -1
        self._game_time = "00:00"

        self._timeout_id = None

        # Generate the sprites we'll need...
        self._sprites = Sprites(self._canvas)
        self._dots = []
        for y in range(self.grid_height):
            for x in range(self.grid_width):
                xoffset = int((self._width - self.grid_width * self._dot_size -
                               (self.grid_width - 1) * self._space) / 2.)
                self._dots.append(
                    Sprite(self._sprites,
                           xoffset + x * (self._dot_size + self._space),
                           y * (self._dot_size + self._space),
                           self._new_dot(self._colors[0])))
                self._dots[-1].type = 0  # not set
                self._dots[-1].set_label_attributes(40)

        self._all_clear()

        Gdk.Screen.get_default().connect('size-changed', self._configure_cb)
    def draw_rods_and_beads(self, x, y):
        """ Override default in order to make a short rod """
        _white = _svg_header(BWIDTH, BHEIGHT, self.abacus.scale) +\
                _svg_bead("#ffffff", "#000000") +\
                _svg_footer()
        self.white = _svg_str_to_pixbuf(_white)
        _black = _svg_header(BWIDTH, BHEIGHT, self.abacus.scale) +\
                 _svg_bead("#000000", "#000000") +\
                 _svg_footer()
        self.black = _svg_str_to_pixbuf(_black)

        dx = (BWIDTH+BOFFSET)*self.abacus.scale

        self.beads = []
        self.rods = []
        bo =  (BWIDTH-BOFFSET)*self.abacus.scale/4
        ro =  (BWIDTH+5)*self.abacus.scale/2
        for i in range(self.num_rods):
            _rod = _svg_header(10, self.frame_height-(FSTROKE*2),
                               self.abacus.scale) +\
                   _svg_rect(10, self.frame_height-(FSTROKE*2), 0, 0, 0, 0,
                            ROD_COLORS[(i+9)%len(ROD_COLORS)], "#404040") +\
                   _svg_footer()
            self.rods.append(Sprite(self.abacus.sprites, x+i*dx+ro, y,
                                    _svg_str_to_pixbuf(_rod)))

            for b in range(self.bead_count[i]):
                if i < 6: # whole-number beads are white
                    self.beads.append(Bead(Sprite(self.abacus.sprites,
                                                  x+i*dx+bo,
                                                  y+(14-self.bead_count[i]+b)*\
                                                  BHEIGHT*self.abacus.scale,
                                                  self.white),
                                           4*BHEIGHT*self.abacus.scale,
                                           pow(10,5-i)))
                else: # fraction beads are black
                    self.beads.append(Bead(Sprite(self.abacus.sprites,
                                                  x+i*dx+bo,
                                                  y+(14-self.bead_count[i]+b)*\
                                                  BHEIGHT*self.abacus.scale,
                                                  self.black),
                                           (14-self.bead_count[i])*BHEIGHT*\
                                           self.abacus.scale,
                                           1.0/self.bead_count[i]))
        for r in self.rods:
            r.type = "frame"
示例#24
0
 def __init__(self, sprites, name, x, y, svg_engine, calculate, result,
              offset, label, min, max, step):
     svg = svg_engine(name, offset, label, min, max, step)
     self.error_msg = svg.error_msg
     self.spr = Sprite(sprites, x, y, svg_str_to_pixbuf(svg.svg))
     self.calculate = calculate
     self.result = result
     self.name = name
    def __init__(self, turtle_window, n):
        '''This class handles the display of palette selectors (Only relevant
        to GNOME version and very old versions of Sugar).
        '''

        self.shapes = []
        self.spr = None
        self._turtle_window = turtle_window
        self._index = n

        if not n < len(palette_names):
            # Shouldn't happen, but hey...
            debug_output('palette index %d is out of range' % n,
                         self._turtle_window.running_sugar)
            self._name = 'extras'
        else:
            self._name = palette_names[n]

        icon_pathname = None
        for path in self._turtle_window.icon_paths:
            if os.path.exists(os.path.join(path, '%soff.svg' % (self._name))):
                icon_pathname = os.path.join(path, '%soff.svg' % (self._name))
                break

        if icon_pathname is not None:
            off_shape = svg_str_to_pixbuf(svg_from_file(icon_pathname))
        else:
            off_shape = svg_str_to_pixbuf(
                svg_from_file(
                    os.path.join(self._turtle_window.icon_paths[0],
                                 'extrasoff.svg')))
            error_output('Unable to open %soff.svg' % (self._name),
                         self._turtle_window.running_sugar)

        icon_pathname = None
        for path in self._turtle_window.icon_paths:
            if os.path.exists(os.path.join(path, '%son.svg' % (self._name))):
                icon_pathname = os.path.join(path, '%son.svg' % (self._name))
                break

        if icon_pathname is not None:
            on_shape = svg_str_to_pixbuf(svg_from_file(icon_pathname))
        else:
            on_shape = svg_str_to_pixbuf(
                svg_from_file(
                    os.path.join(self._turtle_window.icon_paths[0],
                                 'extrason.svg')))
            error_output('Unable to open %son.svg' % (self._name),
                         self._turtle_window.running_sugar)

        self.shapes.append(off_shape)
        self.shapes.append(on_shape)

        x = int(ICON_SIZE * self._index)
        self.spr = Sprite(self._turtle_window.sprite_list, x, 0, off_shape)
        self.spr.type = 'selector'
        self.spr.name = self._name
        self.set_layer()
示例#26
0
    def __init__(self, nome: str, x: int, y: int, poder_atual: PoderGenerico, poder_armazenado: PoderGenerico, paletas_coletadas: int):
        ##### ATRIBUTOS GERAIS #####
        self.__vida = 5
        self.__sprite = {"cinza": Sprite("rabisco_cinza"),
                         "laranja": Sprite("rabisco_laranja"),
                         "vermelho": Sprite("rabisco_vermelho"),
                         "roxo": Sprite("rabisco_roxo"),
                         "azul": Sprite("rabisco_azul"),
                         "verde": Sprite("rabisco_verde"),
                         "marrom": Sprite("rabisco_marrom")}
        self.__posicao_comeco = (x, y)
        self.__descanso_troca_poder = 0
        ##### ATRIBUTOS POSICIONAIS #####
        altura = 45
        largura = 45
        limite_vel = 5
        self.__aceleracao = 0

        ##### ATRIBUTOS COMPORTAMENTAIS #####
        self.__tipos_transparentes = [BolaFogo, Vitoria]
        self.__poder = poder_atual
        self.__poder_armazenado = poder_armazenado
        self.__recuperacao = 0
        self.__recarga = 0
        self.__invisivel = 0
        self.__moedas = 0
        self.escala_tempo = 1
        self.__paleta = paletas_coletadas
        self.__auxiliar = 0 #usado para fazer o jogador pular no instane que toca no castelo
        self.__congelado = False

        super().__init__(nome, x, y, altura, largura, limite_vel, "0", [], (128,128,128))
示例#27
0
 def __init__(self, sprites, path, name, x, y, w, h):
     self.spr = Sprite(sprites, x, y, file_to_pixbuf(path, name, w, h))
     self.spr.label = "1.0"
     self.spr.type = name
     self.name = name
     self.width = w
     self.textview = None
     self.textbuffer = None
     self.fixed = None
     self.textview_y_offset = 0
示例#28
0
文件: rastermap.py 项目: zesoup/gts2
 def __init__(self, size=10, pool=100):
     self.size = size  #realworld unit. 1 means 1pix for 1'unit'. 0.1 means 0.1'units' per pix
     self.pixpermap = (300, 300)
     self.pool = pool
     self._contents = dict()
     self._totalgets = 0
     self._requestqueue = dict()
     self._inflightqueue = []
     self.nasprite = Sprite(size=self.pixpermap, transparent=False)
     self.lock = Semaphore()
示例#29
0
    def __init__(self,
                 sprites,
                 path,
                 card_dim,
                 scale,
                 c,
                 x,
                 y,
                 shape='circle'):
        """ Load a card from a precomputed SVG. """
        self.images = []
        self.orientation = 0

        if shape == 'triangle':
            file = "%s/triangle-r0-%d.svg" % (path, c)
            self.increment = 60
        elif shape == 'hexagon':
            file = "%s/hexagon-r0-%d.svg" % (path, c)
            self.increment = 120
        else:
            file = "%s/card-%d.svg" % (path, c)
            self.increment = 90

        self.images.append(load_image(file, card_dim * scale,
                                      card_dim * scale))

        if shape == 'triangle':
            file = "%s/triangle-r60-%d.svg" % (path, c)
            self.images.append(
                load_image(file, card_dim * scale, card_dim * scale))
            file = "%s/triangle-r120-%d.svg" % (path, c)
            self.images.append(
                load_image(file, card_dim * scale, card_dim * scale))
            file = "%s/triangle-r180-%d.svg" % (path, c)
            self.images.append(
                load_image(file, card_dim * scale, card_dim * scale))
            file = "%s/triangle-r240-%d.svg" % (path, c)
            self.images.append(
                load_image(file, card_dim * scale, card_dim * scale))
            file = "%s/triangle-r300-%d.svg" % (path, c)
            self.images.append(
                load_image(file, card_dim * scale, card_dim * scale))
        elif shape == 'hexagon':
            file = "%s/hexagon-r120-%d.svg" % (path, c)
            self.images.append(
                load_image(file, card_dim * scale, card_dim * scale))
            file = "%s/hexagon-r240-%d.svg" % (path, c)
            self.images.append(
                load_image(file, card_dim * scale, card_dim * scale))
        else:
            for r in range(3):
                self.images.append(self.images[r].rotate_simple(90))

        # create sprite from svg file
        self.spr = Sprite(sprites, x, y, self.images[0])
示例#30
0
    def __init__(self, turtles, turtle_name, turtle_colors=None):
        ''' The turtle is not a block, just a sprite with an orientation '''
        self.spr = None
        self.label_block = None
        self._turtles = turtles
        self._shapes = []
        self._custom_shapes = False
        self._name = turtle_name
        self._hidden = False
        self._remote = False
        self._x = 0.0
        self._y = 0.0
        self._heading = 0.0
        self._half_width = 0
        self._half_height = 0
        self._drag_radius = None
        self._pen_shade = 50
        self._pen_color = 0
        self._pen_gray = 100
        if self._turtles.turtle_window.coord_scale == 1:
            self._pen_size = 5
        else:
            self._pen_size = 1
        self._pen_state = True
        self._pen_fill = False
        self._poly_points = []

        self._prep_shapes(turtle_name, self._turtles, turtle_colors)

        # Create a sprite for the turtle in interactive mode.
        if turtles.sprite_list is not None:
            self.spr = Sprite(self._turtles.sprite_list, 0, 0, self._shapes[0])

            self._calculate_sizes()

            # Choose a random angle from which to attach the turtle
            # label to be used when sharing.
            angle = uniform(0, pi * 4 / 3.0)  # 240 degrees
            width = self._shapes[0].get_width()
            radius = width * 0.67
            # Restrict the angle to the sides: 30-150; 210-330
            if angle > pi * 2 / 3.0:
                angle += pi / 2.0  # + 90
                self.label_xy = [
                    int(radius * sin(angle)),
                    int(radius * cos(angle) + width / 2.0)
                ]
            else:
                angle += pi / 6.0  # + 30
                self.label_xy = [
                    int(radius * sin(angle) + width / 2.0),
                    int(radius * cos(angle) + width / 2.0)
                ]

        self._turtles.add_to_dict(turtle_name, self)