home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 1: Collection A / 17Bit_Collection_A.iso / files / 989.dms / 989.adf / Tug / tugoword (.txt) < prev    next >
AmigaBASIC Source Code  |  1990-04-30  |  20KB  |  843 lines

  1. CLEAR,25000:CLEAR,50000
  2. SCREEN 1,320,200,3,1
  3. WINDOW 2,,,0,1
  4. start:
  5. DEFINT a-z
  6. RANDOMIZE TIMER
  7. DEF FNr(x)=INT(RND(1)*x)+1
  8. FOR w=0 TO 7
  9. READ c,d,e
  10. PALETTE w,c,d,e
  11. NEXT
  12. DATA 0,1,1,1,1,1,0,0,0,.8,.1,.1
  13. DATA .1,.8,.1,.8,.1,.1,0,0,1,.9,.7,0
  14. GOSUB graphics
  15. CLS
  16. PUT(89,65),l1,PSET
  17. LOCATE 10,14
  18. COLOR 2,1:PRINT " TUG O WORD "
  19. DIM aa(280)
  20. GET(104,70)-(199,79),aa
  21. PUT(200,65),r1,PSET
  22. LOCATE 13,13
  23. COLOR 5,0
  24. PRINT "BY ERIC COVELL"
  25. FOR del=1 TO 10000:NEXT
  26. bb=0
  27.  FOR x=1 TO 160
  28.  bb=bb+1:IF bb=3 THEN bb=1
  29.  IF bb=1 THEN PUT(x+200,65),r2,PSET :ELSE PUT(x+200,65),r4,PSET
  30.  PUT(x+104,70),aa,PSET
  31.  IF bb=1 THEN PUT(x+89,65),l2,PSET :ELSE PUT(x+89,65),l4,PSET
  32.  NEXT
  33.  FOR x=160 TO 110 STEP-1
  34.  bb=bb+1:IF bb=3 THEN bb=1
  35.  IF bb=1 THEN PUT(x+200,65),r2,PSET :ELSE PUT(x+200,65),r4,PSET
  36.  PUT(x+104,70),aa,PSET
  37.  IF bb=1 THEN PUT(x+89,65),l2,PSET :ELSE PUT(x+89,65),l4,PSET
  38.  NEXT
  39.  FOR x=110 TO 225
  40.  bb=bb+1:IF bb=3 THEN bb=1
  41.  IF bb=1 THEN PUT(x+200,65),r2,PSET :ELSE PUT(x+200,65),r4,PSET
  42.  PUT(x+104,70),aa,PSET
  43.  IF bb=1 THEN PUT(x+89,65),l2,PSET :ELSE PUT(x+89,65),l4,PSET
  44.  NEXT
  45. LOCATE 18,6
  46. COLOR 6
  47. oncemore:
  48. INPUT "DO YOU WANT INSTRUCTIONS (Y/N)",ans$
  49. ans$=UCASE$(ans$)
  50. IF ans$<>"Y" AND ans$<>"N" THEN oncemore
  51. IF ans$="Y" THEN GOSUB instructions
  52.  
  53. restart:
  54. COLOR 4,0
  55. CLS
  56. LINE (1,35)-(320,35),2
  57. GOSUB rubout
  58. LINE (3,113)-(145,200),4,bf
  59. LINE (164,113)-(307,200),4,bf
  60. LINE (3,113)-(145,114),1,bf
  61. LINE (164,113)-(307,114),1,bf
  62. FOR x=3 TO 139 STEP 8:PSET(x,113),2:NEXT
  63. FOR x=170 TO 306 STEP 8:PSET(x,113),2:NEXT
  64. LINE (87,103)-(222,103),5
  65. x1=72:x2=223
  66. PUT(x1,92),l1,PSET:PUT(x2,92),r1,PSET
  67. spot=10:start=0
  68. GOSUB letters
  69.  IF samenames=1 THEN
  70.  COLOR 2,1
  71.  LOCATE 16,2:PRINT nam$(1)
  72.  LOCATE 16,22:PRINT nam$(2)
  73.  newmm=mm:start=1
  74.  GOTO 10
  75.  END IF
  76. GOSUB getname
  77. 10 :
  78. FOR x=1 TO 2:word$(x)="":guessed(x)=0:NEXT
  79. numletters=10
  80. GOSUB handicap
  81. game=0
  82.  
  83. gameloop:
  84. GOSUB setword
  85. mm=0:drop=0
  86. IF start=1 THEN mm=newmm:start=0
  87.  WHILE game=0
  88.  GOSUB rubout
  89.  mm=mm+1:IF mm=3 THEN mm=1
  90.  IF mm=1 THEN cc=4 :ELSE cc=5
  91.  LOCATE 2,2:COLOR cc,1:PRINT nam$(mm);" Guess a letter or *"
  92.  ga1:
  93.  GOSUB getcord
  94.  GOSUB identify
  95.  IF flag=1 THEN ga1
  96.  IF mistake=1 THEN ga1
  97.  IF cr=60 THEN ga1
  98.  GOSUB checkword
  99.   IF sc>0 THEN
  100.    FOR x=1 TO sc
  101.    IF spot=19 THEN ga2
  102.    GOSUB mover
  103.    ga2:
  104.    IF spot=19 THEN x=sc:game=1:drop=1
  105.    NEXT
  106.   END IF 
  107.   IF sc<1 THEN
  108.   sc=ABS(sc)
  109.    FOR x=1 TO sc
  110.    IF spot=1 THEN ga3
  111.    GOSUB movel
  112.    ga3:
  113.    IF spot=1 THEN x=sc:game=1:drop=2
  114.    NEXT
  115.   END IF
  116.    FOR i=1 TO 2
  117.    IF guessed(i)=num(i) THEN game=1
  118.    NEXT
  119.   WEND
  120.    IF drop>0 THEN
  121.    GOSUB dropman
  122.    GOSUB enquire
  123.    GOTO restart
  124.    END IF
  125.   LINE(3,150)-(145,200),4,bf:LINE(164,150)-(307,200),4,bf
  126.   FOR x=1 TO 2:word$(x)="":guessed(x)=0:NEXT
  127.   game=0:start=1:newmm=mm: GOTO gameloop
  128.   END
  129.  
  130. enquire:
  131. PUT(75,80),YES,PSET:PUT(215,80),NO,PSET
  132. COLOR 3
  133. LOCATE 2,2:PRINT "Another Game.. Click on YES or NO"
  134. en1:
  135. GOSUB getcord
  136. IF py<81 OR py>92 THEN en1
  137. IF px>74 AND px<100 THEN GOSUB rescue:GOTO en2
  138. IF px>214 AND px<240 THEN GOSUB byebye:GOTO gameend
  139. GOTO en1
  140. en2:
  141. RETURN
  142.  
  143. byebye:
  144.  IF drop=2 THEN
  145.  rope=250
  146.   FOR j=49 TO 143
  147.   dm=dm+1
  148.   rope=rope-1
  149.   PUT(147,dm),l3,PSET
  150.   PSET(rope,103),0
  151.   FOR del=1 TO 20:NEXT
  152.   GOSUB fall
  153.   NEXT
  154.   FOR j=144 TO 241
  155.   PSET(154,j-41),0
  156.   FOR del=1 TO 20:NEXT
  157.   NEXT
  158.   GOSUB fall
  159.  END IF
  160.  IF drop=1 THEN
  161.  rope=60
  162.   FOR j=49 TO 143
  163.   dm=dm+1
  164.   rope=rope+1
  165.   PUT(148,dm),r3,PSET
  166.   PSET(rope,103),0
  167.   FOR del=1 TO 20:NEXT
  168.   GOSUB fall
  169.   NEXT
  170.   FOR j=144 TO 241
  171.   PSET(155,j-41),0
  172.   FOR del=1 TO 20:NEXT
  173.   NEXT
  174.   GOSUB fall
  175.  END IF
  176. FOR del=1 TO 5000:NEXT
  177. RETURN
  178.  
  179. gameend:
  180. CLS
  181. LOCATE 10,5:PRINT "HOPE YOU ENJOYED TUG O WORD !"
  182. END
  183. RETURN
  184.  
  185. rescue:
  186. GOSUB rubout
  187. LOCATE 2,2:PRINT "Same Players?..Click on YES or NO"
  188. re1:
  189. samenames=0
  190. GOSUB getcord
  191. IF py<81 OR py>92 THEN re1
  192. IF px>74 AND px<100 THEN samenames=1:GOTO re2
  193. IF px>214 AND px<240 THEN samenames=0:GOTO re2
  194. GOTO re1
  195. re2:
  196. j=50
  197.  IF drop=2 THEN
  198.  cc=0
  199.   FOR k=1 TO 48
  200.   j=j-1
  201.   cc=cc+1:IF cc=3 THEN cc=1
  202.   dm=dm-1
  203.   PUT(147,dm),l3,PSET
  204.   LINE(147,dm+21)-(162,dm+21),0
  205.   x2=x2+1
  206.   IF cc=1 THEN PUT(x2,92),r2,PSET :ELSE PUT(x2,92),r4,PSET
  207.   FOR del=1 TO 20:NEXT
  208.   GOSUB fall
  209.   NEXT
  210.  PUT(x2,92),r1,PSET
  211.  LINE(147,105)-(161,130),0,bf
  212.  PUT(140,92),l1,PSET
  213.  END IF
  214.   IF drop=1 THEN
  215.   cc=0
  216.    FOR k=1 TO 48
  217.    j=j-1
  218.    cc=cc+1:IF cc=3 THEN cc=1
  219.    dm=dm-1
  220.    PUT(148,dm),r3,PSET
  221.    LINE(147,dm+21)-(162,dm+21),0
  222.    x1=x1-1
  223.    IF cc=1 THEN PUT(x1,92),l2,PSET :ELSE PUT(x1,92),l4,PSET
  224.    FOR del=1 TO 20:NEXT
  225.    GOSUB fall
  226.    NEXT
  227.   PUT(x1,92),l1,PSET
  228.   LINE(147,105)-(161,130),0,bf
  229.   PUT(155,92),r1,PSET
  230.  END IF
  231. FOR del=1 TO 4000:NEXT
  232. RETURN
  233.  
  234. dropman:
  235. GOSUB rubout
  236.  IF drop=2 THEN
  237.  LINE(148,92)-(159,103),0,bf
  238.  LINE(155,103)-(160,103),5
  239.  PUT(147,104),l3,PSET
  240.  dm=105:cc=0
  241.   FOR j=1 TO 48
  242.   cc=cc+1:IF cc=3 THEN cc=1
  243.   dm=dm+1
  244.   PUT(147,dm),l3,PSET
  245.   x2=x2-1
  246.   IF cc=1 THEN PUT(x2,92),r2,PSET :ELSE PUT(x2,92),r4,PSET
  247. FOR del=1 TO 20:NEXT
  248.   GOSUB fall
  249.   NEXT
  250.  PUT(x2,92),r1,PSET
  251.  END IF
  252.  IF drop=1 THEN
  253.  LINE(148,92)-(162,104),0,bf
  254.  LINE(148,103)-(155,103),5
  255.  PUT(148,104),r3,PSET
  256.  dm=105:cc=0
  257.   FOR j=1 TO 48
  258.   cc=cc+1:IF cc=3 THEN cc=1
  259.   dm=dm+1
  260.   PUT(148,dm),r3,PSET
  261.   x1=x1+1
  262.   IF cc=1 THEN PUT(x1,92),l2,PSET :ELSE PUT(x1,92),l4,PSET
  263. FOR del=1 TO 20:NEXT
  264.   GOSUB fall
  265.   NEXT
  266.  PUT(x1,92),l1,PSET
  267.  END IF
  268. RETURN
  269.  
  270. checkword:
  271. ct=0
  272. FOR x=1 TO 10:check(x)=0:NEXT
  273. IF mm=1 THEN yy=1:sq=5 :ELSE yy=2:sq=25
  274. c$=CHR$(cr)
  275.  IF c$<>"*"THEN
  276.   FOR i=1 TO num(yy)
  277.   t$=MID$(word$(yy),i,1)
  278.    IF t$=c$ THEN
  279.    COLOR 2,1
  280.    LOCATE 21,sq+i-1:PRINT  CHR$(cr)
  281.    MID$(word$(mm),i,1)="0"
  282.    guessed(mm)=guessed(mm)+1
  283.    IF mm=1 THEN sc=2 :ELSE sc=-2
  284.    i=num(yy)+1
  285.    ok=1
  286.    GOSUB win
  287.    END IF
  288.   NEXT
  289.  IF ok=0 THEN GOSUB checkown
  290.  IF ok=0 THEN
  291.  IF mm=1 THEN sc=-1 :ELSE sc=1
  292.  GOSUB lose
  293.  END IF
  294. ok=0
  295. RETURN 
  296. END IF
  297.  IF c$="*" THEN
  298.  FOR i=1 TO num(yy)
  299.  t$= MID$(word$(yy),i,1)
  300.   IF t$=c$ THEN
  301.   check(i)=1
  302.   GOTO cw10
  303.   END IF
  304.  IF t$="0" THEN check(i)=0:GOTO cw10
  305.  check(i)=100   
  306.  cw10: 
  307.  NEXT
  308. s=0:f=0:l=0:p=0
  309.  FOR i=1 TO num(yy)
  310.  IF check(i)=100 THEN l=1
  311.  IF check(i)=0 AND s=1 THEN l=1
  312.  IF check(i)=1 AND l=0 THEN s=1
  313.  IF check(i)=1 AND l=1 THEN f=1
  314.  NEXT
  315. IF s=0 AND f=0 THEN GOSUB checkown:RETURN
  316. IF s=1 AND f=1 THEN p=FNr(2)
  317.  IF s=1 AND p<2 THEN
  318.  j=0:k=0
  319.   WHILE k=0
  320.   j=j+1
  321.   IF check(j)=1 THEN posas=j:k=1
  322.   WEND
  323.  END IF
  324.  IF f=1 AND p=2 OR f=1 AND s=0 THEN
  325.  j=num(yy)+1:k=0
  326.   WHILE k=0
  327.   j=j-1
  328.   IF check(j)=1 THEN posas=j:k=1
  329.   WEND
  330.  END IF  
  331. END IF
  332. MID$(word$(mm),posas,1)="0"
  333. guessed(mm)=guessed(mm)+1
  334. COLOR 2,1
  335. LOCATE 21,sq+posas-1:PRINT"*"
  336. IF mm=1 THEN sc=2: :ELSE sc=-2
  337. GOSUB win 
  338. RETURN
  339.  
  340. checkown:
  341. IF mm=1 THEN yy=2:sq=25 :ELSE yy=1:sq=5
  342.  IF c$<>"*"THEN
  343.   FOR i=1 TO num(yy)
  344.   t$=MID$(word$(yy),i,1)
  345.    IF t$=c$ THEN
  346.    COLOR 2,1
  347.    LOCATE 21,sq+i-1:PRINT  CHR$(cr)
  348.    MID$(word$(yy),i,1)="0"
  349.    guessed(yy)=guessed(yy)+1
  350.    IF mm=1 THEN sc=-2 :ELSE sc=2
  351.    i=num(yy)+1
  352.    ok=1
  353.    GOSUB lose
  354.    END IF
  355.   NEXT
  356.  RETURN 
  357. END IF
  358.  IF c$="*" THEN
  359.   FOR i=1 TO num(yy)
  360.   t$= MID$(word$(yy),i,1)
  361.    IF t$=c$ THEN
  362.    check(i)=1
  363.    GOTO co10
  364.    END IF
  365.   IF t$="0" THEN check(i)=0:GOTO co10
  366.   check(i)=100   
  367.   co10: 
  368.   NEXT
  369.  s=0:f=0:l=0:p=0
  370.   FOR i=1 TO num(yy)
  371.   IF check(i)=100 THEN l=1
  372.   IF check(i)=0 AND s=1 THEN l=1
  373.   IF check(i)=1 AND l=0 THEN s=1
  374.   IF check(i)=1 AND l=1 THEN f=1
  375.   NEXT
  376.  IF s=1 AND f=1 THEN p=FNr(2)
  377.   IF s=1 AND p<2 THEN
  378.   j=0:k=0
  379.    WHILE k=0
  380.    j=j+1
  381.    IF check(j)=1 THEN posas=j:k=1
  382.    WEND
  383.   END IF
  384.   IF f=1 AND p=2 OR f=1 AND s=0 THEN
  385.   j=num(yy)+1:k=0
  386.    WHILE k=0
  387.    j=j-1
  388.    IF check(j)=1 THEN posas=j:k=1
  389.    WEND
  390.    GOSUB lose
  391.   END IF
  392.  END IF
  393.  IF s=0 AND f=0 THEN
  394.  IF mm=1 THEN sc=-1 :ELSE sc=1
  395.  GOSUB lose
  396.  RETURN
  397.  END IF
  398. COLOR 2,1
  399. MID$(word$(yy),posas,1)="0"
  400. LOCATE 21,sq+posas-1:PRINT"*"
  401. guessed(yy)=guessed(yy)+1
  402. IF mm=1 THEN sc=-2 :ELSE sc=2  
  403. RETURN
  404.  
  405. handicap:
  406. hand=0
  407. GOSUB rubout
  408. PUT(75,80),la,PSET:PUT(215,80),ra,PSET
  409. COLOR 2,1
  410. LOCATE 2,2:PRINT "Set handicap. Move tug 'o war teams."
  411. LOCATE 3,2:PRINT "Click on left or right arrows."
  412. LOCATE 4,2:PRINT "Click on OK when handicap as required."
  413.  WHILE hand=0
  414.  ha1:
  415.  left=0:right=0
  416.  GOSUB getcord
  417.  IF py<81 OR py>92 THEN ha1
  418.  IF px>145 AND px<170 THEN hand=1
  419.   IF px>74 AND px<100 THEN
  420.    IF spot=18 THEN
  421.    BEEP:GOSUB rubout:LOCATE 2,2:PRINT "TOO FAR !"
  422.    FOR del=1 TO 6000:NEXT
  423.    GOTO ha1
  424.    END IF
  425.   GOSUB mover
  426.   END IF
  427.   IF px>214 AND px<240 THEN
  428.    IF spot=2 THEN
  429.    BEEP:GOSUB rubout:LOCATE 2,2:PRINT "TOO FAR !"
  430.    FOR del=1 TO 6000:NEXT
  431.    GOTO ha1
  432.    END IF
  433.   GOSUB movel
  434.   END IF
  435.  WEND
  436. LINE(75,80)-(95,92),0,bf:LINE(215,80)-(235,92),0,bf
  437. RETURN
  438.  
  439. mover:
  440. cc=0
  441.  FOR i=1 TO 7
  442.  cc=cc+1:IF cc=3 THEN cc=1
  443.  x1=x1-1:x2=x2-1
  444.  IF cc=1 THEN PUT(x1,92),l2,PSET:PUT(x2,92),r2,PSET
  445.  IF cc=2 THEN PUT(x1,92),l4,PSET:PUT(x2,92),r4,PSET
  446.  FOR j=1 TO 300:NEXT
  447.  NEXT
  448. x1=x1-1:x2=x2-1
  449. FOR j=1 TO 300:NEXT
  450. PUT(x1,92),l1,PSET:PUT(x2,92),r1,PSET
  451. spot=spot+1
  452. RETURN
  453.  
  454. movel:
  455. cc=0
  456.  FOR i=1 TO 7
  457.  cc=cc+1:IF cc=3 THEN cc=1
  458.  x1=x1+1:x2=x2+1
  459.  IF cc=1 THEN PUT(x1,92),l2,PSET:PUT(x2,92),r2,PSET
  460.  IF cc=2 THEN PUT(x1,92),l4,PSET:PUT(x2,92),r4,PSET
  461.  FOR j=1 TO 300:NEXT
  462.  NEXT
  463. x1=x1+1:x2=x2+1
  464. FOR j=1 TO 300:NEXT
  465. PUT(x1,92),l1,PSET:PUT(x2,92),r1,PSET
  466. spot=spot-1
  467. RETURN
  468.  
  469. rubout:
  470. LINE (1,1)-(320,42),1,bf
  471. RETURN
  472.  
  473. setword:
  474. GOSUB rubout
  475.  FOR mm=1 TO 2
  476.  onceagain:
  477.  ff=0:gg=0
  478.  IF mm=1 THEN cc=4:yy=2:qq=24:sq=25 :ELSE cc=5:yy=1:qq=4:sq=5
  479.  LOCATE 2,2
  480.  COLOR cc,1
  481.  PRINT nam$(mm);" Set word for ";nam$(yy)
  482.  LOCATE 3,2:PRINT "Make sure that ";nam$(yy);" can't see!"
  483.  LOCATE 4,2:PRINT "Use left button to select letters or *"
  484.  LOCATE 5,2:PRINT "OK when complete.(max 10 letters or *)"
  485.  flag=0:count=0
  486.   WHILE flag=0
  487.   sw1:
  488.   GOSUB getcord
  489.   GOSUB identify
  490.   IF mistake=1 THEN sw1
  491.   IF flag=1 THEN sw10
  492.   IF cr<>42 THEN ff=1
  493.   IF cr=42 AND ff=1 THEN gg=1
  494.    IF cr>42 AND gg=1 THEN
  495.    GOSUB rubout
  496.    BEEP
  497.    LOCATE 2,2:PRINT "You cannot use * in middle of word"
  498.    word$(yy)=""
  499.    FOR del=1 TO 10000:NEXT
  500.    IF mm=1 THEN zz=164 :ELSE zz=6
  501.    LINE(zz,150)-(zz+120,170),4,bf
  502.    GOSUB rubout
  503.    GOTO onceagain
  504.    END IF
  505.     IF cr=60 THEN
  506.     COLOR 2,4
  507.     LOCATE 21,qq:PRINT " "
  508.     count=count-1
  509.     word$(yy)=LEFT$(word$(yy),count)
  510.     qq=qq-1
  511.     IF count=0 THEN ff=0
  512.     GOTO sw1
  513.     END IF
  514.    word$(yy)=word$(yy)+CHR$(cr)
  515.    qq=qq+1:count=count+1
  516.     IF count>numletters THEN
  517.     BEEP
  518.     GOSUB rubout
  519.     LOCATE 2,2:PRINT "Too many letters"
  520.     word$(yy)=""
  521.     FOR del=1 TO 10000:NEXT
  522.     IF mm=1 THEN zz=162 :ELSE zz=6
  523.     LINE(zz,130)-(zz+120,170),4,bf
  524.     GOTO onceagain
  525.     END IF
  526.    LOCATE 21,qq:COLOR 2,1:PRINT CHR$(cr)
  527.   sw10:
  528.   WEND
  529.  num(yy)=LEN(word$(yy))
  530.  LOCATE 21,sq:PRINT STRING$(num(yy),".")
  531.  NEXT
  532. RETURN
  533.  
  534. letters:
  535. COLOR 6:LOCATE 7,7:FOR i= 65 TO 78:PRINT CHR$(i);SPC(1);:NEXT
  536. LOCATE 9,7:FOR i=79 TO 90:PRINT CHR$(i);SPC(1);:NEXT:PRINT CHR$(60);SPC(1);CHR$(42)
  537. LINE (43,44)-(268,59),7,b:LINE(43,59)-(268,74),7,b
  538. y=16:FOR i=1 TO 14:LINE (44+y,44)-(44+y,74),7:y=y+16:NEXT
  539. LINE (269,45)-(269,75),2:LINE(44,75)-(269,75),2
  540. LINE (270,46)-(270,76),2:LINE(45,76)-(270,76),2
  541. PUT(145,80),ok,PSET
  542. RETURN
  543.  
  544. getname:
  545. m=1
  546.  FOR x=1 TO 2
  547.  nam$(x)=""
  548.  NEXT
  549.  
  550. again:
  551. count=0
  552. IF m=2 THEN qq=21:cc=5 :ELSE qq=1:cc=4
  553. COLOR cc,1
  554. LOCATE 2,2:PRINT"Player number";m;"Please enter name.Use"
  555. LOCATE 3,2:PRINT "maximum nine letters." 
  556. LOCATE 4,2:PRINT "Use left mouse button. OK to finish."
  557. flag=0
  558.  WHILE flag=0
  559.  gn1:
  560.  GOSUB getcord
  561.  GOSUB identify 
  562.  IF mistake=1 THEN gn1
  563.  IF flag=1 THEN gn10
  564.   IF cr=60 THEN
  565.   COLOR 2,4
  566.   LOCATE 16,qq:PRINT " "
  567.   qq=qq-1:count=count-1
  568.   nam$(m)=LEFT$(nam$(m),count)
  569.   GOTO gn1
  570.   END IF
  571.  nam$(m)=nam$(m)+CHR$(cr)
  572.  qq=qq+1:LOCATE 16,qq:COLOR 2,1:PRINT CHR$(cr)
  573.  count=count+1
  574.   IF count>9 THEN
  575.   GOSUB rubout
  576.   LOCATE 2,2:PRINT "Too many letters."
  577.   IF m=1 THEN a=2 :ELSE a=22
  578.   COLOR 4,4
  579.   LOCATE 16,a:PRINT SPACE$(10)
  580.   nam$(m)=""
  581.   GOTO again
  582.   END IF
  583.  gn10:
  584.  WEND
  585. m=m+1:IF m<3 THEN again
  586. RETURN
  587.  
  588. getcord:
  589. WHILE MOUSE(0)<>0:WEND
  590. WHILE MOUSE(0)=0:WEND
  591. px=MOUSE(1):py=MOUSE(2)
  592. RETURN
  593.  
  594. identify:
  595. flag=0:mistake=0
  596. IF px>145 AND px<170 AND py>80 AND py<95 THEN flag=1:RETURN
  597. IF px<44 OR px>268 OR py<44 OR py>74 THEN mistake=1:RETURN
  598.  IF py>59 THEN
  599.  GOSUB lower
  600.  GOTO skip
  601.  END IF
  602. cr=INT(px/16):cr=cr+62
  603. skip:
  604. RETURN
  605.  
  606. lower:
  607. cr=INT(px/16)
  608. IF cr=15 THEN cr=60:GOTO pr
  609. IF cr=16 THEN cr=42:GOTO pr
  610. cr=cr+76
  611. pr:
  612. RETURN
  613.  
  614. instructions:
  615. CLS:COLOR 2
  616. LOCATE 3,1
  617. PRINT "1)Enter players names using the mouse."
  618. COLOR 5
  619. PRINT "2)Adjust position of the tug of war if"
  620. PRINT "  either player is to be handicapped."
  621. PRINT "  Click on the arrows to move the tug"
  622. PRINT "  of war."
  623. COLOR 6
  624. PRINT "3)Players in turn enter a word-maximum"
  625. PRINT "  10 letters. If both players agree 1"
  626. PRINT "  or more asterisks(*) can be used at"
  627. PRINT "  the beginning and/or end of the word"
  628. PRINT "  in order to disguise its length.These"
  629. PRINT "  are part of the maximum of 10 letters."
  630. COLOR 2
  631. PRINT "4)Players in turn try to guess letters"
  632. PRINT "  (or *s)in the word they have been set"
  633. PRINT "  Guessing correctly moves the tug of "
  634. PRINT "  war 2 places towards you. The letter"
  635. PRINT "  is shown in its correct place. If you"
  636. PRINT "  guess wrongly and the letter is in"
  637. PRINT "  your opponents word the letter will"
  638. PRINT "  be revealed in their word and the tug"
  639. PRINT "  of war will move 2 places away from "
  640. PRINT "  you.
  641. COLOR 5 
  642. PRINT "       PRESS SPACE BAR TO CONTINUE";
  643. WHILE INKEY$<>" ":WEND
  644. CLS
  645. PRINT "  IF you guess wrongly and the letter "
  646. PRINT "  is not in the word you set for your"
  647. PRINT "  opponent, the tug of war will move 1"
  648. PRINT "  place away from you."
  649. COLOR 6
  650. PRINT "5)Each occurence of the same letter (or"
  651. PRINT "  *) must be guessed seperately.
  652. COLOR 2
  653. PRINT "6)If either player succeeds in pulling"
  654. PRINT "  their opponent over the edge of the"
  655. PRINT "  cliff then they are the winner and a"
  656. PRINT "  fresh game is started. However if a"
  657. PRINT "  player guesses the whole of his word"
  658. PRINT "  before either player is pulled over,"
  659. PRINT "  new words are set and the game is"
  660. PRINT "  continued with the tug of war in the"
  661. PRINT "  same position."
  662. PRINT
  663. COLOR 5 
  664. PRINT "       PRESS SPACE BAR TO CONTINUE";
  665. WHILE INKEY$<>" ":WEND
  666. CLS
  667. RETURN
  668.  
  669. win:
  670. SOUND 520,4,120,1
  671. SOUND 660,4,120,1
  672. SOUND 780,4,120,1
  673. SOUND 1040,8,120,1
  674. RETURN
  675.  
  676. fall:
  677. 'FOR xx=1000 TO 700 STEP -10
  678. 'SOUND xx,1,120,0
  679. 'NEXT
  680. SOUND 1500-5*j,1,40,0
  681. RETURN
  682.  
  683. lose:
  684. FOR xx=300 TO 100 STEP-10
  685. SOUND xx,1,120,0
  686. NEXT
  687. RETURN  
  688. graphics:
  689. DIM ok(69)
  690. FOR i=0 TO 68:READ ok(i):NEXT
  691. DATA &h14,&hb,&h3,&hffff,&hf000,&h8071,&h9000,&hbf75
  692. DATA &h5000,&ha174,&hb000,&had75,&h7000,&had76,&hf000,&had75
  693. DATA &h7000,&ha174,&hb000,&hbf75,&h5000,&h8071,&h9000,&hffff
  694. DATA &hf000,&hffff,&hf000,&hffff,&hf000,&hc0fb,&hb000,&hdefb
  695. DATA &h7000,&hdefa,&hf000,&hdef9,&hf000,&hdefa,&hf000,&hdefb
  696. DATA &h7000,&hc0fb,&hb000,&hffff,&hf000,&hffff,&hf000,&hffff
  697. DATA &hf000,&h8071,&h9000,&hbf75,&h5000,&ha174,&hb000,&had75
  698. DATA &h7000,&had76,&hf000,&had75,&h7000,&ha174,&hb000,&hbf75
  699. DATA &h5000,&h8071,&h9000,&hffff,&hf000
  700.  
  701. DIM ra(69)
  702. FOR i=0 TO 68:READ ra(i):NEXT
  703. DATA &h14,&hb,&h3,&hffff,&hf000,&hfff1,&hf000,&hfff6
  704. DATA &hf000,&hfff5,&h7000,&h8004,&hb000,&hbffd,&h5000,&h8004
  705. DATA &hb000,&hfff5,&h7000,&hfff6,&hf000,&hfff1,&hf000,&hffff
  706. DATA &hf000,&hffff,&hf000,&hffff,&hf000,&hfff9,&hf000,&hfffa
  707. DATA &hf000,&hfffb,&h7000,&hc003,&hb000,&hfffb,&h7000,&hfffa
  708. DATA &hf000,&hfff9,&hf000,&hffff,&hf000,&hffff,&hf000,&hffff
  709. DATA &hf000,&hfff1,&hf000,&hfff6,&hf000,&hfff5,&h7000,&h8004
  710. DATA &hb000,&hbffd,&h5000,&h8004,&hb000,&hfff5,&h7000,&hfff6
  711. DATA &hf000,&hfff1,&hf000,&hffff,&hf000
  712.  
  713. DIM la(69)
  714. FOR i=0 TO 68:READ la(i):NEXT
  715. DATA &h14,&hb,&h3,&hffff,&hf000,&hf8ff,&hf000,&hf6ff
  716. DATA &hf000,&heaff,&hf000,&hd200,&h1000,&hafff,&hd000,&hd200
  717. DATA &h1000,&heaff,&hf000,&hf6ff,&hf000,&hf8ff,&hf000,&hffff
  718. DATA &hf000,&hffff,&hf000,&hffff,&hf000,&hf9ff,&hf000,&hf5ff
  719. DATA &hf000,&hedff,&hf000,&hd800,&h3000,&hedff,&hf000,&hf5ff
  720. DATA &hf000,&hf9ff,&hf000,&hffff,&hf000,&hffff,&hf000,&hffff
  721. DATA &hf000,&hf8ff,&hf000,&hf6ff,&hf000,&heaff,&hf000,&hd200
  722. DATA &h1000,&hafff,&hd000,&hd200,&h1000,&heaff,&hf000,&hf6ff
  723. DATA &hf000,&hf8ff,&hf000,&hffff,&hf000
  724. DIM YES(69)
  725. FOR i=0 TO 68:READ YES(i):NEXT
  726. DATA &h17,&hb,&h3,&hffff,&hfe00,&h8881,&h8200,&ha2bd
  727. DATA &h3a00,&h94a1,&h4600,&hc9a3,&h4600,&hebbd,&h3200,&heba1
  728. DATA &h8a00,&heba3,&h8a00,&hebbd,&h7200,&he381,&h600,&hffff
  729. DATA &hfe00,&hffff,&hfe00,&hffff,&hfe00,&hddc3,&hc600,&hebdf
  730. DATA &hbe00,&hf7df,&hbe00,&hf7c3,&hce00,&hf7df,&hf600,&hf7df
  731. DATA &hf600,&hf7c3,&h8e00,&hffff,&hfe00,&hffff,&hfe00,&hffff
  732. DATA &hfe00,&h8881,&h8200,&ha2bd,&h3a00,&h94a1,&h4600,&hc9a3
  733. DATA &h4600,&hebbd,&h3200,&heba1,&h8a00,&heba3,&h8a00,&hebbd
  734. DATA &h7200,&he381,&h600,&hffff,&hfe00
  735.  
  736. DIM NO(69)
  737. FOR i=0 TO 68:READ NO(i):NEXT
  738. DATA &h17,&hb,&h3,&hffff,&hfe00,&he388,&he00,&hebab
  739. DATA &hee00,&hedaa,&h2e00,&heaaa,&hae00,&he92a,&hae00,&heaaa
  740. DATA &hae00,&heb6a,&h2e00,&hebab,&hee00,&he388,&he00,&hffff
  741. DATA &hfe00,&hffff,&hfe00,&hffff,&hfe00,&hf7dc,&h1e00,&hf3dd
  742. DATA &hde00,&hf5dd,&hde00,&hf6dd,&hde00,&hf75d,&hde00,&hf79d
  743. DATA &hde00,&hf7dc,&h1e00,&hffff,&hfe00,&hffff,&hfe00,&hffff
  744. DATA &hfe00,&he388,&he00,&hebab,&hee00,&hedaa,&h2e00,&heaaa
  745. DATA &hae00,&he92a,&hae00,&heaaa,&hae00,&heb6a,&h2e00,&hebab
  746. DATA &hee00,&he388,&he00,&hffff,&hfe00
  747. DIM r1(66)
  748. FOR i=0 TO 65:READ r1(i):NEXT
  749. DATA &hF,&h15,&h3,&h0,&h0,&h300,&h680,&h380
  750. DATA &h380,&h780,&h7C0,&h640,&h660,&hE60,&hC0E0,&hFE0
  751. DATA &h7C0,&h7C0,&h6C0,&h6C0,&h0,&h0,&h0,&h0
  752. DATA &h0,&h3C0,&h3C0,&h7C0,&h3C0,&h380,&h0,&h0
  753. DATA &h180,&h180,&h180,&hFF00,&h0,&h0,&h0,&h0
  754. DATA &h0,&h440,&h440,&h440,&h1FE0,&h0,&h0,&h0
  755. DATA &h0,&h0,&h0,&h0,&h7C0,&h640,&h660,&hE60
  756. DATA &hE0,&hFE0,&h0,&h0,&h0,&h0,&h0,&h0
  757. DATA &h0,&h0 
  758. DIM r2(66)
  759. FOR i=0 TO 65:READ r2(i):NEXT
  760. DATA &hF,&h15,&h3,&h0,&h0,&h30,&h68,&h38
  761. DATA &h30,&h78,&hF8,&h198,&h338,&h678,&hF0F0,&hFE0
  762. DATA &h7C0,&h7C0,&h6C0,&hC0,&h0,&h0,&h0,&h0
  763. DATA &h0,&h3C,&h3C,&h7C,&h3C,&h38,&h0,&h0
  764. DATA &h60,&hC0,&h180,&hFF00,&h0,&h0,&h0,&h0
  765. DATA &h400,&h440,&h1E40,&h40,&h1E0,&h0,&h0,&h0
  766. DATA &h0,&h0,&h0,&h0,&hF8,&h198,&h338,&h678
  767. DATA &hF0,&hFE0,&h0,&h0,&h0,&h0,&h0,&h0
  768. DATA &h0,&h0
  769.  
  770. DIM r3(66)
  771. FOR i=0 TO 65:READ r3(i):NEXT
  772. DATA &hF,&h15,&h3,&h100,&h100,&h0,&h0,&h0
  773. DATA &h0,&h380,&h540,&h6C0,&h380,&h380,&h7C0,&h7C0
  774. DATA &h7C0,&h7C0,&h7C0,&h7C0,&h7C0,&h6C0,&h0,&h0
  775. DATA &h0,&h0,&h380,&h6C0,&hC60,&hBA0,&hC60,&hAA0
  776. DATA &h920,&h820,&h820,&h820,&h820,&h0,&h0,&h0
  777. DATA &h0,&h0,&h0,&h440,&h1EF0,&h100,&h100,&h0
  778. DATA &h0,&h0,&h0,&h380,&h540,&h6C0,&h380,&h0
  779. DATA &h7C0,&h7C0,&h7C0,&h7C0,&h7C0,&h7C0,&h0,&h0
  780. DATA &h0,&h0
  781.  
  782. DIM r4(66)
  783. FOR i=0 TO 65:READ r4(i):NEXT
  784. DATA &hF,&h15,&h3,&h0,&h0,&h30,&h68,&h38
  785. DATA &h30,&h78,&hF8,&h198,&h338,&h678,&hF0F0,&hFE0
  786. DATA &h7C0,&h7C0,&h6C0,&h600,&h0,&h0,&h0,&h0
  787. DATA &h0,&h3C,&h3C,&h7C,&h3C,&h38,&h0,&h0
  788. DATA &h60,&hC0,&h180,&hFF00,&h0,&h0,&h0,&h0
  789. DATA &h40,&h440,&h5E0,&h400,&h1E00,&h0,&h0,&h0
  790. DATA &h0,&h0,&h0,&h0,&hF8,&h198,&h338,&h678
  791. DATA &hF0,&hFE0,&h0,&h0,&h0,&h0,&h0,&h0
  792. DATA &h0,&h0 
  793. DIM l1(66)
  794. FOR i=0 TO 65:READ l1(i):NEXT
  795. DATA &hF,&h15,&h3,&h0,&h0,&h180,&h2C0,&h380
  796. DATA &h380,&h3C0,&h0,&h0,&h0,&h0,&h6,&h0
  797. DATA &h7C0,&h7C0,&h6C0,&h6C0,&h0,&h0,&h0,&h0
  798. DATA &h0,&h780,&h780,&h7C0,&h780,&h380,&h0,&h0
  799. DATA &h300,&h300,&h300,&h1FE,&h0,&h0,&h0,&h0
  800. DATA &h0,&h440,&h440,&h440,&hFF0,&h0,&h0,&h0
  801. DATA &h0,&h0,&h0,&h0,&h7C0,&h4C0,&hCC0,&hCE0
  802. DATA &hE00,&hFE0,&h0,&h0,&h0,&h0,&h0,&h0
  803. DATA &h0,&h0
  804. DIM l2(66)
  805. FOR i=0 TO 65:READ l2(i):NEXT
  806. DATA &hF,&h15,&h3,&h0,&h0,&h1800,&h2C00,&h3800
  807. DATA &h1800,&h3C00,&h0,&h0,&h0,&h0,&h1E,&h0
  808. DATA &h7C0,&h7C0,&h6C0,&h600,&h0,&h0,&h0,&h0
  809. DATA &h0,&h7800,&h7800,&h7C00,&h7800,&h3800,&h0,&h0
  810. DATA &hC00,&h600,&h300,&h1FE,&h0,&h0,&h0,&h0
  811. DATA &h40,&h440,&h4F0,&h400,&hF00,&h0,&h0,&h0
  812. DATA &h0,&h0,&h0,&h0,&h3E00,&h3300,&h3980,&h3CC0
  813. DATA &h1E00,&hFE0,&h0,&h0,&h0,&h0,&h0,&h0
  814. DATA &h0,&h0
  815.  
  816. DIM l3(66)
  817. FOR i=0 TO 65:READ l3(i):NEXT
  818. DATA &hF,&h15,&h3,&h100,&h100,&h0,&h0,&h0
  819. DATA &h0,&h380,&h540,&h6C0,&h380,&h380,&h0,&h0
  820. DATA &h0,&h0,&h0,&h0,&h7C0,&h6C0,&h0,&h0
  821. DATA &h0,&h0,&h380,&h6C0,&hC60,&hBA0,&hC60,&hAA0
  822. DATA &h920,&h820,&h820,&h820,&h820,&h0,&h0,&h0
  823. DATA &h0,&h0,&h0,&h440,&h1EF0,&h100,&h100,&h0
  824. DATA &h0,&h0,&h0,&h380,&h540,&h6C0,&h380,&h0
  825. DATA &h7C0,&h7C0,&h7C0,&h7C0,&h7C0,&h7C0,&h0,&h0
  826. DATA &h0,&h0
  827.  
  828. DIM l4(66)
  829. FOR i=0 TO 65:READ l4(i):NEXT
  830. RETURN
  831. DATA &hF,&h15,&h3,&h0,&h0,&h1800,&h2C00,&h3800
  832. DATA &h1800,&h3C00,&h0,&h0,&h0,&h0,&h1E,&h0
  833. DATA &h7C0,&h7C0,&h6C0,&hC0,&h0,&h0,&h0,&h0
  834. DATA &h0,&h7800,&h7800,&h7C00,&h7800,&h3800,&h0,&h0
  835. DATA &hC00,&h600,&h300,&h1FE,&h0,&h0,&h0,&h0
  836. DATA &h400,&h440,&hF40,&h40,&hF0,&h0,&h0,&h0
  837. DATA &h0,&h0,&h0,&h0,&h3E00,&h3300,&h3980,&h3CC0
  838. DATA &h1E00,&hFE0,&h0,&h0,&h0,&h0,&h0,&h0
  839. DATA &h0,&h0
  840.  
  841.  
  842.  
  843.