西庇阿有罗马步兵2.3万人,骑兵1500人;马西尼萨步兵6000人,骑兵4000人;可能还有努米底亚王公达卡马斯的600名骑兵。汉尼拔拥有步兵2.9万至3.6 扎马地域图万人,而西庇阿则在骑兵上占有优势(6000人)。汉尼拔还有80头战象,总体数量占优。骑兵方面因为马西尼萨被罗马人收买,领导强悍的努米底亚骑兵,汉尼拔处于绝对劣势。 战役的关键是汉尼拔是否能击败罗马和努米底亚的骑兵。先前巴格布拉德斯战役由于迦太基与汉尼拔未能及时援助西法克斯击败马西尼萨和西庇阿德联军,丧失了努米底亚的联盟和骑冠天下的努米底亚骑兵,埋下了扎马大决战的祸根。扎马会战开始如果汉尼拔先用1.5万马戈的雇佣兵进行肉搏战,拖出罗马重装步兵,然后用仅有的2000努米底亚骑兵对上罗马相对较弱的莱利乌斯骑兵,并象兵V字形集中在左翼,用象群左右包抄莱利乌斯,心理上震慑罗马,趁机包围击垮莱利乌斯的骑兵,右翼的2000迦太基骑兵一开始对上马西萨尼骑兵,马西萨尼见左翼溃败,军心一定会动摇,这时左翼的努米底亚骑兵可以支援右翼的迦太基骑兵,从而击退马西萨尼。此时1.5万马戈的雇佣兵应该支撑不住罗马步兵团的混合攻击,有溃败的迹象。关键时刻集中80头大象冲击战场中央混战在一起的步兵团,不分敌我一顿乱踩,虽然雇佣军会损失部分,罗马则更大。西庇阿预先留下的供大象逃跑的通道已经作废!这样可以扰乱已经混战在一起的步兵团,达到打乱罗马阵型的效果,罗马军团会有部分惧怕战象的士兵后退。这时迦太基军趁乱押上第二线的意大利老兵卫队(长矛兵)进行一字阵型正面攻击,罗马的铠甲步兵和主力步兵必然后退。汉尼拔最后再压上迦太基1.5万精锐老部队正面攻击,取得会战的胜利。前提是象兵能否顺利包围左翼的罗马骑兵,因为有很多大象都未经训练,这样要看象兵的驾驭能力了。还有作为诱饵的1.5万雇佣军能否尽可能长时间拖住并消耗罗马步兵团,西庇阿改组了罗马方阵,铠甲步兵和主力步兵距离缩小,相辅相成,作战能力强。