aprenda aajuda
ignore[******************************************************************************************]
ignore[****  a sequncia de execuo destes programas : escher, pcomposio,ajustar, *]
ignore[****  pquadrado, pconstruo, pfigura, pconstruo, pmosaico, pcomposio          *]
ignore[****  conforme o modelo escolhido  acrescentado o n do mesmo no final dos       *]
ignore[****  nomes dos programas. Ex.: pquadrado1,pconstruo1                                      *]
ignore[******************************************************************************************]
fim

aprenda ajustar
seno mostrecaixamarcao "mr1 [at] [dt]
seno mostrecaixamarcao "mr2 [atr  "VC 1] [atr  "VC 0]
ignore[******************************************************************************************]
ignore[****  a varivel VC  para visualizar ou no a construo do mosaico                      *]
ignore[******************************************************************************************]
se soiguais [rotao-1] selecionecaixalistagem "lis1 [atribua "tipomodelo 1]
se soiguais [rotao-2] selecionecaixalistagem "lis1 [atribua "tipomodelo 2]
se soiguais [translao-1] selecionecaixalistagem "lis1 [atribua "tipomodelo 3]
se soiguais [translao-2] selecionecaixalistagem "lis1 [atribua "tipomodelo 4]
FCOR
atr "PM  0
atr "AI 90
ignore[******************************************************************************************]
ignore[****     a varivel acima  de vital importncia, pois evita a repetio da execuo *]
ignore[****     dos programas em loop quando  finalizado o mosaico e volta para a          *]
ignore[****     janela principal dos menus ( ao finalizar o mosaico  atribudo valor 1         *]
ignore[******************************************************************************************]
se :tipomodelo=1 [pquadrado1]
se :tipomodelo=2 [pquadrado2]
se :tipomodelo=3 [pquadrado3]
se :tipomodelo=4 [pquadrado4]
pcomposio
fim

aprenda escher
vrotule
ignore[******************************************************************************************]
ignore[****                   vrotule faz tela de apresentao do projeto                                       *]
ignore[******************************************************************************************]
fim

aprenda FADCORES
ignore[******************************************************************************************]
ignore[****   funo adiciona cores na caixa listagem do pcomposio                                *]
ignore[******************************************************************************************]
adicionenacaixalistagem "lis2  "preto
adicionenacaixalistagem "lis2  "azul
adicionenacaixalistagem "lis2  "verde
adicionenacaixalistagem "lis2  "ciano
adicionenacaixalistagem "lis2  "vermelho
adicionenacaixalistagem "lis2  "roxo
adicionenacaixalistagem "lis2  "marrom
adicionenacaixalistagem "lis2  "cinzaclaro
adicionenacaixalistagem "lis2  "cinzaescuro
adicionenacaixalistagem "lis2  "verdegua
adicionenacaixalistagem "lis2  "verdeclaro
adicionenacaixalistagem "lis2  "cianoclaro
adicionenacaixalistagem "lis2  "vermelhoescuro
adicionenacaixalistagem "lis2  "rosachoque
adicionenacaixalistagem "lis2  "amarelo
adicionenacaixalistagem "lis2  "branco

adicionenacaixalistagem "lis3  "preto
adicionenacaixalistagem "lis3  "azul
adicionenacaixalistagem "lis3  "verde
adicionenacaixalistagem "lis3  "ciano
adicionenacaixalistagem "lis3  "vermelho
adicionenacaixalistagem "lis3  "roxo
adicionenacaixalistagem "lis3  "marrom
adicionenacaixalistagem "lis3  "cinzaclaro
adicionenacaixalistagem "lis3  "cinzaescuro
adicionenacaixalistagem "lis3  "verdegua
adicionenacaixalistagem "lis3  "verdeclaro
adicionenacaixalistagem "lis3  "cianoclaro
adicionenacaixalistagem "lis3  "vermelhoescuro
adicionenacaixalistagem "lis3  "rosachoque
adicionenacaixalistagem "lis3  "amarelo
adicionenacaixalistagem "lis3  "branco
FIM

aprenda FCOR
ignore[******************************************************************************************]
ignore[**** funo adiciona opes/condies  de cores no programa ajuste                      *]
ignore[******************************************************************************************]
se soiguais [preto] selecionecaixalistagem "lis2 [atribua "VCOR1 0]
se soiguais [azul] selecionecaixalistagem "lis2 [atribua "VCOR1 1]
se soiguais [verde] selecionecaixalistagem "lis2 [atribua "VCOR1 2]
se soiguais [ciano] selecionecaixalistagem "lis2 [atribua "VCOR1 3]
se soiguais [vermelho] selecionecaixalistagem "lis2 [atribua "VCOR1 4]
se soiguais [roxo] selecionecaixalistagem "lis2 [atribua "VCOR1 5]
se soiguais [marrom] selecionecaixalistagem "lis2 [atribua "VCOR1 6]
se soiguais [cinzaclaro] selecionecaixalistagem "lis2 [atribua "VCOR1 7]
se soiguais [cinzaescuro] selecionecaixalistagem "lis2 [atribua "VCOR1 8]
se soiguais [verdegua] selecionecaixalistagem "lis2 [atribua "VCOR1 9]
se soiguais [verdeclaro] selecionecaixalistagem "lis2 [atribua "VCOR1 10]
se soiguais [cianoclaro] selecionecaixalistagem "lis2 [atribua "VCOR1 11]
se soiguais [vermelhoescuro] selecionecaixalistagem "lis2 [atribua "VCOR1 12]
se soiguais [rosachoque] selecionecaixalistagem "lis2 [atribua "VCOR1 13]
se soiguais [amarelo] selecionecaixalistagem "lis2 [atribua "VCOR1 14]
se soiguais [branco] selecionecaixalistagem "lis2 [atribua "VCOR1 15]

