Hannibal, 247-182 B.C.