home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / amiga / misc / amoner01.dms / in.adf / knight.AMOS / knight.amosSourceCode
Encoding:
AMOS Source Code  |  1988-01-20  |  2.7 KB  |  150 lines

  1. Screen Open 0,640,200,8,Hires
  2. Curs Off : Cls 0 : Pen 2 : Paper 0
  3. Set Input 10,-1
  4. Open In 1,"Amoner001:Knight.txt"
  5. CHESSME=0
  6. Gosub PHASE0
  7. PHASE=0
  8. TEX_READ:
  9.   PHASE=PHASE+1
  10.   For LINE=LINE+1 To H
  11.     Line Input #1,LINE$
  12.     Print LINE$
  13.   Next LINE
  14.   If CHESSME=1 Then Gosub BOARD1
  15.   If CHESSME=2 Then Gosub BOARD2
  16.   If CHESSME=3 Then Gosub BOARD3
  17.   Repeat : Until Mouse Click
  18.   GT$="phase"+Str$(PHASE)-" "
  19.   Cls 0
  20.   Gosub GT$ : Goto TEX_READ
  21. PHASE0:
  22.   Locate 1,6 : H=8
  23. Return 
  24. PHASE1:
  25.   Locate 1,2 : H=25
  26. Return 
  27. PHASE2:
  28.   Locate 1,2 : H=42
  29. Return 
  30. PHASE3:
  31.   Locate 1,2 : H=61
  32. Return 
  33. PHASE4:
  34.   Locate 1,2 : H=75
  35. Return 
  36. PHASE5:
  37.   Locate 1,1 : H=96
  38.   Inc CHESSME
  39. Return 
  40. PHASE6:
  41.   Locate 1,1 : H=120
  42.   Inc CHESSME
  43. Return 
  44. PHASE7:
  45.   Locate 1,1 : H=135
  46.   Inc CHESSME
  47. Return 
  48. PHASE8:
  49.   Locate 1,1 : H=155
  50.   Inc CHESSME
  51. Return 
  52. PHASE9:
  53.   Close 1
  54.   Run "Amoner001:Start.amos"
  55. BOARD1:
  56.   CHESSBOARD[360,12]
  57.   KNIGHT[445,43]
  58.   MARKMOVES[6,4,445,43]
  59.   Print At(51,12);"Figure 1"
  60.   CHESSBOARD[32,100]
  61.   KNIGHT[37,171]
  62.   MARKMOVES[1,8,37,170]
  63.   Print At(10,23);"Figure 2"
  64. Return 
  65. BOARD2:
  66.   CHESSBOARD[150,60]
  67.   KNIGHT[235,90]
  68.   MARKMOVES[6,4,235,90]
  69.   For X=1 To 8
  70.     Ink 7,0
  71.     If X=5 Then Ink 2,0
  72.     Draw 140+(X*20),50 To 140+(X*20),150
  73.     Text 128+(X*20),160,(Str$(X-5))
  74.     Ink 7,0
  75.     If X=4 Then Ink 2,0
  76.     Draw 130,55+(X*10) To 320,55+(X*10)
  77.     Text 110,58+(X*10),(Str$(4-X))
  78.   Next X
  79.   Print At(1,15);"Figure 3"
  80. Return 
  81. BOARD3:
  82.   CHESSBOARD[200,120]
  83.   KNIGHT[348,131]
  84.   MARKBOARD[200,120]
  85.   Print At(60,16);"Figure 4"
  86. Return 
  87. Procedure CHESSBOARD[X,Y]
  88. C=1
  89. For X1=0 To 140 Step 20
  90.   For Y1=0 To 70 Step 10
  91.     C=3-C
  92.     Ink C
  93.     Bar X+X1,Y+Y1 To X+X1+19,Y+Y1+9
  94.   Next Y1
  95.   C=3-C
  96. Next X1
  97. End Proc
  98. Procedure KNIGHT[X,Y]
  99. Restore KNIGHT_SHAPE
  100. For Y1=0 To 7
  101.   For X1=0 To 7
  102.     Read B_OR_W
  103.     If B_OR_W=1 Then Plot X+X1,Y+Y1,0
  104.   Next X1
  105. Next Y1
  106. KNIGHT_SHAPE:
  107. Data 0,0,0,0,0,0,0,0
  108. Data 0,0,0,1,0,0,0,0
  109. Data 0,0,1,1,1,0,0,0
  110. Data 0,1,1,1,1,0,0,0
  111. Data 0,0,0,1,1,0,0,0
  112. Data 0,0,1,1,1,0,0,0
  113. Data 0,1,1,1,1,1,0,0
  114. Data 0,0,0,0,0,0,0,0
  115. End Proc
  116. Procedure MARKMOVES[XS,YS,X,Y]
  117.   Restore CORDS
  118.   For SET=1 To 8
  119.     Read XC,YC
  120.     If(XS+XC)>0 and(XS+XC)<9 and(YS+YC)>0 and(YS+YC)<9
  121.       Ink 6
  122.       Circle 5+X+(XC*20),4+Y+(YC*10),3
  123.       Paint X+(XC*20)+5,Y+(YC*10)+4
  124.     End If 
  125.   Next SET
  126. CORDS:
  127. Data 1,-2,2,-1,2,1,1,2,-1,2,-2,1,-2,-1,-1,-2
  128. End Proc
  129. Procedure MARKBOARD[X,Y]
  130. Restore MARKS
  131.   For Y1=1 To 8
  132.     For X1=1 To 8
  133.       Read MARK
  134.       If MARK=1
  135.         Ink 6
  136.         Circle X+(X1*20)-10,Y+(Y1*10)-5,3
  137.         Paint X+(X1*20)-10,Y+(Y1*10)-5
  138.       End If 
  139.     Next X1
  140.   Next Y1
  141. MARKS:
  142. Data 1,1,1,0,1,1,1,1
  143. Data 1,1,1,1,1,0,1,0
  144. Data 1,1,1,1,1,1,1,1
  145. Data 1,0,0,1,1,1,1,1
  146. Data 1,1,1,1,1,1,1,1
  147. Data 1,1,1,1,1,1,1,1
  148. Data 1,1,1,1,1,1,1,1
  149. Data 1,1,1,1,1,1,1,0
  150. End Proc