home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1997 #2 / amigaacscoverdisc / amigascene / diskmagazines / nextlife / 5.dms / 5.adf / AMOS / LOGO.AMOS / LOGO.amosSourceCode
AMOS Source Code  |  1997-01-09  |  3KB  |  156 lines

  1. '
  2. '      SSS FFF AAA M   M     
  3. '      S   F   A A MM MM 
  4. '      SSS FF  AAA M M M 
  5. '        S F   A A M   M 
  6. '      SSS F   A A M   M 
  7. '
  8. '      SFAM     03.02.1992 
  9. '
  10. '                        NEW LIFE nr 5  .
  11. '     Logo w AMOS Basic .  Opis poszczegolnych procedur jest w 
  12. '     artykule AMOS 3D.  
  13. '
  14. '
  15. '
  16. Global LM,LP,LX#,LY#,LXX#,LYY#
  17. Procedure LHOME
  18. Gr Locate 160,100 : LX#=160 : LY#=100
  19. LM=0
  20. End Proc
  21. Procedure OBRA[A#,YY#]
  22. Rem     SFAM obrot o x stopni
  23. Degree 
  24. Rem poczatek prostej 
  25. X#=0 : Y#=0
  26. Rem koniec prostej 
  27. XX#=0 : YY#=-YY#
  28. Rem punkt obrotu 
  29. X0#=0 : Y0#=0
  30. Rem co ile stopni rysowac punkt
  31. B#=A#
  32. CO#=Cos(B#) : SI#=Sin(B#)
  33. XXR#=X0#+((XX#-X0#)*CO#)+((YY#-Y0#)*SI#)
  34. YYR#=Y0#+((YY#-Y0#)*CO#)-((XX#-X0#)*SI#)
  35. LXX#=-XXR# : LYY#=YYR#
  36. End Proc
  37. Procedure RT[X]
  38. LM=LM+X
  39. If LM>360 Then LM=LM-360
  40. End Proc
  41. Procedure LT[X]
  42. LM=LM-X
  43. If LM<0 Then LM=360+LM
  44. End Proc
  45. Procedure FD[X]
  46. OBRA[LM,X]
  47. LX#=LX#+LXX# : LY#=LY#+LYY#
  48. TX=LX# : TX#=LX#-TX : If TX#>0.5 Then LX=LX#+1 Else LX=LX#
  49. TX=LY# : TX#=LY#-TX : If TX#>0.5 Then LY=LY#+1 Else LY=LY#
  50. If LP=1
  51. Gr Locate LX,LY
  52. Else 
  53. Draw , To LX,LY
  54. End If 
  55. End Proc
  56. Procedure BK[X]
  57. OBRA[LM,-X]
  58. LX#=LX#+LXX# : LY#=LY#+LYY#
  59. TX=LX# : TX#=LX#-TX : If TX#>0.5 Then LX=LX#+1 Else LX=LX#
  60. TX=LY# : TX#=LY#-TX : If TX#>0.5 Then LY=LY#+1 Else LY=LY#
  61. If LP=1
  62. Gr Locate LX,LY
  63. Else 
  64. Draw , To LX,LY
  65. End If 
  66. End Proc
  67. Procedure PD
  68. LP=0
  69. End Proc
  70. Procedure PU
  71. LP=1
  72. End Proc
  73. Procedure SETPOS[LX#,LY#]
  74. Gr Locate LX#,LY#
  75. End Proc
  76. Procedure SETH[LP]
  77. O:
  78. If LP>360 Then LP=LP-360 : Goto O
  79. If LP<0 Then LP=360+LP : Goto O
  80. End Proc
  81. Procedure KWADRAT[R]
  82. For X=1 To 4
  83. FD[R] : RT[90]
  84. Next X
  85. End Proc
  86. Procedure DRZEWO[STO,ROZ,KAT]
  87. KWADRAT[ROZ]
  88. If STO=0 Then Pop Proc
  89. FD[ROZ] : LT[KAT]
  90. DRZEWO[STO-1,ROZ*Cos(KAT),KAT]
  91. RT[90] : FD[ROZ*Sin(KAT)]
  92. DRZEWO[STO-1,ROZ*Cos(KAT),KAT]
  93. BK[ROZ*Sin(KAT)] : LT[90-KAT]
  94. BK[ROZ]
  95. End Proc
  96. Procedure DRZEWO2[STO#]
  97. SETPOS[0,198]
  98. RT[90] : FD[115] : LT[90]
  99. DRZEWOL[STO#,30,25+Rnd(41)]
  100. LT[90] : FD[110]
  101. End Proc
  102. Procedure DRZEWOL[STO#,ROZ#,KAT#]
  103. If STO#=0
  104. FD[ROZ#] : RT[90] : FD[ROZ#] : RT[90] : FD[ROZ#]
  105. Pop Proc
  106. End If 
  107. FD[ROZ#] : LT[KAT#]
  108. DRZEWOL[STO#-1,ROZ#*Cos(KAT#),25+Rnd(41)]
  109. LT[90]
  110. DRZEWOL[STO#-1,ROZ#*Sin(KAT#),25+Rnd(41)]
  111. LT[90-KAT#] : FD[ROZ#]
  112. End Proc
  113. Procedure TROJKAT[BOK]
  114. For T=1 To 3
  115. FD[BOK] : RT[120]
  116. Next T
  117. End Proc
  118. Procedure ZAM[ROZ]
  119. PU : RT[30] : FD[ROZ/2] : PD
  120. Paint LXX#,LYY#,0
  121. PU : BK[ROZ/2] : LT[30] : PD
  122. End Proc
  123. Procedure DYWAN[STO,ROZ]
  124. If STO=0
  125. TROJKAT[ROZ]
  126. Pop Proc
  127. End If 
  128. TROJKAT[ROZ]
  129. For X=1 To 3
  130. DYWAN[STO-1,ROZ/2]
  131. FD[ROZ]
  132. RT[120]
  133. Next X
  134. ZAM[ROZ]
  135. End Proc
  136. LHOME
  137. For Y=1 To 2 : For X=1 To 4 : KWADRAT[50] : LT[90] : Wait 10 : Next X : LT[45] : Next Y
  138. Wait 50
  139. For X=1 To 180 : KWADRAT[50] : RT[2] : Next X : Wait 50 : Cls 
  140. LHOME : SETPOS[100,180]
  141. DYWAN[5,150] : Wait 50 : Cls 
  142. Centre "DRZEWO Ver 1.0"
  143. LHOME : SETPOS[160,200]
  144. DRZEWO[5,30,45]
  145. Wait 50
  146. Cls : Centre "DRZEWO Ver 1.1" : LHOME : SETPOS[160,200]
  147. DRZEWO[5,30,39]
  148. For X=1 To 11
  149. Wait 50 : Cls 
  150. Print "            DRZEWO Ver 2.";X
  151. If X>7 Then Centre "Prosze czekac"
  152. LHOME : DRZEWO2[X]
  153. Next X
  154. Wait 50 : Cls 
  155. LHOME
  156. DRZEWO2[15]