Space Battle Arena

A Programming Game in Java for AP CS Students.

Download Client Jar Java Docs Download Server (Windows) View on GitHub

Space Battle Arena

Space Battle Arena is a ‘Programming Game‘ where you must write code (in Java) to autonomously control a space ship to accomplish specified objectives.

This has been a final project used in an Advanced Placement High School Computer Science course since 2012. Students have been enthusiastic, excited, challenged, and engaged with learning to control a ship in a physical environment and comparing strategies against their fellow students in a fun competition.

The question of why ‘Space Battle’ over an existing platform (like Robocode) was brought up during our Reach for the Stars talk. The answer is that most programming games are built around a specific objective. This means that while there may be varying strategies, eventually the problem can be solved and solutions available.

In addition, it means the challenge is fixed and always the same. For an educational context specifically, where this is most students first exposure to a 'third-party' library. We wanted a system which could ease them into new concepts that build on what they had learned throughout the course of the year.

Finally, allowing the system to be extensible and configurable, means that challenges and difficulty can be directly geared to a specific group of students abilities which can fluctuate from class to class. Space Battle was our test bed and has proved successful with the multiple different challenges we have run over the past few years.

Space Battle Arena is licensed under the GPLv2. Gson is licensed under the Apache license and provided for convenience alongside the release.

Student Environment

It is expected that students have completed a full year of Java programming in high school or just over a semester of programming at the college level.

We use jGRASP as our IDE of choice when working with High School students, but any Java IDE can be used that is capable of adding a jar to a classpath and executing a class from within the jar as the main class.