Goats And Tigers John Hurley, MS Faculty Advisor: Russell Abbott Graduate Project - Spring, 2012 Department of Computer Science California State University, Los Angeles Have students check that the logo is the appropriate one to use. The Game Goats and Tigers is a South Asian game which features an asymmetric contest for board position. Twenty goats come out to forage on a 5 X 5 grid of grazing positions, while attempting to avoid four tigers which lurk in the pasture. Tigers attack goats by pouncing on them, landing on the opposite side, and devouring them, in a move similar to a checkers capture. A tiger cannot move against a goat if the opposite square is occupied or if he would land out of bounds. Tigers may slide one square at any turn, while goats may only move around the pasture after the full herd has been placed on the board. Accordingly, goats must be carefully placed into defensible positions in the early part of the game. Tigers retires victorious if his pieces eat five goats; Goats wins if he starves the tigers by immobilizing them. Goats must construct a formation that is at least two pieces deep wherever it is exposed to predation, and must develop one or more protected empty spaces behind its lines. Tigers attempts to develop complex double attacks that force Goats to sacrifice pieces. The Application The application allows a user to play both Tigers and Goats, to play one side against an AI agent, or to play against another user. The web application may be played in any JavaScript-enabled browser, so opposing players may play on different platforms, including mobile devices as well as PCs. The board, corral, and message panes are written using the Google Web Toolkit, which cross-compiles Java code into JavaScript. The JavaScript code is placed inside views created with ASP.NET MVC 3 using the Razr view engine. The CRUD-related controls, login links, and background graphics are in the ASP.NET views. Server-side code is in C# and includes the AI agent, which uses the minimax with alpha-beta pruning algorithm. Remote Procedure Calls to obtain automatic player moves use server-side controllers with special-purpose methods that return objects in JavaScript Object Notation, rather than MVC views. The infrastructure for user logins, the CRUD functions, and database interaction are lightly customized versions of functionality generated by ASP.NET and its Object-Relational Mapping tool, the ADO.NET Entity Framework.