home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga ACS 1997 #2
/
amigaacscoverdisc
/
amigascene
/
diskmagazines
/
nextlife
/
5.dms
/
5.adf
/
AMOS
/
DRZEWA.AMOS
/
DRZEWA.amosSourceCode
Wrap
AMOS Source Code
|
1997-01-09
|
2KB
|
124 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 poszczegulnych 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
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