se soiguais [preto] selecionecaixalistagem "lis3 [atribua "VCOR2 0]
se soiguais [azul] selecionecaixalistagem "lis3 [atribua "VCOR2 1]
se soiguais [verde] selecionecaixalistagem "lis3 [atribua "VCOR2 2]
se soiguais [ciano] selecionecaixalistagem "lis3 [atribua "VCOR2 3]
se soiguais [vermelho] selecionecaixalistagem "lis3 [atribua "VCOR2 4]
se soiguais [roxo] selecionecaixalistagem "lis3 [atribua "VCOR2 5]
se soiguais [marrom] selecionecaixalistagem "lis3 [atribua "VCOR2 6]
se soiguais [cinzaclaro] selecionecaixalistagem "lis3 [atribua "VCOR2 7]
se soiguais [cinzaescuro] selecionecaixalistagem "lis3 [atribua "VCOR2 8]
se soiguais [verdegua] selecionecaixalistagem "lis3 [atribua "VCOR2 9]
se soiguais [verdeclaro] selecionecaixalistagem "lis3 [atribua "VCOR2 10]
se soiguais [cianoclaro] selecionecaixalistagem "lis3 [atribua "VCOR2 11]
se soiguais [vermelhoescuro] selecionecaixalistagem "lis3 [atribua "VCOR2 12]
se soiguais [rosachoque] selecionecaixalistagem "lis3 [atribua "VCOR2 13]
se soiguais [amarelo] selecionecaixalistagem "lis3 [atribua "VCOR2 14]
se soiguais [branco] selecionecaixalistagem "lis3 [atribua "VCOR2 15]
fim

aprenda ffig4 :cf
ignore[cf=contador figura]
ul pd :VA1 pf :VD1 espere :V_ESPERA
pe :VA2 pf :VD2 espere :V_ESPERA
ignore[O PROCEDIMENTO  FAZ OS LADOS DO CORTE]
un pt :D2*2 pd :VA2-:VA1
SE :CF=2 [pf :L pe 90 pf  :L*2 pd 180]
se :CF=4 [PE 90 PARE]
ignore[FAZ A ROTAO DOS CATETOS]
ffig4 :CF+1
fim

