
Si il faut passer plus de temps à chasser les bug que tu introduis dans le code qu'à faire le code nous même, tu risques de ne pas avoir beaucoup de succès

Procedure WinCallBack(WinID.l, message.l, wParam.l, lParam.l)
Resultat.l = #PB_ProcessPureBasicEvents
Select message
Case #WM_LBUTTONDBLCLK
SetWindowText_(WinID, "Double clic Gauche")
Case #WM_RBUTTONDBLCLK
SetWindowText_(WinID, "Double clic Droit")
Case #WM_MBUTTONDBLCLK
SetWindowText_(WinID, "Double clic Milieu")
End Select
Procedure Return Resultat
End Procedure
hwnd = OpenWindow(0, 100, 100, 250, 100, #PB_Window_SystemMenu | #PB_Window_ScreenCentered , "Double-cliquez sur la fenêtre")
SetClassLong_(hwnd, #GCL_STYLE , GetClassLong_(hwnd, #GCL_STYLE )| #CS_DBLCLKS )
SetWindowCallback(@WinCallBack())
Repeat
Select WindowEvent()
Case #PB_Event_CloseWindow : Quit = 1
End Select
Until Quit = 1
End
c'est pas toi ça ? hein ?Hroudtwolf a écrit :Cool.
I made a programm with the same function some months ago.
http://hroudtwolf.cybton.com/projekte/pb2bbcode.exe
http://www.purebasic-lounge.de/viewtopic.php?t=1054
But, good work colleague
oui !Pour la mise en page tu fais ça à partir du caractère ASCII 160 ? c bien ca ?
; prg realisé par Dobro
#dobro = 1
#Police = 1
#Sprite = 1
Declare.s super_collision(sprite_numero1, x_sprite1, y_sprite1, sprite_numero2, x_sprite2, y_sprite2)
; cette procedure renvoie du quelle coté le sprite a été touché !
; sprite_numero1 = le numero du sprite 1 a tester
; largeur_spr1 = largeur en pixel du sprite numero 1
; hauteur_spr1 = hauteur en pixel du sprite numero 1
; x_sprite1 = coordonée X du sprite numero 1
; y_sprite1 = coordonée Y du sprite numero 1
; --------------------------------------------------------------------------
; sprite_numero2 = le numero du sprite 2 a tester
; largeur_spr2 = largeur en pixel du sprite numero 2
; hauteur_spr12 = hauteur en pixel du sprite numero 2
; x_sprite2 = coordonée X du sprite numero 2
; y_sprite2 coordonée Y du sprite numero 2
Enumeration
#sprite_cible
#sprite_souris
#sprite_text
EndEnumeration
Structure sprite
x.w
y.w
EndStructure
Dim sprite.sprite(1)
Dim ecran(640, 400)
For x = 0 To 640 ; oires
For y = 0 To 400
r = Random(255)
g = Random(255)
b = Random(255)
c = RGB(r, g, b)
ecran(x, y)= c
Next y
Next x
; ***********************************
Resultat = InitSprite()
FontID = LoadFont( #Police , " arial ", 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_( #SM_CXSCREEN ): ; EcranY = GetSystemMetrics_( #SM_CYSCREEN ): ; WindowID = OpenWindow (1, 0, 0, 800, 600, #PB_Window_SystemMenu | #PB_Window_BorderLess | #PB_Window_ScreenCentered , " hello ")
WindowID = WindowID(1)
Result = OpenWindowedScreen(WindowID, 0, 0, 800, 600, 1, 0, 0)
CreateSprite( #sprite_cible , 128, 64) ; StartDrawing ( SpriteOutput ( #sprite_cible ) ) ; Box (0, 0, 128, 64, RGB ($FF,$0,$80))
StopDrawing()
CreateSprite( #sprite_souris , 32, 32) ; StartDrawing ( SpriteOutput ( #sprite_souris ) ) ; ; Box (0, 0, 64, 64, RGB ($13,$F8,$7))
Circle(16, 16, 16, RGB($13, $F8, $7))
StopDrawing()
bord$ =" aucun bord "
CreateSprite( #sprite_text , 150, 14) ; StartDrawing ( SpriteOutput ( #sprite_text ) ) ; DrawText (bord$)
StopDrawing()
Resultat = InitMouse()
Repeat
ExamineMouse()
Event = WindowEvent()
DisplaySprite( #sprite_cible , WindowWidth() /2, WindowHeight()/2)
sprite(1)\x = WindowWidth()/2
sprite(1)\y = WindowHeight()/2
DisplaySprite( #sprite_souris , MouseX(), MouseY())
DisplaySprite( #sprite_text , 10, 10)
bord$ = super_collision( #sprite_cible , sprite(1)\x, sprite(1)\y, #sprite_souris , MouseX(), MouseY())
StartDrawing( SpriteOutput( #sprite_text ) ) ; DrawingMode (0)
DrawText(bord$)
DrawText(" ")
StopDrawing()
If MouseButton(2)
End
Endif
FlipBuffers(): ; ClearScreen (0, 0, 0) : ; Until Event = #PB_Event_CloseWindow
Procedure super_collision(sprite_numero1, x_sprite1, y_sprite1, sprite_numero2, x_sprite2, y_sprite2)
spr1_milieu_x = x_sprite1 + SpriteWidth(sprite_numero1) /2
spr1_milieu_y = y_sprite1 + SpriteHeight(sprite_numero1)/2
spr2_milieu_x = x_sprite2 + SpriteWidth(sprite_numero2)/2
spr2_milieu_y = y_sprite2 + SpriteHeight(sprite_numero2)/2
spr1_hauteur = SpriteHeight(sprite_numero1)
spr1_largeur = SpriteWidth(sprite_numero1)
spr2_hauteur = SpriteHeight(sprite_numero2)
spr2_largeur = SpriteWidth(sprite_numero2)
bord$ =""
If SpriteCollision(sprite_numero1, x_sprite1, y_sprite1, sprite_numero2, x_sprite2, y_sprite2)
If bord$<>""
Goto dobrosuite
Endif
If(spr2_milieu_x)>x_sprite1 And(spr2_milieu_x)<(x_sprite1 + spr1_largeur) And(spr2_milieu_y)>(y_sprite1 + spr1_hauteur )
bord$ =" bas "
Goto dobrosuite
Endif
If(spr2_milieu_x)>x_sprite1 And(spr2_milieu_x)<(x_sprite1 + spr1_largeur) And(spr2_milieu_y)<y_sprite1
bord$ =" haut "
Goto dobrosuite
Endif
If(spr2_milieu_y)>y_sprite1 And(spr2_milieu_y)<(y_sprite1 + spr1_hauteur) And(spr2_milieu_x)>(x_sprite1 + spr1_largeur)
bord$ =" droit "
Goto dobrosuite
Endif
If(spr2_milieu_y)>y_sprite1 And(spr2_milieu_y)<(y_sprite1 + spr1_hauteur) And(spr2_milieu_x)<x_sprite1
bord$ =" gauche "
Goto dobrosuite
Endif
If(spr2_milieu_x)<x_sprite1 And(spr2_milieu_y)<y_sprite1
bord$ =" haut-gauche "
Endif
If(spr2_milieu_x)>x_sprite1 + spr1_largeur And(spr2_milieu_y)<y_sprite1
bord$ =" haut-droit "
Endif
If(spr2_milieu_y)>y_sprite1 + spr1_hauteur And(spr2_milieu_x)<x_sprite1
bord$ =" bas-gauche "
Endif
If(spr2_milieu_y)>y_sprite1 + spr1_hauteur And(spr2_milieu_x)>x_sprite1 + spr1_largeur
bord$ =" bas-droit "
Endif
Endif
dobrosuite:
ProcedureReturn bord$
EndProcedure
pas tant que ça !lionel_om a écrit :Ya qd mm pas mal de bugau niveau de la colorisation des fonctions.
Beaucoup ne sont pas colorées ...
c'est pas trop difficile a faire !Il ne te reste plus qu'à laisser le choix des couleurs à l'utilisateur du programme, comme dans jaPBe
ArfDobro a écrit :j'ai referencé toute celle qui sont accessible par la doc !!