There is a lack of generally applicable methods for reducing energy consumption while ensuring good quality of service in distributed computational grids. We study the energy-aware task allocation problem for assigning a set of tasks onto the machines in a grid environment where the conflicting goals of ensuring quality of service and reducing energy consumption makes the machines compete with each other. We propose bidding mechanisms in which the machines have to win in order to maintain a minimum fitness value and thus remain relevant to the system and hence must try their best to meet the goals. The grid manager keeps only those machines that win and eliminate from the pool the ones that are unfit. The proposed algorithm encompasses bidding strategies, fitness calculations, penalties, exit as well as resurrection mechanisms to support a non-cooperative game in which all machines compete to win tasks. The concept of fitness is fundamental to our algorithm, defining a machine's ability to remain in the system. When heterogeneous machines are part of a shared computing resource pool governed by a grid economy, the proposed approach fits very well for achieving conflicting goals. By simulating several machines with diverse architectures and task sets with varying requirements, we demonstrate the effectiveness of the proposed scheme and show that it generates short task makespans and reduced energy consumption. The algorithm is extremely fast, takes highly detailed machine and task characteristics into consideration, and outperforms the Earliest Deadline First Scheme in every aspect.