aprenda FQUADRADO
ignore[******************************************************************************************]
ignore[****              funo cria o bloco bit inicial e faz o quadrado inicial                            *]
ignore[******************************************************************************************]
mudecp :VCP
un pt 100 pe 90 pf 100 ul
blocobit 205 205
un pt 100 pd 90 ul
atr "N 4
atr "L 100
ignore[faz o primeiro quadrado]
ul mudeel [2 2]
un mudexy -50 -35 ul
mudecl  :VCL
repita :N[pf :L espere 20 pd 360/:N]
espere 20
atr "C 1
fim

aprenda FRECBIT
ignore[******************************************************************************************]
ignore[****                            funo para recortar o bloco bit                                                 *]
ignore[******************************************************************************************]
un mudexy -100 -100 ul
recortebit 205 205
mudebit 80 80
un mudexy  220 045 ul
colebit
fim

aprenda mudecl :cor
atr "valido 0
se lista pri :cor [mudecll (pri :cor) atr "valido 1 atr "cor 16]
se lista :cor [mudecll (:cor) atr "valido 1]
se ou :cor = 0  :cor = "preto          [ mudecll ( lista 0 0 0 ) atr "valido 1]
se ou :cor = 1  :cor = "azul           [ mudecll ( lista 0 0 128 ) atr "valido 1]
se ou :cor = 2  :cor = "verde          [ mudecll ( lista 0 128 0 ) atr "valido 1]
se ou :cor = 3  :cor = "ciano          [ mudecll ( lista 0 128 128 ) atr "valido 1]
se ou :cor = 4  :cor = "vermelho       [ mudecll ( lista 255 0 0 ) atr "valido 1]
se ou :cor = 5  :cor = "roxo           [ mudecll ( lista 128 0 128 ) atr "valido 1]
se ou :cor = 6  :cor = "marrom         [ mudecll ( lista 128 64 0 ) atr "valido 1]
se ou :cor = 7  :cor = "cinzaclaro     [ mudecll ( lista 192 192 192 ) atr "valido 1]
se ou :cor = 8  :cor = "cinzaescuro    [ mudecll ( lista 128 128 128 ) atr "valido 1]
se ou :cor = 9  :cor = "verdegua      [ mudecll ( lista 128 255 255 ) atr "valido 1]
se ou :cor = 10 :cor = "verdeclaro     [ mudecll ( lista 0 255 0 ) atr "valido 1]
se ou :cor = 11 :cor = "cianoclaro     [ mudecll ( lista 0 255 255 ) atr "valido 1]
se ou :cor = 12 :cor = "vermelhoescuro [ mudecll ( lista 128 0 0  ) atr "valido 1]
se ou :cor = 13 :cor = "rosachoque     [ mudecll ( lista 255 0 255 ) atr "valido 1]
se ou :cor = 14 :cor = "amarelo        [ mudecll ( lista 255 255 0 ) atr "valido 1]
se ou :cor = 15 :cor = "branco         [ mudecll ( lista 255 255 255 ) atr "valido 1]
se :valido = 0 [esc [Est cor no  vlida!]]
fim

aprenda pcomposio
tat
criejanela "main "comp [Mosaicos de Escher] 0 0 160 160
crieesttico "comp "es1 [Modelos] 7 5 70 10
criecaixalistagem "comp "lis1 7 15 150 30
adicionenacaixalistagem "lis1 "rotao-1
adicionenacaixalistagem "lis1  "rotao-2
adicionenacaixalistagem "lis1  "translao-1
adicionenacaixalistagem "lis1  "translao-2
criecaixagrupo "comp "gp1 7 40 100 20
criecaixamarcao "comp "gp1 "mr1 [exibir tartaruga] 9 45 60 10
criecaixagrupo "comp "gp2 7 60 100 20
criecaixamarcao "comp "gp2 "mr2 [Ver Mosaico Bsico]  9 65 80 10
crieesttico "comp "es2 [Cor 1] 9 90 70 10
crieesttico "comp "es3 [Cor 2] 75 90 70 10
criecaixalistagem "comp "lis2 9 100 60 50
criecaixalistagem "comp "lis3 75 100 60 50
FADCORES
crieboto  "comp "bo1 [desenha] 123 45 32 10 [ajustar]
crieboto "comp "bo2 [sai] 123 65 32 10 [apaguejanela "comp tat maximize "Comandos]
fim

