I'm not familiar with Pokemon universe :( Can somebody please explain Pokemon using Prolog?

There is a lot more than only what they explain in that article (I don't know of any full implementation of Pokemon in Prolog, although there is an implementation in TypeScript).

For example, you can also switch out (to activate a different pokemon) instead of attacking (switching has priority over attacking, so if you switch out then the opponent's attack will hit your newly active pokemon).

There are also many calculations involved, and it can be helpful to know how most of them work.

One of the neat things about Prolog is that queries can be run both forwards and backwards, so I believe this article should already have you covered ;)