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

Re: [pygame] Help - Events



that is interesting... I'll try...
--
Thiago Henrique Petruccelli


On Tue, Nov 17, 2009 at 3:32 PM, Russell Cumins <rcumins@xxxxxxxxxxxxxx> wrote:
What about checking if the tile of the same type has already been placed where the mouse is being clicked?

if selectedTile == placedTile:
    placedTile.remove()
elif selectedTile != placedTile:
    selectedTile.place()


2009/11/17 Thiago Petruccelli <thiagopetruccelli@xxxxxxxxx>

so, I kind of did that. But the var name is dragging instead of held. when dragging is true, it didnt run the code of removing. Else, it checks and removes. But what happens is that it first puts the tile, and then removes it, with the same click... I thought the mousebuttondown was still on the event queue so I tried to clear it, also without succes...
--
Thiago Henrique Petruccelli



On Tue, Nov 17, 2009 at 2:59 PM, Henrique Nakashima <henrique.nakashima@xxxxxxxxx> wrote:
Oh, I see. In this case, I would use a variable 'held' to indicate the
tile that is picked up. 'held' would be None if the no tile is held.

When a mouse down event is received, if there is a piece in 'held'
(held is not None), place it. If 'held' is None, then remove the tile
at the mouse location.

On Tue, Nov 17, 2009 at 14:53, Thiago Petruccelli
<thiagopetruccelli@xxxxxxxxx> wrote:
> Henrique, the pŕoblem is that when dragging, the mouse button down don't
> need to be held all the time; it's one click to pick the tile and another
> one to put it in the area.
>
> --
> Thiago Henrique Petruccelli
>
>
> On Tue, Nov 17, 2009 at 2:51 PM, Thiago Petruccelli
> <thiagopetruccelli@xxxxxxxxx> wrote:
>>
>> ok. :)
>>
>> this is a function of GameFloor class; the event handler. It puts the tile
>> in the floor if it's in a valid position:
>>
>> def handle_events(self, event):
>>         if event.type == MOUSEBUTTONDOWN:
>>             if self.dragging == True:
>>                 self.dragging = False
>>
>>                 #tests if tile is on a free position
>>                 if self.free_position(self.d_tile.rect):
>>                     self.tiles.append(self.d_tile)
>>                     return True ##tile was succesfully inserted
>>                 else:
>>                     #tile can't be inserted in this position
>>                     self.display.remove(self.d_tile)
>>                     return False #tile didn't fit
>>
>>         return True
>>
>> this is the code that remove the tile, in the main game class (GamePlay)
>> event handling method:
>>
>>                 if not self.floor.dragging: #floor is a GameFloor object
>>
>>                     #remove a tile
>>                     for i in range(len(self.piso.tiles)):
>>                         if self.piso.tiles[i].hit_test():
>>
>>                             self.piso.display.remove(self.piso.tiles[i])
>>                             self.piso.tiles.remove(self.piso.tiles[i])
>>                 else:
>>                     if self.floor.handle_events(event) == False:
>>
>>                         self.tmp_tile.qt = 1
>>                         self.loja.player.add_tile(self.tmp_tile) #gives
>> back to the player the tile that didn't fit
>> --
>> Thiago Henrique Petruccelli
>>
>>
>> On Tue, Nov 17, 2009 at 2:34 PM, Thiago Chaves <shundread@xxxxxxxxx>
>> wrote:
>>>
>>> Sure, share the code.
>>>
>>> -Thiago
>>>
>>> On Tue, Nov 17, 2009 at 6:26 PM, Thiago Petruccelli
>>> <thiagopetruccelli@xxxxxxxxx> wrote:
>>> > Hi!
>>> >
>>> > I am making a game in wich the player has to fill an area with tiles.
>>> > It's
>>> > an educational game. But I got a problem with pygame events... Actually
>>> > I
>>> > think it's a simple problem, but I don't know how to solve.
>>> >
>>> > There are two functionalities for the left click of the mouse: the
>>> > first is
>>> > to put a tile in the area, when dragging one tile, and the other is to
>>> > remove one tile of the area (when not dragging). The problem is that,
>>> > when I
>>> > put both codes together, the two things happen at the same time - it
>>> > puts
>>> > the tile and then removes it. I've tried to block the removal of the
>>> > tile
>>> > setting a variable, "placed", which blocks the action of removing the
>>> > tile
>>> > until the next event handling. But it didn't work.
>>> >
>>> > Can someone help me solve this?
>>> >
>>> > Thanks in advance,
>>> > --
>>> > Thiago Henrique Petruccelli
>>> >
>>
>
>