aprenda PCONSTRUO1 :N :L :C
se :PM=1 [PARE] 
se :C=1 [atr "VCOR "cianoclaro]
se :C=2 [atr "VCOR "cinzaclaro]
mudecl :VCOR
ignore[AI=ngulo interno do quadrado]
atr  "D2 (:L*raizq(2))/2
ignore[D2 = DIAGONAL DIVIDIDA POR DOIS]
se :C=1 [ul pd :AI*0.5   pf  :D2 espere 20 pe :AI pf :D2 espere 20]
se :C=2 [ul pd :AI*0.5  pf :D2/2 espere 20 pe :AI/2 pf :L/2 espere 20 pe :AI/2 pf :D2/2 espere 20]
ignore[faz os cortes no quadrado original]
pe :AI*1.5 pf 1 un pf  :L-1
ignore[posiciona tartaruga]
se :c=1 [pe :AI*0.5 ul pf :D2 espere 20 pe :AI pf :D2 espere 20]
se :c=2 [pe :AI*0.5 ul pf :D2/2 espere 20 pe :AI/2 pf :L/2 espere 20 pe :AI/2 pf :D2/2 espere 20] 
ignore[faz a rotao dos cortes]
pe :AI*1.5 pf 1 un  pf :L-1 espere 20
pd :AI*1.5 un pf :D2*2 espere 20 pd :AI*1.5
ignore[desloca a tartaruga ao ngulo oposto ao do quadrado]
se :C=2 [pfIGURA1 PARE]
PCONSTRUO1 :N :L :C+1
espere 100
FRECBIT
atr "c 1
atr "vgeral 1
PMOSAICO1 :c :vgeral
fim

aprenda PCONSTRUO2 :N :L :C
se :PM=1[pare]
se :C=1 [atr "VCOR "vermelho]
se :C=2 [atr "VCOR "cinzaescuro]
mudecl :VCOR
atr "VA1 :AI*0.3
atr "VA2 :AI*0.8 
ignore[AI=ANGulO INTERNO DO POLIGONO]
atr "VD1 raizq((potncia  (2*:L)/3 2)+ (potncia :L/3 2))
atr "VD2 raizq((potncia :L/3 2) + (potncia :L/3 2))
ignore[vd1= comprimento primeiro cateto vd2=segundo]
atr "D2 (:L*RAIZQ(2))/2
UL pd :VA1 pf :VD1 espere 20
ignore[PRIMEIRO CATETO] 
pe :VA2 pf :VD2 espere 20
ignore[seGUNDO CATETO]
ignore[O PROCEDIMENTO  FAZ OS LADOS DO CORTE]
pe :ai*1.5  un pf :L 
ignore[DESLOCA A TARTARUGA]
pe :AI-:VA1 UL pf :VD1 espere 20 pe :VA2 pf :VD2  espere 20
ignore[FAZ A ROTAO DOS CATETOS]
un pe :AI*0.5  pf :L  pd 180
se :C=2 [PFIGURA2  PARE]
PCONSTRUO2  :N :L :C+1
SE :PM = 1 [PARE]
espere 100
FRECBIT
atr "C  1
atr "VGERAL 1
PMOSAICO2 :C :VGERAL
fim

