Quote
And another question, is it bad solution if I write all my logic in visual terms. I mean is my (M)(V)(C) based program will look like (MV)(C) i.d. logic and view will be one unit.
This question I don't quite understand (I'm not sure what 'i.d.' means). If you mean combining logic with visuals/cosmetics, it's not bad per se, but I think there can be advantages to keeping them separate or at least conceptualizing them independently. YMMV though.
Quote
I have separated my game logic from the view. It woks without any animations and visual effects. Now the question is how can I properly bind my view(animation, effects etc.) with my logic. When I find match3 cells on the board and delete them in logic, there can be several operation that logic does instantly (deletes match3, explodes something, generates another cool element). How can I simulate this actions in my view?
I don't think there's any one right answer to this question. There are lots of ways you could do it. But I can offer some ideas.
I understand (I think) the kind of thing you're talking about. A polished 'match 3' game (or similar game) will often have multiple events in sequence that result from a single move. For example, any matches animate and disappear, other pieces animate and slide into place, 'scoring' effects are generated, bonuses are awarded, and so on. One move can result in multiple events occurring in sequence, each with a logical component and a visual/cosmetic component.
One thought is that you don't necessarily need to perform multiple logic steps in sequence and then perform all the visual corollaries in sequence. You can instead interleave them, e.g.:
logic
animated visual
logic
animated visual
logic
animated visual
Instead of:
logic
logic
logic
animated visual
animated visual
animated visual
It can be done either way, but interleaving might be easier.
As for how to implement the visuals/animations specifically, again, there are various ways to do it. I think in Unity coroutines are often used for this sort of thing. Personally I've always found it easier and more intuitive just to handle everything in the 'main loop', as it were, but that's up to you of course.
Other ideas that might be helpful are an event queue, and/or the 'run and return successor' idiom. I could say more on that, but this is probably long enough as is. I can probably elaborate further if it'd be helpful though.
Lastly, I don't want to throw you off in any way. If what I'm suggesting doesn't seem intuitive, then obviously you should do whatever works best for you. At the very least though, I think thinking through the logic independently of cosmetic effects can be helpful in figuring out how things can or should be implemented.