Faits : A. Par jugement du 30 janvier 2018, le Juge de police de l'arrondissement de la Sarine a condamné X._, pour lésions corporelles simples par négligence, à 40 heures de travail d'intérêt général, avec sursis durant deux ans, a admis le principe de la responsabilité civile du prénommé et a pris acte des réserves civiles de A._. B. Par arrêt du 19 novembre 2018, la Cour d'appel pénal du Tribunal cantonal du canton de Fribourg a rejeté l'appel de X._ ainsi que l'appel joint formé par le ministère public contre ce jugement et a confirmé celui-ci. La cour cantonale a retenu les faits suivants. Le 7 mai 2016, un match de football a opposé le FC B._ au SC C._ sur le terrain de football du D._, à E._. A la 15e minute de jeu, X._ a taclé A._ à la hauteur de la cheville droite. Ce dernier a souffert d'une fracture bi-malléolaire de la cheville droite. L'arbitre a infligé un carton jaune à X._ pour "jeu dur". Le prénommé a en outre reçu un second carton jaune pour "jeu dur" à la 63e minute, ce qui a conduit à son exclusion du terrain. C. X._ forme un recours en matière pénale au Tribunal fédéral contre l'arrêt du 19 novembre 2018, en concluant, avec suite de frais et dépens, principalement à sa réforme en ce sens qu'il est acquitté, que le principe de sa responsabilité civile est rejeté, subsidiairement que A._ est renvoyé devant le juge civil pour faire valoir ses conclusions civiles. Subsidiairement, il conclut à son annulation et au renvoi de la cause à l'autorité précédente pour nouvelle décision.