home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga ACS 1997 #2
/
amigaacscoverdisc
/
amigascene
/
diskmagazines
/
nextlife
/
5.dms
/
5.adf
/
AMOS
/
LOGO.AMOS
/
LOGO.amosSourceCode
Wrap
AMOS Source Code
|
1997-01-09
|
3KB
|
156 lines
'
' SSS FFF AAA M M
' S F A A MM MM
' SSS FF AAA M M M
' S F A A M M
' SSS F A A M M
'
' SFAM 03.02.1992
'
' NEW LIFE nr 5 .
' Logo w AMOS Basic . Opis poszczegolnych procedur jest w
' artykule AMOS 3D.
'
'
'
Global LM,LP,LX#,LY#,LXX#,LYY#
Procedure LHOME
Gr Locate 160,100 : LX#=160 : LY#=100
LM=0
End Proc
Procedure OBRA[A#,YY#]
Rem SFAM obrot o x stopni
Degree
Rem poczatek prostej
X#=0 : Y#=0
Rem koniec prostej
XX#=0 : YY#=-YY#
Rem punkt obrotu
X0#=0 : Y0#=0
Rem co ile stopni rysowac punkt
B#=A#
CO#=Cos(B#) : SI#=Sin(B#)
XXR#=X0#+((XX#-X0#)*CO#)+((YY#-Y0#)*SI#)
YYR#=Y0#+((YY#-Y0#)*CO#)-((XX#-X0#)*SI#)
LXX#=-XXR# : LYY#=YYR#
End Proc
Procedure RT[X]
LM=LM+X
If LM>360 Then LM=LM-360
End Proc
Procedure LT[X]
LM=LM-X
If LM<0 Then LM=360+LM
End Proc
Procedure FD[X]
OBRA[LM,X]
LX#=LX#+LXX# : LY#=LY#+LYY#
TX=LX# : TX#=LX#-TX : If TX#>0.5 Then LX=LX#+1 Else LX=LX#
TX=LY# : TX#=LY#-TX : If TX#>0.5 Then LY=LY#+1 Else LY=LY#
If LP=1
Gr Locate LX,LY
Else
Draw , To LX,LY
End If
End Proc
Procedure BK[X]
OBRA[LM,-X]
LX#=LX#+LXX# : LY#=LY#+LYY#
TX=LX# : TX#=LX#-TX : If TX#>0.5 Then LX=LX#+1 Else LX=LX#
TX=LY# : TX#=LY#-TX : If TX#>0.5 Then LY=LY#+1 Else LY=LY#
If LP=1
Gr Locate LX,LY
Else
Draw , To LX,LY
End If
End Proc
Procedure PD
LP=0
End Proc
Procedure PU
LP=1
End Proc
Procedure SETPOS[LX#,LY#]
Gr Locate LX#,LY#
End Proc
Procedure SETH[LP]
O:
If LP>360 Then LP=LP-360 : Goto O
If LP<0 Then LP=360+LP : Goto O
End Proc
Procedure KWADRAT[R]
For X=1 To 4
FD[R] : RT[90]
Next X
End Proc
Procedure DRZEWO[STO,ROZ,KAT]
KWADRAT[ROZ]
If STO=0 Then Pop Proc
FD[ROZ] : LT[KAT]
DRZEWO[STO-1,ROZ*Cos(KAT),KAT]
RT[90] : FD[ROZ*Sin(KAT)]
DRZEWO[STO-1,ROZ*Cos(KAT),KAT]
BK[ROZ*Sin(KAT)] : LT[90-KAT]
BK[ROZ]
End Proc
Procedure DRZEWO2[STO#]
SETPOS[0,198]
RT[90] : FD[115] : LT[90]
DRZEWOL[STO#,30,25+Rnd(41)]
LT[90] : FD[110]
End Proc
Procedure DRZEWOL[STO#,ROZ#,KAT#]
If STO#=0
FD[ROZ#] : RT[90] : FD[ROZ#] : RT[90] : FD[ROZ#]
Pop Proc
End If
FD[ROZ#] : LT[KAT#]
DRZEWOL[STO#-1,ROZ#*Cos(KAT#),25+Rnd(41)]
LT[90]
DRZEWOL[STO#-1,ROZ#*Sin(KAT#),25+Rnd(41)]
LT[90-KAT#] : FD[ROZ#]
End Proc
Procedure TROJKAT[BOK]
For T=1 To 3
FD[BOK] : RT[120]
Next T
End Proc
Procedure ZAM[ROZ]
PU : RT[30] : FD[ROZ/2] : PD
Paint LXX#,LYY#,0
PU : BK[ROZ/2] : LT[30] : PD
End Proc
Procedure DYWAN[STO,ROZ]
If STO=0
TROJKAT[ROZ]
Pop Proc
End If
TROJKAT[ROZ]
For X=1 To 3
DYWAN[STO-1,ROZ/2]
FD[ROZ]
RT[120]
Next X
ZAM[ROZ]
End Proc
LHOME
For Y=1 To 2 : For X=1 To 4 : KWADRAT[50] : LT[90] : Wait 10 : Next X : LT[45] : Next Y
Wait 50
For X=1 To 180 : KWADRAT[50] : RT[2] : Next X : Wait 50 : Cls
LHOME : SETPOS[100,180]
DYWAN[5,150] : Wait 50 : Cls
Centre "DRZEWO Ver 1.0"
LHOME : SETPOS[160,200]
DRZEWO[5,30,45]
Wait 50
Cls : Centre "DRZEWO Ver 1.1" : LHOME : SETPOS[160,200]
DRZEWO[5,30,39]
For X=1 To 11
Wait 50 : Cls
Print " DRZEWO Ver 2.";X
If X>7 Then Centre "Prosze czekac"
LHOME : DRZEWO2[X]
Next X
Wait 50 : Cls
LHOME
DRZEWO2[15]