Machine learning of game strategies has often depended on {\em competitive} methods that continually develop new strategies capable of defeating previous ones. We use a very inclusive definition of {\em game} and consider a framework within which a {\em competitive algorithm} makes repeated use of a {\em strategy learning} component that can learn strategies which defeat a given set of opponents. We describe game learning in terms of sets $\cal{H}$ and $\cal{X}$ of first and second player strategies, and connect the model with more familiar models of concept learning. We show the importance of the ideas of teaching set \cite{teaching} and specification number \cite{specification} $k$ in this new context. The performance of several competitive algorithms is investigated, using both worst-case and randomized strategy learning algorithms. Our central result (Theorem~\ref{th:main}) is a competitive algorithm that solves games in a total number of strategies polynomial in $\lg(|{\cal H}|)$, $\lg(|{\cal X}|)$, and $k$. Its use is demonstrated, including an application in concept learning with a new kind of counterexample oracle. We conclude with a complexity analysis of game learning, and list a number of new questions arising from this work.