For the final project my group choose to create a football game. The football game can't be done in an _applet_ form. The game has to simulate traffic (e.g. there are constraints on the motion of the _object_s and The idea is not only to avoid collisions, but also to adapt one motion to another. I'm wondering if someone has created a basic football game or if someone can give me a site where to find some good information on this subject. We are wanting the football game to be as close as possible to a real football game. Where the user would be able to control the p_layer_ that has the football, but I think we are going to start out only being able to control the QB. And before each play, the user will use radio buttons to choose a Run (left or right) play or Pass(left or right) play. Thanks for any help you can give me!! I assume that you are talking about American football (not soccer ). American football is harder to program than soccer, since there are more types of p_layer_s, and the rules are more complex. Just how ambitious is this project (I'm assuming it is a school project, not a software company group project)? Making a game as close as possible to a real football game is ambiguous, since even the most advanced football computer games are not as close as possible . Hopefully you have completed, or are working, on your software requirements documents and work plan. A project like this can easily take much more time than originally anticipated. What are your constraints (time, manpower, equipment, etc.)? Unless you really need to do an advanced game, I would suggest (at most) top-view, non-scrolling, 2D graphics. Up front, create a very simple graphical representation of the p_layer_s on the field ( X's and O's ). This will allow you to develop and test your game while other parts of your team are working on the fancy graphics . I would suggest getting a game working with simple graphics first. Then, if you have time, work on improving the graphics. I've seen projects that failed because the team spent too much time drawing great artwork up front and never got a functional game engine working. Sometimes the great artwork had to be completely redone, after the engine was completed. For p_layer_ intelligence , consider using a robot approach. Make each p_layer_ a finite state machine with their own program , which interact with other teammates by sending signals back and forth. Handle each p_layer_ with a separate Thread, each Thread running code appropriate to the type of p_layer_. You can assign different types of p_layer_s to different team members so that one person doesn't have to create all of the robots, but make sure the design and the code for the robot interpreter and robot-to-robot communications is worked out before you start designing the individual robots. The user controlled quarterback, or current ball carrier, is probably going to be the most complex robot. Some code can be shared (e.g., any p_layer_ can make an interception and run for a touchdown). Make sure you design both offensive and defensive robots. Design each robot from the point of view of the p_layer_. Decide if your game will be more strategic or tactical in nature. Decide if you are going to use a play book, or if you are going to allow the user to position every p_layer_ individually. Examine a couple of non-computerized football games (e.g., board games), especially ones that use a randomization element (e.g., dice) and tables to determine the outcome of plays. If you want a simple way to avoid collisions and to determine p_layer_ tactics, you might consider using a gradient map. Gradient maps can be used to tell each p_layer_ which direction to move. _object_s and field locations in the game are assigned positive and negative values (positive means head towards , negative means avoid ). A merit value is created _base_d on the distance between each p_layer_ and other _object_s. The merit value falls off inversely with the distance (or square of the distance). If you were to make a 3D surface plot of these merit values for each possible new location. In general, the p_layer_'s goal would be to move to uphill (see the picture below). One can use this method to calculate how much benefit would be obtained if the p_layer_ follows a straight line for a certain distance (assuming all other p_layer_s hold still). The straight line distance could be the distance the p_layer_ can move in one animation _frame_. Then, one can check the cardinal directions (N, NW, NE, W, E, SW, SE, S) and determine which direction the p_layer_ should move. One can have the p_layer_ select the best move by looking several animation _frame_s in advance by using alpha-beta mini-max search on the move tree. I sometimes think of the gradient map techniques as a physics simulation (think of charged particles being shot through an electrostatic field). Carl G. (View with a fixed-width font); . :'': : ':. .' ':. Pass Interception : :. Point .. .: '. ::. ::' ':. : :..:' ':. : :' ':. :: ': :.. :: :. ': .: ':. ::' .'.: ::. .:: .' : : : .' .: : : .' :' :' : .'' : : .' Greatest uphill :' .: .' Direction : .: .' .::: ... .:::' .' .... :: :''.

_layer_ :.' .' .:' ' : : :..: .' .' P_layer_ '::' :' .' .' :' ..... .: .' :' : ': ....:' .' :' :. :'P_layer_ :' : .' ' '''' : ' '' X .:: : Current .' ':: .. Location .' :: :'. .:: :: : '. .':: :: : : .' :: :: :: '. .' :: :: : '. .' :: :: : : .: :: :: '. '. .':: :' :' '. '. .' :: : : : :: : '. .' :: '. '. .: :: '. : .:: '' : '. : : : '. .' :' '. :: .: '. : : : : :' ' ' '