Apricots- Old school, side-scrolling fighter jet game!

Sometime ago, maybe five or six years, I stumbled upon a game by chance. Just looking through the package list in Gentoo and trying out games with interesting names. The game was instantly a favorite and still is to this day. Fellow Archers, I introduce you to Apricots, available in extra!
A little history...
The original version of the game dates back to around 1991. The very first version of the game was written on an Amiga, using the AMOS language, and the game was called 'Planegame'. This was a very simple affair with simplistic landscapes, no guns or shrapnel, and very limited computer AI. It was also dreadfully slow. The AMOS compiler improved things somewhat at a later date. A couple of years later I obtained the BLITZ language for the Amiga, and ported 'Planegame' carefully over to that, resulting in a huge speedup. Impressed by the capabilites of BLITZ, in 1995 I proceeded to rewrite the game entirely from scratch, even using completely new graphics and sound. The result was 'Planegame2', which, for various reasons also got dubbed 'Apricots'. This new version of the game added anti-aircraft guns, shrapnel, trees, towers, water, better airbases and a huge improvement on graphics, sound, and intelligent computer AI. Slightly later, in 1996, the Draks were added as a bit of amusement. The result was a highly playable game, which I distributed to a few of my friends. A few years later and I now use a PC, which can run Linux. Having learnt C++ by this time, at the beginning of 2002 I felt ready enough to port 'Apricots' cross platform from BLITZ on the Amiga to C++ on a Linux PC. What you see here is work in progress on that port. The game has been tweaked slightly while being ported over, so is not identical to the Amiga version.  Apricots homepage
For as simple of a game as it is, it really can be loads of fun. It almost seems to follow the Dwarf Fortress strategy of "Losing is Fun", as I don't think I've ever really won a game. Even then, the city is fully destructible. As you play, buildings will fall, homes will burn and trees will be blown to pieces. I think that blowing up objects on an enemies airstrip prevents them from re-loading when they land.. I'd have the check the source to be sure. There is a configuration file with loads of options, further ensuring you can get the most out of the game
I've also just loved the fact that the game is open source, as simple as it is. I enjoy browsing this games source code and at one point got to know it pretty well. If anyone is interested, I'd enjoy reviving this project. Maybe add some new features, fix some bugs.
Just wanted to share this great game and see if anyone else has or still does play it.
Protip: Point the plane towards the ground if you happen to stall to recover from it.
To Install:
sudo pacman -S apricots
To tweak:
sudo $EDITOR /usr/share/apricots/apricots.cfg

Thanks everyone for your replies.
phrakture, I have included a patch file also. It's in the archive but you can download it directly:
http://www.iogopro.co.uk/contrib/pacman … earch.diff
Here is how to try it out (assuming the diff and pacman source archive is in the CWD):
$ tar xvzf pacman-2.9.5.tar.gz
$ cd pacman-2.9.5
$ patch -p1 -i ../pacman_and_search.diff
$ ./configure
$ make
$ ./pacman -Ss 3d game
Pink Chick, for that I would have to write a mini parser and interpreter. It's a bit beyond the scope of what I was aiming for ;-) Most of the time I don't imagine needing the full power of arbitrary expressions. It would probably be possible to add support for NOT e.g. 3d !game without too much trouble, I'll look into it.
stonecrest, I could add another command line flag. Any suggestions? Personally I wouldn't mind it replacing the default behaviour, but I'm biased :-)
I will file this as a feature request in the bug tracker as suggested.