aprenda PCONSTRUO3 :N :L :C
se :PM=1 [PARE] 
se :C=1 [atr "VCOR "cinzaclaro]
se :C=2 [atr "VCOR "verdegua]
mudecl :VCOR
ignore[AI=ngulo interno do quadrado]
atr  "D2 (:L*raizq(2))/2
ignore[D2 = DIAGONAL DIVIDIDA POR DOIS]
se :C=1[ul mudecl  "cinzaclaro pd :AI*0.5 pf  :D2 espere 20 pe :AI pf :D2 espere 20]
se :C=1[un pt :d2*2 pd :AI*0.5]
se :C=1[ul pd :AI*0.5 pf  :D2 espere 20 pe :AI pf :D2 espere 20]
se :C=2 [ul mudecl  "cianoclaro pe :AI pf :D2/2 espere 20 pd :AI/2 pf :L/2 espere 20 pd :AI/2 pf :D2/2 espere 20]
se :C=2 [un pt :D2*2 pe :AI ul pf :D2/2 espere 20 pd :AI/2 pf :L/2 espere 20 pd :AI/2 pf :D2/2 espere 20]
ignore[faz os cortes no quadrado original]
se :C=2 [PFIGURA3 PARE]
PCONSTRUO3 :N :L :C+1
espere 100
FRECBIT
atr "c 1
atr "vgeral 1
PMOSAICO3 :c :vgeral
fim

aprenda PCONSTRUO4 :N :L :C
se :PM=1[pare]
se :C=1 [atr "VCOR "verdeclaro]
se :C=3 [atr "VCOR "cinzaescuro ]
mudecl :VCOR
atr "VA1 :AI*0.3
atr "VA2 :AI*0.8 
ignore[AI=ANGulO INTERNO DO POLIGONO]
atr "VD1 raizq((potncia  (2*:L)/3 2)+ (potncia :L/3 2))
atr "VD2 raizq((potncia :L/3 2) + (potncia :L/3 2))
ignore[vd1= comprimento primeiro cateto vd2=segundo]
atr "D2 (:L*RAIZQ(2))/2
ul pd :VA1 pf :VD1 espere 20
ignore[PRIMEIRO CATETO] 
pe :VA2 pf :VD2 espere 20
ignore[seGUNDO CATETO]
ignore[O PROCEDIMENTO  FAZ OS LADOS DO CORTE]
un pt :D2*2 pd :VA2-:VA1
SE :C=2 [pf :L pe 90 pf  :L*2 pd 180]
se :c=4  [un mudexy -50 -35 ul pe 90]
ignore[pe :ai*1.5  un pf :L ]
ignore[DESLOCA A TARTARUGA]
IGNORE[pe :AI-:VA1 UL pf :VD1 espere 20 pe :VA2 pf :VD2  espere 20]
ignore[FAZ A ROTAO DOS CATETOS]
ignore[un pe :AI*0.5  pf :L  pd 180]
se :C=4 [PFIGURA4  PARE]
PCONSTRUO4  :N :L :C+1
se :PM = 1 [PARE]
espere 100
FRECBIT
atr "C  1
atr "VGERAL 1
PMOSAICO4 :C :VGERAL
fim

aprenda pfigura1
ignore[AI=ngulo interno do polgono]
atr "D2 (:L*RAIZQ(2))/2
ignore[D2 = diagonal do quadrado divida por dois]
mudecl  14
ignore[o procedimento abaixo faz o contorno da figura nova criada]
ul mudeel [10 10] pd :AI*0.5 pf :D2 espere 20  pe :AI pf :D2 espere 20
pd :AI pf :D2/2 espere 20 pd :AI/2 pf  :L/2  espere 20 pd :AI/2 pf :D2/2 espere 20
pd :AI pf :D2/2 espere 20 pe :AI/2 pf :L/2 espere 20 pe :AI/2 pf :D2/2 espere 20
pd :AI pf :D2 espere 20 pd :AI pf :D2 espere 20 pd :AI*0.5
ignore[pd :AI*1.5 un pf :D2*2 pd :AI*1.5]
espere 200
fim

aprenda pfigura2
ignore[o procedimento abaixo faz o contorno da figura nova criada]
mudecl  1
ul mudeel [10 10]
repita 2[UL pd :VA1 pf :VD1 espere 20  pe :VA2 pf :VD2 espere 20 pd :ai pf :vd2 espere 20  pd :va2 pf :vd1 espere 20 pd :ai-:va1
espere 200
fim

aprenda pfigura3
atr "D2 (:L*RAIZQ(2))/2
ignore[D2 = diagonal do quadrado divida por dois]
mudecl "verdeclaro
ignore[o procedimento abaixo faz o contorno da figura nova criada]
ul mudeel [10 10] pd :AI  espere 200 pf :D2 espere 20  pe :AI pf :D2/2 espere 20
pd :AI*1.5  pf  :L/2  espere 20 pe :AI/2 pf :D2/2 espere 20
pd :AI pf :D2 espere 20 pd :AI pf :D2*1.5 espere 20 
 pd :AI/2 pf :L/2 espere 20 pd :AI/2 pf :D2/2 espere 20
pd :AI*1.5 un pf :L pe :AI
espere 200
fim

aprenda pfigura4
ignore[o procedimento abaixo faz o contorno da figura nova criada]
mudecl  1
ul mudeel [8 8]
ignore[repita 2[ul pd :VA1 at espere 200 pf :VD1 espere 20  pe :VA2 pf :VD2 espere 20 pd :ai pf :vd2 espere 20  pd :va2 pf :vd1 espere 20 pd :ai-:va1]
atr "cf 1
ATR "V_ESPERA 20 
ffig4 :cf
espere 200
fim

aprenda PMOSAICO1 :C :VGERAL 
se  :C=1 [atr "VCONT 0]
atr "VCONT :VCONT+1 
atr "L 40
atr "N 4
atr "D2 (:L*RAIZQ(2))/2
se :c=1 [un mudexy -250 80 ]
mudecl 0
ul mudeel [2 2]
ignore[os comandos abaixo fazem a nova figura reduzida para mosaico]
pd :AI*0.5 pf :D2 pe :AI pf :D2
pd :AI pf :D2/2 pd :AI/2 pf :L/2 pd :AI/2 pf :D2/2 pd :AI pf :D2/2 pe :AI/2 pf :L/2 pe :AI/2 pf :D2/2 pd :AI pf :D2 pd :AI pf :D2 pd :AI*0.5
pd 90 un pf 10 mudecp :VCOR1 pinte pf :L-10  pe 90 pf :L pd 90 ul
pd :AI*0.5 pf :D2/2 pe :AI/2 pf :L/2 pe :AI/2 pf :D2/2 
pd :AI pf :D2 pd :AI pf :D2 pd :AI pf :D2 pe :AI pf :D2  pd :AI pf :D2/2 pd :AI/2 pf :L/2 pd :AI/2  pf :D2/2 pd :AI*0.5
pd 90 un pf 10 mudecp :VCOR2 pinte pf :L-10  pe 90 pf :L pd 90 ul
se :c=11 [atr "c 1]
atr "vy coory
atr "vx coorx
atr "VDESCIDA 80
se :C=10 [un mudey :vy-:VDESCIDA  mudex  -330 ul atr "VGERAL :VGERAL+1]
ignore[FAZ O GIRO DO ENCAIXE]
se :VCONT=2 [pd 90 un pf :L*2 pe 90 ul atr "VCONT 0]
teste  :VGERAL = 3
severd [mostrecaixamensagem [Finalizao] [Execuo encerrada] ] 
SE :VGERAL = 3 [atr "PM 1  pare]
PMOSAICO1 :c+1 :VGERAL 
fim

aprenda PMOSAICO2 :C :VGERAL
se  :C=1 [atr "VCONT 0]
atr "VCONT :VCONT+1 
seno :VCONT=1 [atr "VCOR :VCOR1] [atr "VCOR :VCOR2]
atr "L 40
atr "N 4
atr "D2 (:L*RAIZQ(2))/2
atr "VA1 :AI*0.3
atr "VA2 :AI*0.8 
ignore[AI=ANGULO INTERNO DO POLIGONO]
atr "VD1 raizq((potncia  (2*:L)/3 2)+ (potncia :L/3 2))
atr "VD2 raizq((potncia :L/3 2) + (potncia :L/3 2))
ignore[vd1= comprimento primeiro cateto vd2=segundo]
se :C=1 [un mudexy -250 95 ]
mudecl 0
ul mudeel [2 2]
repita 2[UL pd :VA1 pf  :VD1  pe :VA2 pf :VD2 pd :AI pf :VD2 pd :VA2 pf :VD1  pd :AI-:VA1]
pd 100 un pf 10 mudecp :vcor pinte pt 10 pe 100 ul 
se :C=12 [atr "C 1]
atr "VY coory
atr "VX coorx
atr "VDESCIDA 40
se :C=11 [un mudey :vy-:VDESCIDA  mudex  -290 ul atr "VGERAL :VGERAL+1]
pd 90 UN pf :L pe 90 pf :L pd 90
ignore[FAZ O GIRO DO ENCAIXE]
se :VCONT=2 [pd 180 atr "VCONT 0]
ignore[se VCONT FOR IGUAL A DOIS FAZ O GIRO]
teste :VGERAL = 6
severd [mostrecaixamensagem [Finalizao] [Execuo encerrada] ] 
SE :VGERAL =6 [atr "PM 1  pare]
PMOSAICO2 :c+1 :vgeral
fim

aprenda PMOSAICO3 :C :VGERAL 
se  :C=1 [atr "VCONT 0]
atr "VCONT :VCONT+1 
seno :VCONT=1 [atr "VCOR :VCOR1] [atr "VCOR :VCOR2]
atr "L 40
atr "N 4
atr "D2 (:L*RAIZQ(2))/2
se :c=1 [un mudexy -250 95 ]
mudecl 0
ul mudeel [2 2]
ignore[os comandos abaixo fazem a nova figura reduzida para mosaico]
pd :AI*0.5 pf :D2  pe :AI pf :D2/2 
pd :AI*1.5  pf  :L/2   pe :AI/2 pf :D2/2 
pd :AI pf :D2  pd :AI pf :D2*1.5
pd :AI/2 pf :L/2  pd :AI/2 pf :D2/2 
pd :AI*1.5 un pf  :L-10 pe 90 pf 5 mudecp :VCOR pinte pt 5 pd 90 pf  10  pe 90 ul 
se :c=10 [atr "c 1]
atr "vy coory
atr "vx coorx
atr "VDESCIDA 40
se :C=9 [un mudey :vy-:VDESCIDA  mudex  -250 ul atr "VGERAL :VGERAL+1]
ignore[FAZ O GIRO DO ENCAIXE]
se :VCONT=2 [ atr "VCONT 0]
teste  :VGERAL = 6
severd [mostrecaixamensagem [Finalizao] [Execuo encerrada] ] 
SE :VGERAL = 6 [atr "PM 1  pare]
PMOSAICO3 :c+1 :VGERAL 
fim

aprenda PMOSAICO4 :C :VGERAL
se  :C=1 [atr "VCONT 0]
atr "VCONT :VCONT+1 
seno :VCONT=1 [atr "VCOR :VCOR1] [atr "VCOR :VCOR2]
atr "L 40
atr "N 4
atr "D2 (:L*RAIZQ(2))/2
atr "VA1 :AI*0.3
atr "VA2 :AI*0.8 
ignore[AI=ANGULO INTERNO DO POLIGONO]
atr "VD1 raizq((potncia  (2*:L)/3 2)+ (potncia :L/3 2))
atr "VD2 raizq((potncia :L/3 2) + (potncia :L/3 2))
ignore[vd1= comprimento primeiro cateto vd2=segundo]
se :C=1 [un mudexy -250 95]
mudecl 0
ul mudeel [4 4]
atr "cf 1
atr "V_ESPERA 0
ignore[SE :C>1[ UN PF :L PD 90 PF :L PE 90 ]]
ffig4 :cf
un pf :L pd 90 PF :L/2 mudecp :VCOR pinte PF  :L/2 pe 90
ignore[repita 2[UL pd :VA1 pf  :VD1  pe :VA2 pf :VD2 pd :AI pf :VD2 pd :VA2 pf :VD1  pd :AI-:VA1]]
ignore[pd 100 un pf 10 mudecp :vcor pinte pt 10 pe 100 ul ]
se :C=12 [atr "C 1]
atr "VY coory
atr "VX coorx
atr "VDESCIDA 35
se :C=11 [un mudey :vy-:VDESCIDA  mudex  -250 ul atr "VGERAL :VGERAL+1]
ignore[pd 90 UN pf :L pe 90 pf :L pd 90]
ignore[FAZ O GIRO DO ENCAIXE]
ignore[se :VCONT=2 [pd 180 atr "VCONT 0]]
se :VCONT=2 [atr "VCONT 0]
ignore[se VCONT FOR IGUAL A DOIS FAZ O GIRO]
teste :VGERAL = 6
severd [mostrecaixamensagem [Finalizao] [Execuo encerrada] ] 
SE :VGERAL =6 [atr "PM 1  pare]
PMOSAICO4 :c+1 :vgeral
fim

aprenda PQUADRADO1
apaguejanela  "comp
tat 
atr "VGERAL 1
atr "VCP 1
atr "VCL "rosachoque
se :VC=0 [PMOSAICO1 1 0 ]
se :PM=1[pare]
FQUADRADO
PCONSTRUO1 :N :L :C 
fim

aprenda PQUADRADO2
apaguejanela  "comp
tat 
atr "VGERAL 1
se :VC=0 [PMOSAICO2 1 0 ]
se :PM=1[pare]
atr "VCP 11
atr "VCL 14
FQUADRADO
PCONSTRUO2  :N :L :C 
fim

aprenda PQUADRADO3
apaguejanela  "comp
tat 
atr "VGERAL 1
se :VC=0 [PMOSAICO3 1 0 ]
se :PM=1[pare]
atr "N 4
atr "L 100
atr "VCP  "vermelhoescuro
atr "VCL "amarelo
FQUADRADO
PCONSTRUO3 :N :L :C 
fim

aprenda PQUADRADO4
apaguejanela  "comp
tat 
atr "VGERAL 1
se :VC=0 [PMOSAICO4 1 0 ]
se :PM=1[pare]
ignore[vcp= variavel cor de preenchimento para o blocobit vcl= variavel cor do lapis p/ quad]
atr "VCP 5
atr "VCL 14
FQUADRADO
PCONSTRUO4  :N :L :C 
fim

aprenda vrotule
criejanela "main1 "esch [Projeto de Concluso de Semestre - UFRGS-JAN/97] 0 20 320 150
crieesttico "esch "estatic1 [Computador  na  Matemtica  Elementar] 100 10 150 10
crieesttico "esch "estatic2 [Professora Maria Alice Gravina] 115 25 150 10
crieesttico "esch "estatic3 [Aluno Dagmar L. Pereira] 122 40 150 10
crieesttico "esch "estatic4 [Mosaicos de Escher] 127 55 150 10
crieboto "esch "besch1 [Continua] 122 70 80 10 [apaguejanela "esch pcomposio]
crieboto "esch "besch2 [Cancela] 122 90 80 10 [apaguejanela "esch]
fim

Atribua "a 126
Atribua "ai 90
Atribua "b 2
Atribua "c 1
Atribua "cf 1
Atribua "d2 28.2842712474619
Atribua "dobra 90
Atribua "dobra1 95
Atribua "l 100
Atribua "lados [primeiro mostretextodacaixacombinao]
Atribua "m 4
Atribua "ma [10]
Atribua "n 4
Atribua "passado 1
Atribua "pm 1
Atribua "r 0
Atribua "tipomodelo 1
Atribua "v_espera 0
Atribua "va1 27
Atribua "va2 72
Atribua "valido 1
Atribua "vc 1
Atribua "vcl "rosachoque
Atribua "vcont 0
Atribua "vcor "cinzaclaro
Atribua "vcor1 15
Atribua "vcor2 1
Atribua "vcor3 7
Atribua "vcorfigura 20
Atribua "vcorfundo 15
Atribua "vcorlapis 2
Atribua "vcorte1 16
Atribua "vcorte2 17
Atribua "vcorx 0
Atribua "vcp 1
Atribua "vd1 29.8142396999972
Atribua "vd2 18.8561808316413
Atribua "vdescida 80
Atribua "vgeral 1
Atribua "vl 40
Atribua "vpos [-130 -240.000001]
Atribua "vtecla 27
Atribua "vv1 15
Atribua "vv2 15
Atribua "vv3 15
Atribua "vx 70
Atribua "vx*10 -50
Atribua "vx*4 -50
Atribua "vx*5 320
Atribua "vx1 19.999999
Atribua "vy 0
Atribua "x 1
Atribua "y 1.35828802868335e+19
