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

Recent releases

  •  04 Jan 2010 05:44

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

    •  07 Sep 2009 10:41

      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 11:02

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

        Recent comments

        10 Sep 2009 02:13 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


        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.<init>(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 Fluent OpenStack client API for Java.


        Project Spotlight

        TurnKey TWiki Appliance

        A TWiki appliance that is easy to use and lightweight.