l'avantage de ma procedure tortue, c'est qu'elle peut répondre a tout les besoins !!
-> donne l'orientation en degres de la tortue (0= nord vers le haut de l'ecran)
les autres exemple a décommenter , sont a regarder , tu verra que rien qu'en touchant le parametre Mode , on peut faire des trucs amusants !!
Code : Tout sélectionner
; Tortue (mini logo)
; Code Dobro
Enumeration
#point
#box
#circle
#ligne
EndEnumeration
Declare.f tortue(crayon,x.f,y.f,angle.f,dist.f,couleur,type,taille,mode)
Global xa=200
Global ya=200
;
InitSprite()
OpenWindow(0,0,0,400,400,"mini_logo")
OpenWindowedScreen(WindowID(0),1,1,400,400,1,0,0)
ClearScreen(RGB(255,255,255))
;********************* test diferents pinceaux ***********************************
; StartDrawing(WindowOutput(0))
; angle=0
; tortue(0,20,20,angle, dist ,RGB(0,0,0),#ligne,taille,mode)
; For d=1 To 360
; angle=d
; dist=150
; mode=#PB_2DDrawing_Outlined ; mode=#PB_2DDrawing_Default
; taille=100
; bleu=Random(155)+50
; vert=Random(10)+50
; rouge=Random(155)+50
;
; tortue(1,xa,ya,angle, dist ,RGB(0,0,0),#circle,taille,mode)
; ; tortue(1,xa,ya,angle, dist ,RGB(0,0,0),#box,taille,mode)
; ; tortue(1,xa,ya,angle, dist ,RGB(0,0,0),#point,taille,mode)
;
;
;
; Next d
;
; StopDrawing()
; ***************************************************************************
; ************************ un carré ***********************************
; angle=0
; xa=50:ya=50
; dist=0
; angle=90
; StartDrawing(ScreenOutput())
; tortue(0,xa,ya,angle, dist ,RGB(0,0,0),#ligne,taille,mode) ; transporte la tortue au depart (sans déssiner)
; StopDrawing()
;
; For d=1 To 4 ; 4 cotés pour un carre
; dist=150
; mode=#PB_2DDrawing_Default
; taille=1
;
; bleu=Random(155)+50
; vert=Random(10)+50
; rouge=Random(155)+50
; StartDrawing(ScreenOutput())
; tortue(1,xa,ya,angle, dist ,RGB(rouge,vert,bleu),#ligne,taille,mode)
; StopDrawing()
; angle=angle+90
; FlipBuffers()
;
; Next d
; ************************************************************************
; ************************ un triangle ***********************************
; angle=0
; xa=50:ya=50
; dist=0
; angle=90
; StartDrawing(ScreenOutput())
; tortue(0,xa,ya,angle, dist ,RGB(0,0,0),#ligne,taille,mode) ; transporte la tortue au depart (sans déssiner)
; StopDrawing()
;
; For d=1 To 3 ; 3 cotés pour un triangle
; dist=150
; mode=#PB_2DDrawing_Default
; taille=1
;
; bleu=Random(155)+50
; vert=Random(10)+50
; rouge=Random(155)+50
; StartDrawing(ScreenOutput())
; tortue(1,xa,ya,angle, dist ,RGB(rouge,vert,bleu),#ligne,taille,mode)
; StopDrawing()
; angle=angle+120 ; dessine un triangle !!
; FlipBuffers()
;
; Next d
; ************************************************************************
; ************************ une spirale carré ***********************************
angle=0
xa=200:ya=200
dist=0
angle=90
StartDrawing(ScreenOutput())
tortue(0,xa,ya,angle, dist ,RGB(0,0,0),#ligne,taille,mode) ; transporte la tortue au depart (sans déssiner)
StopDrawing()
For d=1 To 201 ; la tortue va faire 200 pas !!
For i= 1 To d
mode=#PB_2DDrawing_Default
taille=4
dist=taille/2 ; on augmente le trajet que parcour la tortue en changeant ceci on peut ajourer la spirale
StartDrawing(ScreenOutput())
tortue(1,xa,ya,angle, dist ,RGB(rouge,vert,bleu),#box,taille,mode)
StopDrawing()
Next i
angle=angle+90 ; on fait des angle de 90 degres pour rester carré
bleu=bleu+1; on eclairci la couleur a chaque tour
vert=vert+1
FlipBuffers()
Next d
; ************************************************************************
Repeat
FlipBuffers()
Until WaitWindowEvent()=#WM_CLOSE
Procedure.f tortue(crayon,x.f,y.f,angle.f,dist.f,couleur,type,taille,mode)
Static xzz
Static yzz
Static flag
If flag=1
x=xzz
y=yzz
EndIf
flag=1
angle=angle-90 ; ceci oriente la tortue tete vers le haut de l'ecran (au nord)
DrawingMode(mode)
x.f + Cos(angle*#PI/180)*dist
y.f + Sin(angle*#PI/180)*dist
If crayon=1
Select type
Case #point
Plot(x,y,couleur)
Case #box
Box(x,y,taille,taille,couleur)
Case #circle
Circle(x,y,taille,couleur)
Case #ligne
LineXY(xzz,yzz,x,y,couleur)
EndSelect
EndIf
xzz=x
yzz=y
EndProcedure