home *** CD-ROM | disk | FTP | other *** search
AmigaBASIC Source Code | 1988-12-28 | 16.7 KB | 820 lines |
- REM - TeleChess Amiga
- REM - Beta Test version 0.95
- REM - By
- REM - Tom Conroy &
- REM James Hastings-Trew
- REM - Copyright 1987, Telegame Software
- REM - This version of TeleChess is
- REM - compatible with the TeleChess-64
- REM - for the Commodore 64
- MainLoop:
-
- GOSUB DefineModeArray
- GOSUB Initalize
- GOSUB SetMenu
- GOSUB GetOutlines
- GOSUB LoadPieces
- GOSUB PieceMemSetup
- GOSUB PrintBoard
- GOTO Chatout
- WHILE 1
- GOSUB MouseScan
- WEND
-
- ElectPawn:
-
- IF InTransit = 1 THEN InTransit = 5
- IF InTransit = 11 THEN InTransit = 15
- RETURN
-
- ModifyBoard:
-
-
- '----------------------------------------
-
- PieceMemSetup:
-
- RESTORE
- FOR n=1 TO 8
- FOR m=1 TO 8
- READ b(n,m)
- NEXT m
- NEXT n
- IF flip=0 THEN
- x=4
- END IF
- IF flip=0 THEN crosspiece
- FOR n=1 TO 8:FOR I=1 TO 8
- IF(b(n,I)<10 AND b(n,I)>0) THEN b(n,I)=b(n,I)+10:GOTO loop6
- IF b(n,I)>10 THEN b(n,I)=b(n,I)-10
- loop6:
- NEXT I:NEXT n
- b(1,4)=16:b(1,5)=15:b(8,4)=6:b(8,5)=5
- crosspiece:
- FOR n = 0 TO 6
- READ cross(n)
- NEXT
- FOR n = 11 TO 16
- READ cross(n)
- NEXT
- FOR n = 100 TO 106
- READ cross(n)
- NEXT
- FOR n = 111 TO 116
- READ cross(n)
- NEXT
- FOR z=1 TO 8:FOR I=1 TO 8
- bb(z,I)=b(z,I)
- NEXT I:NEXT z
- RETURN
- DATA 4,2,3,5,6,3,2,4
- DATA 1,1,1,1,1,1,1,1
- DATA 0,0,0,0,0,0,0,0
- DATA 0,0,0,0,0,0,0,0
- DATA 0,0,0,0,0,0,0,0
- DATA 0,0,0,0,0,0,0,0
- DATA 11,11,11,11,11,11,11,11
- DATA 14,12,13,15,16,13,12,14
- DATA 7,6,2,3,1,4,5
- DATA 20,16,17,15,18,19
- DATA 14,13,9,10,8,11,12
- DATA 27,23,24,22,25,26
-
-
- '------------------------------------
-
- ChatLoop:
-
- Chatout:
-
- IF LOC(1)<>0 THEN ChatIn
- a$=INKEY$
- IF a$="" THEN GOSUB Colors
- IF a$ = "" AND local = 1 THEN local = 0 : GOTO Chatout
- IF a$ = "" AND local = 0 THEN local = 1 : GOTO Chatout
- IF a$="" THEN ChatIn
- IF a$=CHR$(13)THEN
- a$="... "
- GOTO PrintAndSend
- END IF
- IF a$=CHR$(8) AND LEN(t$)>0 THEN PrintAndSend
- IF (ASC(a$)<32 OR ASC(a$)>64) AND (ASC(a$)<97 OR ASC(a$)>122)THEN ChatIn
- IF ASC(a$)>64 THEN b=ASC(a$)-32:a$=CHR$(b)
- PrintAndSend:
- IF a$=CHR$(8) THEN a$=CHR$(20)
- PRINT#1,a$;
- IF a$=CHR$(20) THEN
- a$=""
- t$=LEFT$(t$,LEN(t$)-1)
- END IF
- t$=t$+a$
- t$=RIGHT$(t$,18)
- LOCATE 2,21:COLOR 30
- PRINT t$
- GOTO ChatIn
-
- ChatIn:
- IF LOC(1)=0 THEN MouseScan
- a$=INPUT$(1,1)
- IF a$=CHR$(254)THEN
- GOSUB ReceiveMove
- GOTO ChatIn
- END IF
- IF a$=CHR$(91)THEN
- PRINT#1,CHR$(226);
- GOTO ChatIn
- END IF
- IF a$=CHR$(20) AND LEN(y$)>0 THEN
- a$="":y$=LEFT$(y$,LEN(y$)-1)
- IF LEN(Speak$) > 0 THEN Speak$=LEFT$(Speak$,LEN(Speak$)-1)
- LOCATE 2,2:COLOR 17
- PRINT y$
- END IF
- IF ASC(a$+CHR$(0))>90 OR ASC(a$+CHR$(0))<32 THEN ChatIn
- y$=y$+a$:y$=RIGHT$(y$,18)
- IF LEN(Speak$) < 255 THEN Speak$=Speak$+a$
- LOCATE 2,2:COLOR 17
- PRINT y$
- IF RIGHT$(Speak$,4)="... " THEN
- talk$ = TRANSLATE$ (LEFT$(Speak$,LEN(Speak$)-4))
- Speak$=""
- IF SpeakFlag = 1 THEN SAY (talk$),Voice%
- END IF
- GOTO ChatIn
-
- '--------------------------------------------
-
- ReceiveMove:
-
- Ok=0
- Loop3:
- re=1:PRINT#1,CHR$(91);
- Loop2:
- tl=TIMER+5
- WHILE TIMER<tl
- a$="":IF LOC(1)<>0 THEN a$=INPUT$(1,1)
- IF a$<>""THEN tl=TIMER-1
- WEND
- IF a$=CHR$(254) THEN Loop3
- IF a$=CHR$(226) THEN RETURN
- cor(re)=ASC(a$+CHR$(0))
- cor(re)=cor(re)-32
- re=re+1
- IF re<6 THEN Loop2
- checksum=cor(1)+cor(2)+cor(3)+cor(4)
- IF checksum<>cor(5) THEN RecmoveFail
- PRINT#1,CHR$(96);
- Ok=1
- bb(f1,f2) = b(f1,f2)
- bb(s1,s2) = b(s1,s2)
- s1=cor(1):s2=cor(2):f1=cor(3):f2=cor(4)
- GOSUB MovePiece
- RETURN
- RecmoveFail:
- PRINT#1,CHR$(99);
- tl=TIMER+5
- WHILE TIMER<tl
- a$="":IF LOC(1)=0 THEN a$=INPUT$(1,1)
- IF a$<>""THEN tl=TIMER-1
- WEND
- IF a$=CHR$(254)THEN GOTO Loop3
- RETURN
-
- '--------------------------------------
-
- SendMove:
- IF local = 1 THEN Ok = 1:RETURN
- Ok=0:IF s1 = f1 AND s2 = f2 THEN RETURN
- sy=9-s1:sx=9-s2:fy=9-f1:fx=9-f2: REM translate co-ordinates
- ck=(sy+sx+fy+fx):try=0: REM calculate checksum
- Loop4:
- tl=TIMER+5
- PRINT#1,CHR$(254);: REM transmit send request
- REM wait for acknowledge
- WHILE tl>TIMER
- a$="":IF LOC(1)<>0 THEN a$=INPUT$(1,1)
- IF a$<>"" THEN tl=TIMER-1
- WEND
- IF a$<>"" THEN Loop5
- try=try+1
- IF try<10 THEN Loop4
- IF try=10 THEN RETURN :REM give up after 10 attempts
- Loop5:
- IF a$<>CHR$(91)THEN Loop4
- PRINT#1,CHR$(sy+32);
- PRINT#1,CHR$(sx+32);
- PRINT#1,CHR$(fy+32);
- PRINT#1,CHR$(fx+32);
- PRINT#1,CHR$(ck+32);
- tl=TIMER+5
- WHILE TIMER<tl
- a$="":IF LOC(1)=0 THEN a$=INPUT$(1,1)
- IF a$<>""THEN tl=TIMER-1
- WEND
- IF a$<>CHR$(96)THEN Loop4 : REM try again if not sent ok
- Ok=1 : RETURN
-
- '-----------------------------------------
-
- CordToGrid: REM - XCORD= XPixel Cordinate
- REM - YCORD= YPixel Cordinate
- REM - Returns XGRID and YGRID
- nongrid=0
- IF Xcord < 6 OR Xcord > 199 THEN nongrid=1:RETURN
- IF Ycord < 28 OR Ycord > 191 THEN nongrid=1:RETURN
- Xcord = Xcord + 17
- xgrid = INT (Xcord / 24)
- Ycord = Ycord -28
- ygrid = INT ((Ycord / 19)+1)
- RETURN
-
- '------------------------------------------
-
- GridToCord:
-
- Xcord = -19 + (xgrid * 24)
- Ycord = 9 + (ygrid * 19)
- RETURN
-
- '------------------------------------------
-
- PlacePiece:
- REM N=YGRID
- REM M=XGRID
-
- ygrid=n:xgrid=m
- GOSUB GridToCord
- pn = b(n,m)
- IF (xgrid+ygrid)/2 <> INT ((xgrid+ygrid)/2) THEN pn=pn+100
- PUT (Xcord,Ycord), piece%(1,cross(pn)), PSET
- RETURN
-
- '------------------------------------------
-
- PrintBoard:
-
- FOR n=1 TO 8:
- FOR m = 1 TO 8
- GOSUB PlacePiece
- Skip:
- NEXT
- NEXT
- PUT (267,30),Button%(1,2),PSET
- WINDOW CLOSE 4
- RETURN
-
- '------------------------------------------
-
- MovePiece:
-
- IF s1 = f1 AND s2 = f2 THEN RETURN
- IF b(s1,s2)=0 THEN RETURN
- InTransit = b(s1,s2)
- n=s1:m=s2
- Capture = 0 : IF b(f1,f2) <> 0 THEN Capture = 1
- IF SoundFlag = 1 THEN GOSUB Tune1
- FOR silly = 1 TO 4
- b(s1,s2)=InTransit : GOSUB PlacePiece : GOSUB OneSecDelay
- b(s1,s2)=0 : GOSUB PlacePiece : GOSUB OneSecDelay
- NEXT
- n=f1:m=f2
- IF (InTransit = 1 OR InTransit = 11) AND (f1 = 8 OR f1 = 1) THEN GOSUB ElectPawn
- FOR silly = 1 TO 3
- b(f1,f2) = 0 : GOSUB PlacePiece : GOSUB OneSecDelay
- b(f1,f2) = InTransit : GOSUB PlacePiece : GOSUB OneSecDelay
- NEXT
- IF Capture = 1 AND SoundFlag =1 THEN GOSUB Tune2
- IF SoundFlag = 1 THEN GOSUB Tune3
- RETURN
-
- OneSecDelay:
-
- Delay = TIMER
- WHILE TIMER < Delay + 0.2
- WEND
- RETURN
-
-
- '------------------------------------------
-
- LoadPieces:
-
-
- PieceLoop1:
- p = 0
- xgrid = 1 : ygrid = 1 : GOSUB PieceLoop2
- xgrid = 7 : ygrid = 1 : GOSUB PieceLoop2
- xgrid = 3 : ygrid = 1 : GOSUB PieceLoop2
- xgrid = 4 : ygrid = 4 : GOSUB PieceLoop2
- xgrid = 5 : ygrid = 1 : GOSUB PieceLoop2
- xgrid = 2 : ygrid = 2 : GOSUB PieceLoop2
- xgrid = 1 : ygrid = 3 : GOSUB PieceLoop2
- xgrid = 8 : ygrid = 1 : GOSUB PieceLoop2
- xgrid = 2 : ygrid = 1 : GOSUB PieceLoop2
- xgrid = 6 : ygrid = 1 : GOSUB PieceLoop2
- xgrid = 4 : ygrid = 1 : GOSUB PieceLoop2
- xgrid = 5 : ygrid = 4 : GOSUB PieceLoop2
- xgrid = 1 : ygrid = 2 : GOSUB PieceLoop2
- xgrid = 2 : ygrid = 3 : GOSUB PieceLoop2
- xgrid = 8 : ygrid = 8 : GOSUB PieceLoop2
- xgrid = 2 : ygrid = 8 : GOSUB PieceLoop2
- xgrid = 6 : ygrid = 8 : GOSUB PieceLoop2
- xgrid = 4 : ygrid = 8 : GOSUB PieceLoop2
- xgrid = 5 : ygrid = 5 : GOSUB PieceLoop2
- xgrid = 1 : ygrid = 7 : GOSUB PieceLoop2
- xgrid = 1 : ygrid = 3 : GOSUB PieceLoop2
- xgrid = 1 : ygrid = 8 : GOSUB PieceLoop2
- xgrid = 7 : ygrid = 8 : GOSUB PieceLoop2
- xgrid = 3 : ygrid = 8 : GOSUB PieceLoop2
- xgrid = 4 : ygrid = 5 : GOSUB PieceLoop2
- xgrid = 5 : ygrid = 8 : GOSUB PieceLoop2
- xgrid = 2 : ygrid = 7 : GOSUB PieceLoop2
- xgrid = 1 : ygrid = 3 : GOSUB PieceLoop2
- GET (267,30)-(280,37),Button%(1,1)
- GET (267,47)-(280,54),Button%(1,2)
- RETURN
-
- PieceLoop2:
- p = p + 1
- GOSUB GridToCord
- x1 = Xcord
- y1 = Ycord
- x2 = x1+22
- y2 = y1+17
- GET (x1,y1)-(x2,y2),piece%(1,p)
- RETURN
-
- '------------------------------------------
-
- GetOutlines:
-
- FOR n=1 TO 6
- OPEN "Piece"+STR$(n) FOR INPUT AS 2
- OBJECT.SHAPE n,INPUT$(LOF(2),2)
- CLOSE 2
- NEXT
- RETURN
-
- '------------------------------------------
-
- MouseScan:
- IF MoveToMake = 1 THEN MoveToMake = 0 : GOTO SendTheMove
- a = MOUSE(0)
- IF a < 0 THEN ButtonIsPressed
- GOSUB CheckMenu
- GOTO Chatout
-
-
- '------------------------------------------
-
- SetMenu:
- MENU 1,0,1,"Project"
- MENU 1,1,1,"Establish Connect"
- MENU 1,2,1,"Load Game "
- MENU 1,3,1,"Save Game "
- MENU 1,4,1,"Quit "
- MENU 2,0,1,"Options"
- MENU 2,1,1,"Be Black "
- MENU 2,2,1,"Be White "
- MENU 2,3,1,"Reset Board "
- MENU 2,4,0,"Modify Board"
- MENU 2,5,1,"Sound Off "
- MENU 2,6,1,"Speech Off "
- MENU 3,0,1,"Info"
- MENU 3,1,1,"Authors "
- MENU 3,2,1,"More Info "
- MENU 3,3,1,"Versions "
- MENU 3,4,1,"TeleGames "
- MENU 4,0,0," "
- RETURN
-
- '------------------------------------------
-
- Initalize:
-
- SoundFlag = 1
- SpeakFlag = 1
- DIM piece%(183,29)
- DIM cross(117)
- DIM cascii(90)
- DIM Button%(58,2)
- RETURN
-
- '------------------------------------------
-
- OpenWindow:
-
- WINDOW 3," TeleChess",(21,50)-(250,165),0,2
- RETURN
-
- Closewindow:
-
- WINDOW CLOSE 3
- RETURN
-
- '------------------------------------------
-
- CoverScreen:
-
- WINDOW 4,"TeleChess",,0,2
- LOCATE 10,2:COLOR 2
- PRINT "Please Wait... Working..."
- WINDOW OUTPUT 2
- RETURN
-
- '------------------------------------------
- Clicker:
-
- a=0
- WHILE a=0
- a=MOUSE(0)
- WEND
- GOSUB Closewindow
- RETURN
-
- '----------------------------------
-
- Tune1:
- FOR vol = 255 TO 0 STEP -15
- SOUND 90,1,vol,3
- SOUND 130,1,vol,2
- NEXT
- RETURN
-
- Tune2:
- FOR vol=12 TO 1 STEP -1
- SOUND vol*20,1,255,2
- FOR silly = 1 TO 20 : NEXT
- SOUND vol*20,1,255,3
- NEXT
- RETURN
-
- Tune3:
- SOUND 500,0.2,255,3
- RETURN
-
- '----------------------------------
-
- OppsPressed:
-
- FOR z=1 TO 8:FOR I=1 TO 8
- b(z,I)=bb(z,I)
- NEXT I:NEXT z
- GOSUB CoverScreen
- GOSUB PrintBoard
- PRINT#1," SYSTEM MESSAGE: OTHER PLAYER HAS PRESSED UNDO... ";
- RETURN
-
- '----------------------------------
-
- CheckMenu:
-
- selecta = MENU(0)
- IF selecta = 0 THEN RETURN
- selectb = MENU(1)
- ON selecta GOTO Project,Options,Info
- RETURN
-
- Project:
- ON selectb GOTO EstablishConnect,LoadGame,SaveGame,Quit
- RETURN
-
- EstablishConnect:
-
- IF SoundFlag = 1 THEN GOSUB Tune1
- WINDOW 3," TeleChess",(13,68)-(187,148),0,2
- COLOR 17,1
- PRINT " Please Type In The "
- PRINT " Proper Modem Command "
- PRINT " To Connect You To "
- PRINT " The Other Player "
- PRINT " "
- COLOR 3
- PRINT " EXAMPLE: ATDT (PH#) "
- PRINT " ATS0=1 "
- PRINT " ATA "
- PRINT " "
- COLOR 1,17
- PRINT " ";
- LOCATE 10,1
- INPUT "Command:";ModemCommand$
- WINDOW CLOSE 3
- PRINT#1,ModemCommand$
- IF SoundFlag = 1 THEN GOSUB Tune1
- RETURN
-
-
- RETURN
-
- LoadGame:
-
- IF SoundFlag = 1 THEN GOSUB Tune1
- WINDOW 3,"Load Game",(10,50)-(260,57),0,2
- COLOR 17:PRINT "Path/Filename:";
- COLOR 13 : INPUT filename$
- IF filename$="" THEN WINDOW CLOSE 3:RETURN
- OPEN filename$ FOR INPUT AS 2
- INPUT #2,flip
- FOR n = 1 TO 8
- FOR m = 1 TO 8
- INPUT #2,b(n,m)
- NEXT
- NEXT
- CLOSE #2
- WINDOW CLOSE 3
- GOSUB CoverScreen
- GOSUB PrintBoard
- IF SoundFlag = 1 THEN GOSUB Tune1
- RETURN
-
- SaveGame:
-
- IF SoundFlag = 1 THEN GOSUB Tune1
- WINDOW 3,"Save Game",(10,50)-(250,57),0,2
- COLOR 17:PRINT "Path/Filename:";
- COLOR 13 : INPUT filename$
- IF filename$="" THEN WINDOW CLOSE 3:RETURN
- OPEN filename$ FOR OUTPUT AS 2
- WRITE #2,flip
- FOR n = 1 TO 8
- FOR m = 1 TO 8
- WRITE #2,b(n,m)
- NEXT
- NEXT
- CLOSE #2
- PRINT : COLOR 17,1 : LOCATE 1,1 : PRINT "Game Saved... ";
- FOR n = 1 TO 2000 : NEXT
- WINDOW CLOSE 3
- IF SoundFlag = 1 THEN GOSUB Tune1
- RETURN
-
- Quit:
-
- SCREEN CLOSE 2
- IF SoundFlag = 1 THEN GOSUB Tune1
- END
-
- Options:
-
- ON selectb GOTO BeBlack,BeWhite,ResetBoard,ModifyBoard,SoundToggle,TalkToggle
- RETURN
-
- BeBlack:
- IF SoundFlag = 1 THEN GOSUB Tune1
- IF flip = 1 THEN RETURN
- flip = 1
- GOSUB CoverScreen
- GOSUB PieceMemSetup
- GOSUB PrintBoard
- RETURN
- BeWhite:
- IF SoundFlag = 1 THEN GOSUB Tune1
- IF flip = 0 THEN RETURN
- flip = 0
- GOSUB CoverScreen
- GOSUB PieceMemSetup
- GOSUB PrintBoard
- RETURN
- ResetBoard:
- IF SoundFlag = 1 THEN GOSUB Tune1
- GOSUB CoverScreen
- GOSUB PieceMemSetup
- GOSUB PrintBoard
- RETURN
- ModifyBoard:
- IF SoundFlag = 1 THEN GOSUB Tune1
- RETURN
- SoundToggle:
- IF SoundFlag = 0 THEN SoundOn
- SoundFlag = 0
- MENU 2,5,1,"Sound On "
- RETURN
- SoundOn:
- SoundFlag = 1
- MENU 2,5,1,"Sound Off "
- RETURN
-
- TalkToggle:
-
- IF SpeakFlag = 1 THEN TurnItOff
- SpeakFlag = 1 : Speak$ = TRANSLATE$ ("Ok, I'm back") : SAY (Speak$)
- MENU 2,6,1,"Speech Off "
- RETURN
- TurnItOff:
- SpeakFlag = 0 : Speak$ = TRANSLATE$ ("My lips are sealed") : SAY (Speak$)
- MENU 2,6,1,"Speech On "
- RETURN
-
- Info:
-
- ON selectb GOTO Authors,MoreInfo,Versions,TeleGames
-
- Authors:
-
- IF SoundFlag = 1 THEN GOSUB Tune1
- WINDOW 3,"TeleChess",(21,50)-(259,130),0,2
- COLOR 25,13
- PRINT " Programming: Tom Conroy "
- PRINT " Artwork: James Hastings-Trew "
- PRINT " "
- COLOR 3,13
- PRINT " Don't feel obligated to send "
- PRINT " money if you use this "
- PRINT " program. But, if you do, "
- PRINT " we'll say nice things about "
- PRINT " you for days! (Honest...) "
- PRINT " "
- COLOR 17,1
- PRINT " [Click To Continue] ";
- GOSUB Clicker
- IF SoundFlag = 1 THEN GOSUB Tune1
- RETURN
- Colors:
- GOSUB OpenWindow
- WIDTH 14
- FOR n = 0 TO 31
- COLOR n
- PRINT n;
- NEXT
- INPUT a$
- GOSUB Closewindow
- WIDTH 60
- RETURN
- MoreInfo:
- IF SoundFlag = 1 THEN GOSUB Tune1
- WINDOW 3,"TeleChess",(21,42)-(243,162),0,2
- COLOR 25,13
- PRINT " Please send freeware "
- PRINT " donations (If Any) to "
- COLOR 30,13
- PRINT " "
- PRINT " TeleGame Software "
- PRINT " Sub PO 37 "
- PRINT " Saskatoon, Sask. "
- PRINT " S7H 0X0 "
- COLOR 1
- PRINT " Call At 306-373-0656 "
- PRINT " "
- COLOR 17,13
- PRINT " Please Note: Your freeware "
- PRINT " donations will go toward "
- PRINT " supporting the authors "
- PRINT " Fudrucker's Lunch Fund "
- PRINT " "
- COLOR 17,1
- PRINT " [Click To Continue] ";
- GOSUB Clicker
- IF SoundFlag = 1 THEN GOSUB Tune1
- RETURN
-
-
- Versions:
- IF SoundFlag = 1 THEN GOSUB Tune1
- WINDOW 3,"TeleChess",(21,50)-(259,122),0,2
- COLOR 25,13
- PRINT " This TeleChess is Compatible "
- PRINT " with the following versions. "
- PRINT " "
- COLOR 3,13
- PRINT " Commodore 64 - TeleChess 1.5 "
- COLOR 4,13
- PRINT " Atari 520 ST - TeleChess 1.0 "
- COLOR 5,13
- PRINT " MS-DOS - TeleChess 1.0 "
- COLOR 6,13
- PRINT " Macintosh - TeleChess 1.0 "
- PRINT " "
- COLOR 17,1
- PRINT " [Click To Continue] ";
- GOSUB Clicker
- IF SoundFlag = 1 THEN GOSUB Tune1
- RETURN
-
- TeleGames:
- IF SoundFlag = 1 THEN GOSUB Tune1
- WINDOW 3,"TeleChess",(21,50)-(259,130),0,2
- COLOR 25,13
- PRINT " Other TeleGames Being "
- PRINT " Considered "
- PRINT " "
- COLOR 3,13
- PRINT " TeleGammon - Backgammon "
- PRINT " TeleCheckers - Checkers "
- PRINT " TeleDeck - Any Card Game "
- PRINT " "
- PRINT " Feel Free To Suggest More! "
- PRINT " "
- COLOR 17,1
- PRINT " [Click To Continue] ";
- GOSUB Clicker
- IF SoundFlag = 1 THEN GOSUB Tune1
- RETURN
-
- '----------------------------------
-
- ButtonIsPressed:
-
- Xcord = MOUSE(3)
- Ycord = MOUSE(4)
- GOSUB CordToGrid
- IF nongrid <> 0 THEN ClickBox
- bb(f1,f2) = b(f1,f2)
- bb(s1,s2) = b(s1,s2)
- s1 = ygrid
- s2 = xgrid
- IF b(s1,s2) = 0 THEN Chatout
- InTransit = b(s1,s2)
- b(s1,s2) = 0
- n = s1 : m = s2
- GOSUB PlacePiece
- GOSUB GetNumber
- WHILE MOUSE(0) <1
- OBJECT.X Outline,MOUSE(5)-10
- OBJECT.Y Outline,MOUSE(6)-7
- OBJECT.ON Outline
- WEND
- Xcord = MOUSE(5)
- Ycord = MOUSE(6)
- GOSUB CordToGrid
- f1 = ygrid
- f2 = xgrid
- MoveToMake = 1
- GOTO ChatIn
-
- SendTheMove:
-
- GOSUB SendMove
- OBJECT.OFF :IF Ok=0 THEN n=s1:m=s2:b(s1,s2)=InTransit:GOSUB PlacePiece:GOTO Chatout
- IF b(f1,f2)<>0 AND SoundFlag = 1 THEN GOSUB Tune2
- IF (InTransit = 1 OR InTransit = 11) AND (f1 = 8 OR f1 = 1) THEN GOSUB ElectPawn
- b(f1,f2)=InTransit
- n = f1 : m = f2
- GOSUB PlacePiece
- IF SoundFlag = 1 THEN GOSUB Tune3
- GOTO Chatout
-
-
- '----------------------------------
-
- ClickBox:
-
- IF Xcord < 270 OR Xcord > 277 THEN GOTO Chatout
- IF Ycord > 31 AND Ycord < 36 THEN GOSUB Check
- IF Ycord > 48 AND Ycord < 53 THEN GOSUB Opps1
- IF Ycord > 65 AND Ycord < 70 THEN GOSUB Hurry
- IF Ycord > 82 AND Ycord < 87 THEN GOSUB Mate
- GOTO Chatout
-
- Check:
-
- PUT (267,30),Button%(1,1),PSET
- PRINT#1," CHECK... ";
- PUT (267,30),Button%(1,2),PSET
- RETURN
-
- Opps1:
-
- PUT (267,47),Button%(1,1),PSET
- GOSUB OppsPressed
- PUT (267,47),Button%(1,2),PSET
- RETURN
-
- Hurry:
-
- PUT (267,64),Button%(1,1),PSET
- PRINT#1," ZZZZZ..ZZZZ..ZZZZZ... ";
- PUT (267,64),Button%(1,2),PSET
- RETURN
-
- Mate:
-
- PUT (267,81),Button%(1,1),PSET
- PRINT#1," CHECKMATE... YOU LOSE... "
- PUT (267,81),Button%(1,2),PSET
- RETURN
-
- '----------------------------------
-
- GetNumber:
-
- Outline = InTransit
- IF Outline > 100 THEN Outline = Outline - 100
- IF Outline > 10 THEN Outline = Outline - 10
- RETURN
-
- '----------------------------------
-
- DefineModeArray:
-
- Voice%(0) = 110
- Voice%(1) = 0
- Voice%(2) = 170
- Voice%(3) = 1
- Voice%(4) = 22200
- Voice%(5) = 45
- Voice%(6) = 10
- Voice%(7) = 0
- Voice%(8) = 0
- RETURN
-
-