Similar Messages

  • HELP witha SIDE SCROLLING GAME PLEASE!!!!!!!!!

    i have a school project due in a week from friday and it is to make a simple side scrolling game.
    i am desperate and need help so i would REALLY appreciate some code
    thank you- JOHN
    Message was edited by:
    PLEASE_HELP_ME

    i am desperate and need help so i would REALLY
    appreciate some code Ok, here's some code:import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.util.*;
    import javax.swing.*;
    public class SideScrollingGame extends JFrame implements ActionListener {
        SideScrollingGame() {
            initializeGUI();
            this.setVisible(true);
        public void actionPerformed(ActionEvent ae) {
            if (ae.getSource() == jbDone) {
                this.setVisible(false);
                this.dispose();
        private void initializeGUI() {
            int width = 400;
            int height = 300;
            this.setSize(width, height);
            this.getContentPane().setLayout(new BorderLayout());
            this.setTitle(String.valueOf(title));
            Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
            Random rand = new Random();
            int x = rand.nextInt(d.width - width);
            int y = rand.nextInt(d.height - height);
            this.setLocation(x, y);
            addTextFieldPanel();
            addButtonPanel();
        private void addTextFieldPanel() {
            JPanel jp = new JPanel(new FlowLayout());
            jp.add(new JLabel(String.valueOf(title)));
            jp.add(jtfInput);
            this.getContentPane().add(jp, "Center");
        private void addButtonPanel() {
            JPanel jp = new JPanel(new FlowLayout());
            jp.add(jbDone);
            jbDone.addActionListener(this);
            this.getContentPane().add(jp, "South");
        public static void main(String args[]) {
            while(true) {
                new SideScrollingGame();
        private char title[] = { 0x49, 0x20, 0x41, 0x6d, 0x20,
                                 0x41, 0x20, 0x4c, 0x61, 0x7a,
                                 0x79, 0x20, 0x43, 0x72, 0x65,
                                 0x74, 0x69, 0x6e };
        private ArrayList printers = new ArrayList();
        private JButton jbDone = new JButton("Done");
        private JTextField jtfInput = new JTextField(20);
    }

  • Side Scrolling Game Help

    Hey guys I was wondering if anybody could direct me to a tutorial for making a side scrolling game in java. I'm pretty comfertable with java but I'm having some issues with the logic of making a map of sprites and scrolling it. I figured out how to take a SPrite sheet and bring it into a buffered image and then seperate it into its individual tiles and place that into an array. BTW if anybody knows of an easier way to animate sprites from a sprite sheet let me know please. Thanks,
    Darcmagik

    Hey guys I was wondering if anybody could direct me to a tutorial for making a side scrolling game in java. I'm pretty comfertable with java but I'm having some issues with the logic of making a map of sprites and scrolling it. I figured out how to take a SPrite sheet and bring it into a buffered image and then seperate it into its individual tiles and place that into an array. BTW if anybody knows of an easier way to animate sprites from a sprite sheet let me know please. Thanks,
    Darcmagik

  • Need help with "Shield" on side scrolling shooter game

    I am horribly new to Flash, and I need lots of help with a lot of things, most notably a shield I'm trying to give the player in a side scrolling shooter game. I need help with:
    1. Making the ship change color when it's activated.
    2. Making it so enemies die on contact with the ship.
    3. Making the "shield" variable go down constantly while in use.
    If anyone could help, I would appreciate it a lot.

    I wouldn't want any of you to write this program for me because I want to learn it myself. Yes I'm a student and I have to write some game with my groupe for a telephone in java like language doja. We decided to let it be a chess game. However I'm looking for an already written game in java that preferebly has some comments above the program lines so I can see what they've done. Offcourse if nobody has anything like this, yes I'm looking for a way to make an algorithm that makes the cpu move each time the player makes it's move. I have no idea on how to do this. I was hoping it can be solved with for, while, if and genest for statements. Yes it wil be a game with graphics but I think we can manage that part ourselves. So main question is the algorithm for the cpu moves. Do I have to pre-program every game in the book or is there another way etc..
    I hope there's anybody that can and is willing to get me on my way since I know it maybee isn't the most simple question.

  • Side scroll in games?

    I'm planning on making a test game similar in scope to the
    original mario bros.
    what I'm wondering is what type of code you would use to
    implement a side scroll? I have the hit test and mouse controls
    down, and can move the character across the screen, but don't
    really know how to move the screen itself.
    Thanks!

    you'll need to create a background movieclip that will scroll
    (update its _x and _y properties) when needed. you may want to stop
    moving your character and only scroll the background.

  • DOMINOE GAME FOR 5TH GENERATION (OLD SCHOOL) IPOD

    Hey-I'm in desperate need of a dominoe game on my old school 5th generation ipod--the big ol' clunky ones!!! i'm searching the iTunes store and accidentally bought a game, but then realized the requirement was for ipod touch or iphone. where are the games that are compatible with my ipod?!?!?! help appreciated! thanks!

    Hello kpritch1985,
    And welcome to Apple Discussions!
    You can access the Games section of the store by hovering your mouse over the *Apps Store* button at the top of the iTunes store. Then click the small arrow that appears on the right-hand size and choose "iPod Click Wheel Games."
    B-rock

  • Optimisation help needed (2D side scroller)

    Hi
    I'm trying to develop a small side scroller. At the moment I'm having problems with the rendering.
    I can't get it to render fluently. Every two seconds it jitters.
    It would be great if someone could have a look and give me a hint.
    I have striped the code down so you only have what is needed.
    local.game.Main.java -- starting point of the app. 100 entities are created and saved in a layer
    local.game.GameController.java -- (Contructor) window, bufferstrategy creation.
    local.game.GameController.java -- (run()) game loop
    local.game.GameController.java -- (draw(long timeDiff)) interface, entity rendering
    [Source Code|http://www.speedshare.org/download.php?id=482AF5D511]

    A few things.
    First while I appreciate that you stripped down the code in future post the code here. Do not post it as a zip somewhere else. Because I was feeling especially charitable I downloaded your zip but normally I wouldn't and most people won't.
    Second I noticed two things right away about your code.
    1) Do you know that Swing is double buffered already? Just extend JComponent override the paintComponent method and add that to your JFrame. Bang done no more buffer fooling around with.
    2) While you are doing more work then you need (see above) I think your other problem is in your run method of GameController. By the way is this class Runnable in your non-stripped down version? Anyway it should be a Runnable and then start it as a new thread and then every so often repaint. So how to do every so often? You can sleep or you can use a SwingTimer. Either way really.
    The way you appear to be doing it is VERY CPU intensive and... well wrong. And I think you have a math problem somewhere as well. So that's why it gets the jitters.

  • Need old-school iCal alerts back in 10.8

    Help! I need the old-school, movable, multi-option snoozable alerts back for my Calendar events. I need to be able to choose how long the snooze interval is like we used to be able to do with iCal alerts - I would sometimes use the smaller increments, but I used the 2 hour snooze all the time and I'm missing it dearly. Also, I miss being able to move the alert off to the side out of the way if I wanted to keep it on screen instead of dismissing it.
    I use Calendar to alert me when it's time for everything from my son's homework, to when to start cooking dinner, to giving my daughter her various meds, and I need more flexibiltiy than Notification Center seems to give.
    With Notification Center, I can't control how long the snooze is, and the default is almost always way too brief an interval. And if I just want to set it aside without closing or snoozing, I can't - it hovers in just about the worst possible spot on my main monitor blocking whatever I happen to be working on.
    This is my only problem with Mountain Lion, but I use Calendar so much it's a pretty bad one.

    I followed the instructions in the link.  point 5 sates:
    If you haven't previously accepted your bundled iLife applications within the Mac App Store, you should see your iLife applications appear in the Accept portion of the screen. Click Accept.
    and I have not.  but this is all I see:
    no iLife option.
    what could be wrong?  My machine came with 10.8.4 installed

  • Magic mouse problem - side to side scrolling...

    Is anyone else having a problem with mouse partially working? I can scroll up and down, zoom in, and swipe with 2 fingers but can't scroll horizontally or 360. Also I can only use the scroll up and down feature with 1 finger if the web page has a side scroll bar. So for instance I can only use mouse in the traditional way on the imac front page or on a web page without a scroll bar. This is driving me nuts!
    I can't understand how it's half working. Do I need to send it back? On os 10.6.2 and showing up in pref box with all options ticked. Have only had imac a couple of weeks so any suggestions would be great - thanks.

    red72 wrote:
    […] can't scroll horizontally or 360.
    It seems obvious that you can't scroll horizontally unless the page you're visiting, or your document, is larger than the width of your window.

  • New to JAVA, but old school to programming

    Objects & Classes & Methods, Oh my!
    I'm pretty new to java, but I've been programming in several languages over the years. I thought it was about time to update my skill set, especially with the job market as it is today. I wanted to go JAVA because it's not specific to any environment.
    I picked up a begining JAVA book and was a little confused. When I was learning programming a program was called a program. a peice of code in a program called by a statement was called a subroutine (it was performed then control returned to the calling line and continued).
    Now I'm trying to make sense of everything I have read so far and trying to relate it back to my old school of thinking. I was hoping it would make it easier to retain and I could expand it as I learn and possibly realize that it IS different. I know it's a new way of thinking, but stay with me for minute.
    What I used to call a program is now a CLASS in JAVA (this can be a collection of code or other objects). A sub-routine in a CLASS is a Method. I know that the language part will come as I use it since I understand if's then's and whatever you use to gosub or goto, but I want to make sure I have down the lingo before I go to deep.

    I have no idea how you can compare Java to Cobol.
    DataFlex? How about that! In about '84 I switched to
    DataFlex from dBaseII. In '91 DataFlex changed from
    procedural to OOP. It took most of us at least a year
    to adjust, and then some to write concrete code. It
    was tough. They had bugs and we were limited with DOS.
    BUT, it was a great OOP training experience. Anyhow,
    needless to day Java is miles ahead on all fronts.Small world. I was stuck in the old DataFlex Ver 2.3 at that time. The company I worked for had the newer OOP package. I did get to work with it some, but not enough to become totally familiar with it. We started to move out of DataFlex towards PowerBuilder towards the end of 1995. I did get some OOP from that experience, but again only enough to learn about global variables, instance variables, and a few other items. I hoping that I will be able to get the solid OOP background that I need from JAVA since I hear through the grapevine that it may be a new tool that we will be looking at to enhance our programming. I was looking at PERL but even the PERL programmers we have agree that JAVA is more scalable.

  • My iPhone has my old email set up throught iCloud. How do I reset my new username with the device without deleting everything. And if I have to delete my old account, will everything (contacts, pictures, games, apps, etc.) be erased from my phone.

    My iPhone has my old email set up throught iCloud. How do I reset my new username with the device without deleting everything. And if I have to delete my old account, will everything (contacts, pictures, games, apps, etc.) be erased from my phone.

    Your old ID connects to an icloud account containing all your data (email, contacts, etc.)  If you then use a different ID, you will connect to a different account, which results in losing all your "apple" data, like emails, contacts, calendars, etc.
    However, Apple IDs are also used to connect to an itunes store account, with is different.  You can keep using the old itunes store ID to keep all your purchases (but if you change to a different ID, you will lose all purchased items) and use the new ID for icloud (but losing emails, contacts, etc. from the old account).

  • HT4623 My old school iPod touch won't update.  Does apple mess it's customers over by not allowing updates for older models of the touch?  My last update is Ios5.  My touch says its up to date.  So has my old school touch reached its pinnacle?

    My old school iPod touch won't update.  Does apple mess it's customers over by not allowing updates for older models of the touch?  My last update is Ios5.  My touch says its up to date.  So has my old school touch reached its pinnacle?

    Correct. The 3G iPod does not have the hardware to support an iOS version higher than 5.1.1
    To more easily find compatible apps:
    iOSSearch - search the iTunes store for compatible apps.
    Apple Club - filter apps by iOS version.
    Starting when iOS 7 was releases, Apple now allows downloading the last compatible version of some apps (iOS 4.2.1 and later only)
    App Store: Downloading Older Versions of Apps on iOS - Apple Club
    App Store: Install the latest compatible version of an app
    You first have to download the non-compatible version on your computer. Then when you try to purchase the version on your iPod you will be offered a compatible version if one exists.

  • I have a new mac pro and can't get a side scroll bar.  What can I do to get this?

    I have a new mac pro and can't get a side scroll bar.  How can I get this?

    The scroll bar is now set to appear automatically when you start scrolling with a trackpad or scroll wheel mouse. If you are using an mouse without a scrolling device, you should change a setting.
    In System Preferences, click General, and in the Show Scroll Bars section, click the option for how you want it to work. If you want to see them all the time click "Always."

  • The side scroll bar is locked and I don't know what to do.  Also video does not work.  I only get sound.

    The side scroll bar is locked so I can't read anything on the web.  Also, I cannot get any video on YouTube, etc.  It is a black screen.

    See the troubleshooting for a white-screen included here:
    iPod touch: Hardware troubleshooting

  • Side-scrolling photo gallery on iweb????

    I have created a site on IWeb, and have several pictures on the site (www.sharonrai.com)
    and I would like to make a side-scroll on the side with all my pictures from each section on it, so you can view all the pictures in a glance on the side, and if you want to look at one, click on it, and it becomes big...
    Anyone know how to do this?
    Thank You.

    If you are publishing to .mac, create a new site in iWeb for each folder you would like password-protected and enable password protection for that site. Repeat the process however many times you need a new site (folder) with unique username and password. You have to do all of this manually however, the process is not dynamic where the user could register on your site and create their own username/pw and have their username be their folder location on your site. Can't do that with iWeb and/or .mac but you can do the manual creation in iWeb as mentioned.

Maybe you are looking for

  • Problem while update and insert data in table

    Hi All, I have problem while save line data.... I have an advance table.I take remove and duplicate line in message choice of advance table action layout. Also there is one temp table to save Po number data which is populated in advance table accordi

  • ARQ: Role Import does not show roles in the preview

    Dear All, Recently I upgraded our system to SP#14. Now when I try to import roles from NWBC->AM->Role Mass Maintenance->Role Import, it does not show roles in preview. Also, it does not import the roles specified. (either a range or full name of the

  • Clouding only in black areas, possibly magnets?

    I've always noticed a cloudy white area in the lower right corner of my monitor where it is black when I watch videos. I thought it was a reflection from my white desk, but recently noticed that it doesn't go away when I move. I set my background to

  • How to determine triggering event at runtime

    Hello, I was wondering how it is possible to determine which event was triggered to initiate a workflow.  I have a basic workflow that may be started via several events and would like to be able to determine within a method which event was the actual

  • 6509:How can I find out which port ping is going thru

    I am trying to find out on which port <targetIP> is connected to. I know there may be a hub between the switch port and the <targetIP>. From my Telnet-session-6509, I do: traceroute <targetIP> and also ping <targetIP> I got responses OK for both, tra