MINESWEEP v1.2 ========= --------------------------------------------------- | Author: Jari Rytilahti | | Original idea: ? | | Type of calculator: CASIO fx-9700GE (or similar)| --------------------------------------------------- ----------------------------------------------------------------------------- 1. System requirments 2. A description of the program 3. How to play... 3a. Setting up 3b. How to move 3c. In the square 3d. The RATING 3e. How many mines 4. How to get in contact with me 5. Signtable 6. Source ----------------------------------------------------------------------------- 1. System requirments: --------------------- - a CASIO fx-9700GE (or similar CASIO calculator) - 4kB free mem (2kB for code + 2kB during game) - WINDOWS '95 (Not!) ("Ve have vays to make you use Vindovs", Adolf Gates) -> Program must be written into the FILE EDITOR! <- 2. A description of the program ------------------------------- This is the Casio version of the well known Windows game WINMINE. It isn't as fancy as the real thing and it doesn't have all the features, but it's still a nice game. You will not be able to mark mines or suspicious squares. The program will not automatically clear open areas. But it will tell you if you uncovered a mine (KABOOOOM!!). 3. How to play... ----------------- 3a. Setting up When you start the game you will be asked to choose a level of difficulty. There are five(5) levels: # NAME | MAXRATING | NOTE --------------------------------------------------------------- 1. BEGINNER, EH? | 100 | (Very easy) 2. EXPERIENCED | 200 | 3. EXPERT | 300 | (Difficult) 4. LIKES TO PLAY IT ROUGH... | 400 | (Gets really tough) 5. SUICIDAL | 500 | (Almost impossible) (Actually you can insert any number between 0 and 5. Try difficulty level PI, 4.25 or 1.14153235345245425. It will have an effect on the level of difficulty and the RATING though.) After you have chosen the level the game will set up the gamefield and after a while the cursor will appear somewhere in the middle. The gamefield will have 20x10 squares. You are ready to play... 3b. How to move To move the cursor to the desired square, you must use the arrowkeys. You must use the arrowkeys and no other keys or gadgets. (Drivers for Mouse, Joystick or VR gear not currently available) :) When you have reached the desired square, press EXE. You will now know if your move was correct... 3c. In the square After a few anxious moments, if you're lucky, a number will appear in the square. If you are even luckier the square will turn completely black. The number shows how many mines there are in the surrounding squares. For example, if the number is 2, then there are 2 mines in the surrounding squares. If the number is 5, then there 5 mines and so on... If the square becomes black then there are no mines in the surrounding squares. By opening many squares you will be able to calculate where the mines are. If a box appeares in the square followed by the text "KOBOOOOOM", well then all I can say is: "My deepest condolenses to your family...". You've hit a mine! The game is over and now you will be shown where all the mines were and afterwards you will be given your score. (TIP: Put the cursor on the bottom row or in one of the corners in the SQUARE to cause minimal interfearence with the numbers. The cursor will leave a dot when you press EXE. Very innoying.) 3d. The RATING The RATING is calculated with a very simple formula: R = (difficulty) * (% cleared) So if someone cleares all on level 5 he will get 500p. 50% on level 3 will give 150p. Get it? 3e. How many mines? Actually you can't ever know how many mines there are hidden. The process of placing out the mines is completely random. It is regulated by your difficulty level which determins the possibility of a mine being in a square. So if you are extremely unlucky, you can have maybe 90% mines in level 0.5. Or in the other hand if you are *very* lucky, you can have 1% mines in level 5. Usually it will stay within reasonable limits. 4. How to get in contact with me -------------------------------- If you have any comments on the game or if you have made it better or if you have some other programs to the CASIO calculator, send a message to me by email. jari.rytilahti@swipnet.se http://home.swipnet.se/snafu/ ============================================================================= We want ... ... ... ... ... ... ... ... ... ... ... ... A SHRUBBERY!! ============================================================================= 5. Signtable ------------ > :greater than >= :greater or equal than < :less than <= :less or equal than => :if statement -> :assign * :multiply / :divide _| :fraction. _ :That little black triangle {} :Comment. Just to make it easier to understand ----------------------------------------------------------------------------- 6. Source --------- 001: Defm 231 {reserve_mem} 002: Cls : Mcl 003: Range 1,127,0,1,63,0 {Screen_settings} 004: Lbl 9 005: "JMR-95" : " " {Main_Menu} 006: " MINESWEEP v1.2" 007: " =========" : " " : " " 008: "LEVEL (1-5)"? -> L : L > 5 => Goto 9 009: L <= 1 => "BEGINNER,EH?" _ 010: L > 1 => L <= 2 => "EXPERIENCED" _ 011: L > 2 => L <= 3 => "EXPERT" _ 012: L > 3 => L <= 4 => "LIKES TO PLAY IT ROUGH..." _ 013: L > 4 => L <= 5 => "SUICIDAL" _ 014: (L _| 20) -> L 015: 1 -> A {Draw_grid} 016: Lbl A : Plot A,1 : Plot A,58 : Line 017: A + 6 -> A : A < 122 => Goto A 018: 8 -> A 019: Lbl B : Plot 1,A : Plot 121,A : Line 020: A + 5 -> A : A <= 58 => Goto B 021: 0 -> Z : 0 -> T {Minelaying} 022: Lbl C 023: Ran# -> R 024: R < L => 1 -> A[30+Z] 025: R >= L => 0 -> A[30+Z] 026: R >= L => Isz T 027: Isz Z : Z < 200 => Goto C 028: 64 -> R : 35 -> S {Cursorposition.org} 029: Lbl D : Plot R,S _ {Cursormove} 030: X >= 121 => Goto D 031: Y <= 8 Goto D 032: Y >= 59 => Goto D 033: X -> R : Y -> S : 0 -> Z 034: Lbl E {GridpositX.detect} 035: (7 + Z * 6) > X => Z -> M 036: (7 + Z * 6) > X => Goto F 037: Isz Z : Z < 20 => Goto E 038: Lbl F : 0 -> Z 038: Lbl G {GridpositY.detect} 039: (14 + Z * 5) > Y => Z -> N 040: (14 + Z * 5) > Y => Goto H 041: Isz Z : Z < 10 => Goto G 042: Lbl H 043: A[30+M+N*20] = 1 => "KABOOOOOM" {Check.mine_exist} 044: A[30+M+N*20] = 1 => Goto Z 045: A[30+M+N*20] >= 2 => Goto D {Check.prev_opened} 046: 0 -> Q {Check.surround} 047: M > 0 => N < 9 => A[30+M-1+(N+1)*20] = 1 => Isz Q {up.left} 048: N < 9 => A[30+M+(N+1)*20] = 1 => Isz Q {up} 049: M < 19 => N < 9 => A[30+M+1+(N+1)*20] = 1 => Isz Q {up.right} 050: M < 19 => A[30+M+1+N*20] = 1 => Isz Q {right} 051: M < 19 => N > 0 => A[30+M+1+(N-1)*20] = 1 => Isz Q {down.right} 052: N > 0 => A[30+M+(N-1)*20] = 1 => Isz Q {down} 053: M > 0 => N > 0 => A[30+M-1+(N-1)*20] = 1 => Isz Q {down.left} 054: M > 0 => A[30+M-1+N*20] = 1 => Isz Q {left} 055: M * 6 -> E : N * 5 -> F 056: Q = 0 => Goto 0 {goto_number} 057: Q = 1 => Goto 1 058: Q = 2 => Goto 2 059: Q = 3 => Goto 3 060: Q = 4 => Goto 4 061: Q = 5 => Goto 5 062: Q = 6 => Goto 6 063: Q = 7 => Goto 7 064: Q = 8 => Goto 8 065: Lbl 0 {Graph.0} 066: Plot (E+2),(F+12) : Plot (E+6),(F+12) : Line 067: Plot (E+2),(F+11) : Plot (E+6),(F+11) : Line 068: Plot (E+2),(F+10) : Plot (E+6),(F+10) : Line 069: Plot (E+2),(F+9) : Plot (E+6),(F+9) : Line : Goto I 070: Lbl 1 {Graph.1} 071: Plot (E+3),(F+11) : Plot (E+4),(F+12) : Line 072: Plot (E+4),(F+9) : Line : Goto I 073: Lbl 2 {Graph.2} 074: Plot (E+5),(F+9) : Plot (E+3),(F+9) : Line 075: Plot (E+5),(F+11) : Line 076: Plot (E+4),(F+12) : Line 077: Plot (E+3),(F+12) : Line : Goto I 078: Lbl 3 {Graph.3) 079: Plot (E+3),(F+12) : Plot (E+5),(F+12) : Line 080: Plot (E+5),(F+9) : Line 081: Plot (E+3),(F+9) : Line 082: Plot (E+4),(F+11) : Line : Goto I 083: Lbl 4 {Graph.4} 084: Plot (E+3),(F+12) : Plot (E+3),(F+10) : Line 085: Plot (E+5),(F+10) : Line 086: Plot (E+5),(F+12) : Line 087: Plot (E+5),(F+9) : Goto I 088: Lbl 5 {Graph.5} 089: Plot (E+3),(F+9) : Plot (E+5),(F+9) : Line 090: Plot (E+3),(F+11) : Line 091: Plot (E+3),(F+12) : Plot (E+5),(F+12) : Line 092: Plot (E+5),(F+10) : Goto I 093: Lbl 6 {Graph.6} 094: Plot (E+3),(F+9) : Plot (E+3),(F+11) : Line 095: Plot (E+4),(F+9) : Plot (E+4),(F+10) 096: Plot (E+5),(F+10) : Plot (E+4),(F+12) 097: Plot (E+5),(F+12) : Goto I 098: Lbl 7 {Graph.7} 099: Plot (E+3),(F+12) : Plot (E+5),(F+12) : Line 100: Plot (E+4),(F+9): Goto I 101: Lbl 8 {Graph.8} 102: Plot (E+3),(F+12) : Plot (E+5),(F+12) : Line 103: Plot (E+5),(F+9) : Line 104: Plot (E+3),(F+9) : Line 105: Plot (E+3),(F+12) : Line 106: Plot (E+4),(F+10) 107: Lbl I 108: Plot 0,0 109: 2 -> A[30+M+N*20] {Mark.opened} 110: Isz U : T - U = 0 => "BRAVO!" : T - U = 0 => Goto W {Check.all_open} 111: Goto D 112: Lbl X : Isz M {Show_all_mines} 113: M = 20 => Isz N 114: M = 20 => 0 -> M 115: N >= 10 => Goto W 116: A[30+M+N*20] = 1 => Goto Y 117: Goto X 118: Lbl Z : -1 -> M : 0 -> N 119: Lbl Y {Graph.mine} 120: Plot (M*6+3),(N*5+11) : Plot (M*6+5),(N*5+11) : Line 121: Plot (M*6+3),(N*5+10) : Plot (M*6+5),(N*5+10) : Line 122: Plot 0,0 123: Goto X 124: Lbl W : Defm 0 {return.mem} 125: "CLEARED (Ï/.)" : U / T * 100 _ {Stat.Cleared} 126: "RATING max:" : (L * 2000) _ {Stat.maxRating} 127: "YOU:" : Int (U / T * 2000L) _ {Stat.playerRating} 128: 'JMR-95~v1.2 -----------------------------------------------------------------------------