*********************************************************** * * * JMines Version 1.0 * * * * (c) 1993 James Blake * * * *********************************************************** SHORT DESCRIPTION ----------------- JMines is yet another version of the game Minesweeper (or X-Mines). There are three levels of difficulty and a high-score list for each level of difficulty. It requires Workbench 2.0 and runs on the default public screen. The object of the game is to find all of the mines hidden in a field. Written entirely in Amiga E. DISTRIBUTION ------------ JMines is shareware. I request that if you keep this game on your hard- drive for more than 2 weeks, or if you play it frequently please register by sending $5 (Canadian or American) to me (Address located further in this document). For more complete distribution information see the file JMines.README. BACKGROUND ---------- JMines is a version of the often copied game that I first saw on Windows. At the time there were no versions for the Amiga so I decided I'd write one. Initially I tried to write a version in C, but I didn't get very far before I became fed up. Not having any good books on programming the Amiga. I then came across Amiga E and decided I liked the language very much, and wanted something to try and program. I figured that I should try and do a version of Mines to test the Language and to get used to programming the Amiga. It took about 6 hours to get a version of mines that I could play. It then took me about two months of intermittent work to add the features that I wanted, and figure out how to deal with gadgets, loading fonts, etc... Meanwhile a few different versions of Mines have shown up on the Amiga. None though had everything I wanted. What I wanted was one that: 1. Used the Workbench screen. 2. Had different levels of difficulty. 3. Had good hi-score lists. 4. Was stable on my machine. 5. Wouldn't permit cheating. My programming accomplished all of these except #5. HARDWARE/SOFTWARE REQUIREMENTS ------------------------------ This program requires an Amiga with WB2.04 or above. (If there is a demand I can release a WB1.3 version -- It has been written, I just have to switch the colours and add some error checking and stuff.) Although not strictly a requirement JMines works best on an interlace screen. If you are using a non-interlace screen it must be at least 212 pixels high, otherwise there is not enough room and program will quit and give you an error message. On a non-interlace screen you will only be able to play the tough level (not the tougher or toughest levels). INSTALLATION ------------ This game requires the font tyrvas/8 (included with this distribution.) It can be either copied to the fonts: directory or, by using the CLI command below you can test it without further cluttering up your fonts directory. ASSIGN FONTS: jmines/fonts ADD ^^^^^^^^^^^^ Replace this with the location of tyrvas.font. (The included script use font does this for you. There was no documentation with the copy of the tyrvas font that I got. I assume that it is in the public domain (Or at least freely distributable) It is a very useful font. I use it for my default system font. You should also note that this program creates a file in the S: directory called 'jmines.hiscore.' GETTING STARTED --------------- JMines may be started by using either the workbench or CLI. Simply double click on the JMines Icon. It will automatically start on the default public screen. Initially the panel screen appears. Different levels may be selected using the radio buttons. The gadgets should be self explanatory, the 'Continue gadget is only enabled if you stop in the middle of a game by selecting the close window gadget. HOW TO PLAY JMINES ------------------ Mines is a very simple game. Upon selecting new game a field will be drawn. The size of the field, as well as the number of mines depends upon the level selected. One plays by clicking with the Left Mouse Button (Select button) on a cell within the field. If that cell is a mine, well --BOOOOM!!!-- game over. If not though, it will tell you how many mines there are surrounding that cell (this includes the cells touching on the corners). If there are no mines around that cell, it will automatically select all of the surrounding cells. Cells can be flagged as containing a mine by clicking the Right Mouse Button (Menu button -- RMB). This is more for your convenience in marking the minefield than anything else. If you change your mind and decide that the cell does not contain a mine, another click with the RMB will change it back to a blank cell. You win when all of the cells not containing mines have been selected. The object is to do this as quick as possible. STRATEGY -------- Initially you will spend most of your time counting unselected cells surrounding a cell with a known number of mines surrounding it. As you become more proficient you will be able to do this quicker. Some specific strategy points. - Corners are good initial guesses as they have the least number of squares surrounding them (and therefore most likely to have 0 mines.) - If you cannot find any place that is definitely not a mine. Try using logic like "If this one is not a mine, then neither of these two can be a mine, but one of these two must be a mine, therefore ..." This is most effective near the edges. - Watch for recurring patters that logic can be applied to. You will then be able to know which ones are mines without having go through the trouble of applying the logic. One example is: X - Unselected number - number of mines (N is any number) 0NX 01X <- Is a mines. 02X <- Is not a mine. 01X <- Is a mine. 0NX HIGH-SCORES ----------- The hiscore list is set-up so that even I can get the number one position. Johanna, my official playtester, has the following high-scores (Without cheating): Tough: 0:18 Tougher: 0:45 Toughest: 2:48 KNOWN BUGS ---------- 1. Intermittent bug: Occasionally when window size is changed, the mine field is not completely drawn. This does not interfere with play. If you start a new game the minefield will be drawn correctly. 2. More serious, but much more rare: On occasion when I have gotten the number one position on the toughest level I have caused a software failure. I have been unable to duplicate this. (This bug seems to have been fixed, but I'm not quite sure what fixed it.) 3. Theoretical bug: The uncovering of cells with zero sourrounding cells is done with recursion. It is theoretically possible to overflow the stack if there is a _very_ large open space. This has only happened to me when I was bug squashing and had only 5 mines at the toughest level. FUTURE PLANS ------------ Some features that may be added to future versions of JMines. - Sound for explosion, and winning. - Ability to specify public screen with PUBSCREEN=<> - Ability to set JMines's window position. (Possibly have it open at the pointer position.) - Blank mine field window when not active. - Automatically clean or mark neighbours of a square. ACKNOWLEDGMENTS --------------- Wouter van Oortmerssen: for creating the best programming language ever, and for putting up with my dumb questions. Johanna: for playtesting JMines extensively (and for being so cute). whoever created the font tyrvas. REGISTRATION, BUG REPORTS, INCOMPATABILITY REPORTS, AND COMMENTS ---------------------------------------------------------------- If you have any problems with JMines on your set-up please e-mail (or paper mail if you must) me with the following information: - what machine are you using, - what public screen it was running on, - What version of JMines you have, - what version of Kickstart & WB you are using, and - anything else that seems relevant. I may be reached at: ua581@freenet.victoria.bc.ca (If this bounces try jblake@sirius.uvic.ca --before August 1993 James c/o jmantsin@sirius.uvic.ca --after September 1993) For registratrion and those who do not have access to e-mail my address is James Blake 1718 Midgard Avenue Victoria, B.C V8P 2Y5 Please send $5 (American or Canadian) Either cheque, money-order or cash. If you are outside of North America send me the lowest paper denomination, or some other token. -June 1993-