Projects / Pac Defence

Pac Defence

Pac Defence is a tower defence game where the aim is to destroy the evil pacs before they can reach their goal off the side of the screen. To stop them you can choose from 17 towers to build, or enlist the pac's greatest foe, the ghost. Towers cost money, so you cannot build as many as you want, and thus you must carefully choose which tower you want to build and where you want to build it. You gain money by damaging and destroying the pacs, and at the end of each level. Additionally, towers gain level ups after inflicting certain amounts of pain on the pacs.

Operating Systems

RSS Recent releases

  •  04 Jan 2010 10:34

Release Notes: A few minor tweaks and bugfixes were made.

  •  07 Sep 2009 15:23

Release Notes: A high scores table was added (which is not in the applet version). Some of the towers were tweaked. The drawing routine was simplified somewhat, and it now drops frames if the drawing starts to lag. A few other minor bugs were fixed.

  •  11 Aug 2009 13:02

Release Notes: A few towers were balanced a little better. A few other minor changes and bugfixes were made.

RSS Recent comments

10 Sep 2009 02:13 Avatar slogsweep

Yeah, I found that problem too, the day after uploading, so changed like 2 lines of code to fix it and uploaded the new version, without making a new release because it was so trivial. So it should be fixed now.

Thanks for letting me know of the bug though.

09 Sep 2009 15:47 galukalock Thumbs up


quite an addictive game. Good work.

I get a partial crash on (apparently) any map.


Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Radius cannot be negative
at logic.Circle.setRadius(Unknown Source)
at logic.Circle.(Unknown Source)
at sprites.AbstractSprite.draw(Unknown Source)
at gui.GameMapPanel.drawUpdate(Unknown Source)
at gui.GameMapPanel.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(
at javax.swing.JComponent.paintToOffscreen(
at javax.swing.BufferStrategyPaintManager.paint(
at javax.swing.RepaintManager.paint(
at javax.swing.JComponent._paintImmediately(
at javax.swing.JComponent.paintImmediately(
at javax.swing.RepaintManager.paintDirtyRegions(
at javax.swing.RepaintManager.paintDirtyRegions(
at javax.swing.RepaintManager.prePaintDirtyRegions(
at javax.swing.RepaintManager.access$700(
at javax.swing.RepaintManager$
at java.awt.event.InvocationEvent.dispatch(
at java.awt.EventQueue.dispatchEvent(
at java.awt.EventDispatchThread.pumpOneEventForFilters(
at java.awt.EventDispatchThread.pumpEventsForFilter(
at java.awt.EventDispatchThread.pumpEventsForHierarchy(
at java.awt.EventDispatchThread.pumpEvents(
at java.awt.EventDispatchThread.pumpEvents(

Hopefully it's not too hard to fix.

My java packages are as follows:

java-1.5.0-gcj- (compatibility package for other programs)



Project Spotlight


A C implementation of NTRUEncrypt.


Project Spotlight


A JSON+C minifier.