Contributor: SCOTT TUNSTALL { ====================================== The SUPER Advanced LawnMower Simulator (C) 1994 Scott Tunstall Original AMIGA Idea by Team 7.5 -------------------------------------- Just for a laugh... go mow the lawn! Includes probably the EASIEST control method ever. And what's more the 2 player sequel has been posted as well!!! Take a LOOK at the QUALITY! :) Up till June 15th 1996 you can contact me at: CG93SAT@IBMRISC.DCT.AC.UK No queries about lawnmowers please. Command line params: The path to where your CGA.BGI is stored will do nicely. If no params are passed C:\tp7\BGI is used as default. Obviously your BGI may not be there!!!! } Uses Graph, Crt; {$r-,v-,s-} Procedure MowTheLawn; Var Sprite: array[1..16] of string [16]; SpriteLine: string[16]; Pixel: byte; PathToDriver: string[80]; GraphicsDriver: integer; GraphicsMode: integer; X,Y: byte; SpriteMemNeeded: word; SpritePointer: pointer; GrassX: word; GrassY: word; LawnMowerX: integer; LawnMowerY: integer; RealX: integer; Begin sprite[1] :='0000000000111100'; sprite[2] :='0000000011111100'; sprite[3] :='0000000000111100'; sprite[4] :='0000000000111100'; sprite[5] :='0000000001111100'; sprite[6] :='0000000011111100'; sprite[7] :='0000000110111100'; sprite[8] :='0000001100111100'; sprite[9] :='0000011000111100'; sprite[10]:='0000110001100110'; sprite[11]:='0001110001100110'; sprite[12]:='0011110011000110'; sprite[13]:='0011110011000110'; sprite[14]:='0111110011000110'; sprite[15]:='0011110111001110'; sprite[16]:='0000000000000000'; GraphicsDriver:=CGA; GraphicsMode:=CGAC0; { CHANGE THE PATHTODRIVER VARIABLE } If ParamCount <>0 Then PathToDriver:=ParamStr(1) Else PathToDriver:='C:\TP7\BGI'; InitGraph(GraphicsDriver, GraphicsMode,PathToDriver); If GraphResult = grOk Then Begin For y:=1 to 15 do For x:=1 to 15 do Begin SpriteLine:=sprite[y]; Pixel:=Ord(SpriteLine[x])-48; If Pixel = 0 Then PutPixel(x,y,0) else PutPixel(x,y,3); End; SpriteMemNeeded:=ImageSize(1,1,16,16); GetMem(SpritePointer,SpriteMemNeeded); GetImage(1,1,16,16,SpritePointer^); { O.K. Now clear the screen! } SetGraphMode(CGAC0); SetColor(2); MoveTo(160,0); LineTo(120,30); LineTo(200,30); LineTo(160,0); MoveTo(120,30); LineTo(120,71); LineTo(200,71); LineTo(200,30); Rectangle(130,34,150,54); Rectangle(190,34,170,54); { Draw the sun } SetColor(3); Circle(60,20,15); { And now the grass ! } SetColor(1); GrassY:=72; Repeat GrassX:=0; Repeat OutTextXY(GrassX,GrassY,'±'); Inc(GrassX,8); Until (GrassX >= GetMaxX); Inc(GrassY,8); Until (GrassY >= 200); { Now lets kick ass with the LawnMower Man! } {Position the man} LawnMowerY:=72; Repeat LawnMowerX:=(GetMaxX-15); Repeat PutImage(LawnMowerX,LawnMowerY,SpritePointer^,AndPut); PutImage(LawnMowerX,LawnMowerY,SpritePointer^,OrPut); Repeat Sound (120); Delay(50); NoSound; Until keypressed; Memw[$40:$1a]:=Memw[$40:$1c]; PutImage(LawnMowerX,LawnMowerY,SpritePointer^,XorPut); Dec(LawnMowerX, 4); RealX:=LawnMowerX+4; Until (RealX = 0); Inc(LawnMowerY,16); Until LawnMowerY >= 192; FreeMem(SpritePointer,SpriteMemNeeded); End Else Begin TextMode(CO80); Writeln('Cannot use the required BGI file (CGA.BGI) !'); Writeln; Writeln('This can be corrected, however. What you do is'); Writeln('run this program passing the PATH where CGA.BGI'); Writeln('resides as a program parameter, for example:'); Writeln; Writeln('MOWLAWN C:\TP7\BGI <- TP7\BGI dir is DEFAULT!'); Writeln; Writeln('I recommend that you create a batch file that'); Writeln('automatically passes this parameter..'); Writeln; Halt; End; End; Procedure IntroduceMe; Var DoItAgain: boolean; Choice: char; Begin TextMode(CO40); Repeat DoItAgain:=False; TextBackground(Green); TextColor(White); ClrScr; Gotoxy(6,1); Write('ADVANCED LAWNMOWER SIMULATOR'); Gotoxy(9,2); Write('THE HOT, SEXY SEQUEL !'); Gotoxy(5,7); Write('Programming by: Scott Tunstall'); Gotoxy(5,11); TextColor(Red); Write('Please select your lawn mower:'); GotoXY(5,13); Write('1: The Tunstall - ''O'' - Matic'); GotoXY(5,15); Write('2: The Ramsay Virgin Mower 2000'); GotoxY(5,17); Write('3: The Lay - Z Langa Lawn Cutter'); GotoXY(5,19); Write('4: The Bassett Lawn Buster'); GotoXY(2,23); TextColor(Blue); Write('WARNING! Extended playing of this game'); GotoXY(2,24); Write('can make you irresistible to women !'); memw[$40:$1a]:=memw[$40:$1c]; Choice:= Readkey; Randomize; If Random(1)=1 Then Begin ClrScr; TextColor(Red); GotoXY(4,12); Write('I am sorry, but that mower is out'); GotoXY(4,13); Write('of order.'); Delay(3000); DoItAgain:=true; End; Until DoItAgain = False; End; Procedure RudeComment; var Message: string[40]; XPos: byte; Begin TextMode(CO40); TextColor(White); textBackground(Blue); ClrScr; Case Random(10) of 0: Message:='A job well done, son. Here''s 50p'; 1: Message:='Son, My gran could cut better !'; 2: Message:='Does your maw know you''re here ?'; 3: Message:='Do you drink meths at all ?'; 4: Message:='Come in and meet my daughter, son!'; 5: Message:='What kind of grass cutting is that ?'; 6: Message:='Do you do hair dressing, young man ?'; 7: Message:='You haven''t even cut half the lawn !'; 8: Message:='Do you want to see my puppies ?'; 9: Message:='That was the shittest cut I''ve seen !'; 10: Message:='I bet you drink Carling Black Label !'; End; XPos:= (40 - Length(Message)) shr 1; gotoXY(XPos,12); Write(Message); Delay(3000); End; Procedure YouShouldntSeeThis; Assembler; Asm JMP @SoapyBubble @SoapyBubble: End; Begin Randomize; Repeat YouShouldntSeeThis; IntroduceMe; MowTheLawn; RudeComment; Until False; End.