Inspiration
While in college, I am a cadet in Air Force ROTC. ROTC has a game of complicated dodgeball known as Icarus. No one truthfully knows how to play Icarus due to confusing rules, complex field set-up, and conflicting sources (not many people use the official rulebook). With this in mind, I set out to get as far as I can in creating a top-down Icarus simulator.
What it does
The simulator starts with a partially-colored field to show objects with "inactive" status. On start-up, colored "active" objects cover the "inactive" areas to signify the field is ready.
Each active area has a cone. When a cone is clicked on, it becomes transparent to show it is down. Any transparent object reveals the inactive background. An area will deactivate when all the cones touching it are no longer active themselves.
Taking down critical cones and areas adds to a score counter at the top of the respective teams.
How I built it
Project Icarus is entirely created in Greenfoot: an integrated development environment using Java or Stride for developing graphical applications. While Greenfoot supports most Java libraries, Greenfoot has additional built-in libraries at the developer's disposal.
Libraries utilized include...
- Greenfoot's World, Actor, and GreenfootImage libraries
- Java's util.List and util.Iterator libraries
Links to my Greenfoot online profile and view-only Google folder is included!
Challenges I ran into
I originally wanted to draw shapes on top of an image background; however, layering became complicated. I ended up adding objects, or actors, on top of the background.
Accomplishments that I am proud of
The UI looks appealing. The user can manually fix a cone which should not have been knocked down by clicking on it. "Reviving" a cone also restores the area it was responsible for.
What I learned
I have only used Greenfoot in class, so it was cool to play around with drawing shapes and figure out how images and shapes interacted.
Likewise, I knew Greenfoot supported Java functions, so I enjoyed finding ways to implement my vision. For example, using lists and iterators.
What's next for Icarus Simulator
Full functionality is a long way away which is ok. My goal was to get as far as I can. Ideally, a random number generator would determine individual teammate running speeds, hit rates (remember Icarus is 'complicated dodgeball'), and opponent AI.
Additionally, the 50+ actors make the program very heavy and, thus, is vulnerable to lagging. Optimizing the code to use minimal "new" keywords and variables is preferred.
Thumbnail: Take from Shutterstock. Not created by me. Use the greenfoot.org link, go to Icarus Simulator, and download as a zip file!
Built With
- greenfoot
- java
Log in or sign up for Devpost to join the conversation.