mais comme il ne veux pas d'application complete ....
bon voici mini_Pure_golo
il s'agit ici de la procedure de base simplifié de mon Pure_golo (interpreteur )
là on n'applique QUE la fonction de dessin
la procedure Tortue
Code : Tout sélectionner
Tortue(X_depart.f,Y_depart.f,Angle.f,Distance_a_parcourir.f,Statut)
si on doit dessiner ou pas .....
si on ne dessine pas => Statut=#false , seul le deplacement est pris en compte ...
plus simple, tu meurts !
dans l'exemple ci dessous je fait effectuer un triangle (3 segment de 120 degres ) que je repete 12 fois en tournant encore de 30 degres
d'ou la presence de 2 boucles ....
l'interet de cette fonction c'est surtout
Code : Tout sélectionner
x=X_depart.f+Cos(Angle*#PI/180)* Distance_a_parcourir.f
y=Y_depart.f+Sin(Angle*#PI/180)* Distance_a_parcourir.f
autrement dit , s'il n'y a qu'une seule fonction a connaitre, c'est celle là , car elle permet
l'utilisation de deplacement, collisions, en jeux video 2D et 3D ....
ou de connaitre le point d'arrivé d'un jet de pierre par exemple en connaissant le point de depart et l'angle
le point de depart peut concerner un personnage , un endroit de l'ecran , ou de l'univers 3D ....
la fonction va calculer le point d'arrivé en fonction de la distance ...
ici je m'en sert pour dessiner pendant un trajet , mais on peut s'en servir pour faire effectuer un trajet a un personnage
ou un sprite , etc .....
on est pas obligé de laisser une trace du deplacement , comme je le fais ici
voici le code :
Code : Tout sélectionner
;***********************************************
;Titre :mini_golo
;Auteur : Zorro
;Date :06/03/2018
;Heure :12:30:17
;Version Purebasic : PureBasic 5.62 (Windows - x86)
;Version de l'editeur :EPB V2.68
; Libairies necessaire : Aucune
;***********************************************
; le but c'est d'utiliser la procedure Tortue pour faire des dessins
; on lui donne le point X,Y de depart , la distance a parcourir, et l'angle qu'elle doit prendre pour dessiner
InitSprite()
InitKeyboard()
Declare tortue(x_depart.f,y_depart.f,angle.f,distance_a_parcourir.f, Statut)
Structure tortu
x.f
y.f
EndStructure
Global tortu.tortu
OpenWindow(1,0,0,400,400,"mini PureGolo",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(1),0,0,400,400,1,1,1)
X_depart.f=250 ; coordonée X de depart
Y_depart.f=150 ; ; coordonée Y de depart
Distance_a_parcourir.f =100 ; distance a parcourir a partir des coordonées de depart
Statut=#true ; Crayon Baissé
; *************************************** exemple d'utilisation : *****************************************************************
StartDrawing(ScreenOutput())
circle( X_depart.f,Y_depart.f,10,rgb(255,0,0)) ; point de depart en rouge ...
;
For z=1 to 12
For i =1 to 3 ; on va faire 3 segments de droite
; ****** a chaque boucle on tourne notre tortue de 120 degres !! *********
; ce qui donne un triangle ....
Angle.f=Angle.f+120
Tortue(X_depart.f,Y_depart.f,Angle.f,Distance_a_parcourir.f,Statut)
X_depart.f=tortu\x ; actualise le point de depart de la tortue
Y_depart.f=tortu\y ; actualise le point de depart de la tortue
; **************************
Next i
Angle.f=Angle.f+30 ; puis on tourne encore de 30 degres et on recommence 12 fois ce qui fait 12 triangles qui tournent de 30 degres :o)
Next z
StopDrawing()
; **************************************************************************************************************************
Repeat
ExamineKeyboard()
event=WindowEvent()
FlipBuffers()
Delay(2)
Until KeyboardPushed(#PB_Key_All ) Or event=#PB_Event_CloseWindow
End
Procedure Tortue(X_depart.f,Y_depart.f,Angle.f,Distance_a_parcourir.f,Statut)
; by Dobro
x=X_depart.f+Cos(Angle*#PI/180)* Distance_a_parcourir.f
y=Y_depart.f+Sin(Angle*#PI/180)* Distance_a_parcourir.f
if Statut=#true ; si crayon baissé alors :
LineXY(X_depart.f,Y_depart.f,x,y) ; on trace le segment de droite
Endif ; sinon seulement la position est modifié (deplacement sans dessiner )
X_depart.f=x
Y_depart.f=y
tortu\x=X_depart.f
tortu\y=Y_depart.f
EndProcedure