In ad hoc networks, each node is required to forward packets for others. However, based on energy consumption considerations, a node may reject other nodes' forwarding requests to save the limited battery power for its own data transmission. Therefore, a lot of incentive schemes have been proposed to promote the cooperation of the nodes. Most of the existing research work assumes that all the nodes in the network should provide full cooperation in order to optimize the transmission efficiency. However, this assumption is too strict because the activities of the nodes in ad hoc networks have some inherent uncertainty. In this paper, we propose a power control mechanism in ad hoc networks under a dynamic repeated game-theoretic framework. A notion of nodes' evaluation levels for the future experiences is defined to take account of the non-cooperation due to the inherent uncertainty in the ad hoc network nodes' activities. Our scheme does not require all the nodes in the ad hoc network to absolutely cooperate with each other. The simulation results show that, compared with the existing schemes, our power control mechanism considering non-cooperative packet forwarding improves the average transmission efficiency by ∼25% and has good scalability.