Bug graphique selon carte graphique
Publié : ven. 14/déc./2007 15:01
Dingue !
Ce code qui marchait impec sur mon ancien matos ne marche plus sur mon nouvel ordi (en cause la carte gfx ??)
Ce n'est pas la premiere foius que ca m'arrive et c'est deja arrivé a d'autres, je me rapelle leur post avec le screenshot du decallage gfx.
Ce code qui marchait impec sur mon ancien matos ne marche plus sur mon nouvel ordi (en cause la carte gfx ??)
Ce n'est pas la premiere foius que ca m'arrive et c'est deja arrivé a d'autres, je me rapelle leur post avec le screenshot du decallage gfx.
Code : Tout sélectionner
; SPH(2007)
; PB4.02
If InitSprite()=0 Or InitMouse() =0 Or InitKeyboard() =0
MessageRequester("Erreur", "Ne peux ouvrir DirectX7+...") : End
EndIf
;SetPriorityClass_ ( GetCurrentProcess_ (), #IDLE_PRIORITY_CLASS )
If ExamineDesktops() =0
MessageRequester("Erreur", "Parametres du bureau introuvable...") : End
EndIf
dw.w=DesktopWidth(0)
dh.w=DesktopHeight(0)
dc.w=DesktopDepth(0)
If dc<>32
MessageRequester("Message", "Le jeu va essayer de passer en couleurs 32 bits...")
EndIf
If OpenScreen(dw,dh,32,"") =0
MessageRequester("Erreur", "ScreenOpen 32 bits impossible...")
If OpenScreen(dw,dh,dc,"") =0
MessageRequester("Erreur", "ScreenOpen avec les couleurs actuelles impossible...") : End
EndIf
Else
dc=32
EndIf
;;;;;;;;;;;
;;;;;;;;;;;
;;;;;;;;;;;
;;;;;;;;;;;
;;;;;;;;;;;
dw2.w= dw*2+Random(2000)
dh2.w= dh*2+Random(2000)
Dim p.l(dw2*dh2)
marge.b=4
dw_min.w=marge
dw_max.w=dw-marge-1
dh_min.w=marge
dh_max.w=dh-marge-1
deca_x=0
deca_y=0
dw2_line.w=dw2*dc/8
dw_line.w=dw*dc/8
dw_color.w=dw* dc/8
deca_x_line.w=deca_x*dc/8
;CopyMemory(@p()+ (deca_y+u)*dw2_line+ deca_x_line, MemVideo+ dw_line*u, dw_color)
For i=1 To 10000
p(Random(dw2*dh2))=RGB(Random(155)+100,Random(155)+100,Random(155)+100)
Next
For i=0 To dh2-1
p(i*dw2)=RGB(255,140,140)
Next
For i=0 To dh2-1
p(i*dw2+dw2-1)=RGB(50,255,50)
Next
For i=0 To dw2-1
p(i)=RGB(255,255,255)
p(i+(dw2*(dh2-1)))=RGB(0,255,255)
Next
;If LoadSprite(0, "pointeur01.bmp") =0
;MessageRequester("Erreur", "Sprite introuvable...") : End
;EndIf
;If LoadSprite(1, "pointeur02.bmp") =0
;MessageRequester("Erreur", "Sprite introuvable...") : End
;EndIf
xmouse.w=dw/2
ymouse.w=dh/2
sensiblemouse.f=3 ; RAPIDITé DE LA SOURIS (de 0.5 a 5) *******
sensiblescroll.f=2 ; RAPIDITé DU SCROLL des bordures (de 0.5 a 5) ********
sensiblescrollm.f=4 ; RAPIDITé DU SCROLL de la souris (de 0.5 a 5) ********
Mbouton_r_actu.b=0
Mbouton_l_actu.b=0
mbouton_x1.w=0
mbouton_y1.w=0
mbouton_x2.w=0
mbouton_y2.w=0
scrollinverse_x.b=1 ; (1 ou -1)
scrollinverse_y.b=1 ; (1 ou -1)
deplacement.b=0
scrollsensiblemouse.b=1 ; (de 0 a 16; 16= souris super sensible)
pointeur.b=0
dkx.b=0
dky.b=0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Repeat ; Until KeyboardPushed(#PB_Key_All)
ExamineMouse()
xdelta=MouseDeltaX()
ydelta=MouseDeltaY()
Mbouton_r.b = MouseButton(#PB_MouseButton_Right)
Mbouton_l.b = MouseButton(#PB_MouseButton_Left)
;;;;;;;;;;;;;;;;;;;;;;; analyse des coordonnées de la souris
xmouse+xdelta*sensiblemouse
ymouse+ydelta*sensiblemouse
If xmouse<dw_min
deca_x+xdelta*sensiblescroll
xmouse=dw_min
If deca_x<0
deca_x=0
EndIf
Else
If xmouse>dw_max
deca_x+xdelta*sensiblescroll
xmouse=dw_max
If deca_x>dw2-dw
deca_x=dw2-dw
EndIf
EndIf
EndIf
If ymouse<dh_min
deca_y+ydelta*sensiblescroll
ymouse=dh_min
If deca_y<0
deca_y=0
EndIf
Else
If ymouse>dh_max
deca_y+ydelta*sensiblescroll
ymouse=dh_max
If deca_y>dh2-dh
deca_y=dh2-dh
EndIf
EndIf
EndIf
;;;;;;;;;;;;;;;;;;;;;;; end
;;;;;;;;;;;;;;;;;;;;;;; analyse des boutons de la souris
If mbouton_r<>0
pointeur=1
dkx=20
dky=20
If mbouton_r_actu=0
mbouton_r_actu=1
mbouton_x1= xmouse
mbouton_y1= ymouse
Else
If deplacement=0
If xmouse<mbouton_x1-scrollsensiblemouse Or xmouse>mbouton_x1+scrollsensiblemouse
;;;;; deplace t'on la souris avec le bouton droit enfoncé ?
deplacement=1
EndIf
If ymouse<mbouton_y1-scrollsensiblemouse Or ymouse>mbouton_y1+scrollsensiblemouse
;;;;; deplace t'on la souris avec le bouton droit enfoncé ?
deplacement=1
EndIf
Else
;;;;; on est bien en deplacement donc, on scroll ici
deca_x+xdelta*sensiblescrollm*scrollinverse_x
deca_y+ydelta*sensiblescrollm*scrollinverse_y
If deca_x<0
deca_x=0
EndIf
If deca_x>dw2-dw
deca_x=dw2-dw
EndIf
If deca_y<0
deca_y=0
EndIf
If deca_y>dh2-dh
deca_y=dh2-dh
EndIf
EndIf
EndIf
Else ; si mbouton_r=0
If deplacement=0
;;;;;; ici, on a relaché le bouton droit. On peux faire apparaitre un menu
EndIf
If pointeur=1
mbouton_r_actu=0
deplacement=0
pointeur=0
dkx=0
dky=0
EndIf
EndIf
;;;;; end
;If mbouton_r=0 And mbouton_r_actu=1
;mbouton_r_actu=0
;mbouton_x2= xmouse
;mbouton_y2= ymouse
;;;;;;;; on viens de lacher le bouton droit de la souris
;Beep_(700,100)
;End
;;;;;;;; end
;EndIf
;;;;;;;;;;;;;;;;;;;;;;; end
StartDrawing(ScreenOutput())
;;;;;;;;;;;
;;;;;;;;;;;
;;;;;;;;;;;
;;;;;;;;;;;
;;;;;;;;;;;
;;;;;;;;;;;
;;;;;;;;;;;
MemVideo = DrawingBuffer()
deca_x_line.w=deca_x*4
For u=0 To dh-1
CopyMemory(@p()+ (deca_y+u)*dw2_line+ deca_x_line, MemVideo+ dw_line*u, dw_color)
Next
;;;;;;;;;;;
;;;;;;;;;;;
;;;;;;;;;;;
;;;;;;;;;;;
;;;;;;;;;;;
;;;;;;;;;;;
Circle(xmouse,ymouse,20,RGB(255,255,255))
StopDrawing()
;DisplayTransparentSprite(pointeur, xmouse-dkx, ymouse-dky)
;*****
FlipBuffers(1)
Delay(1)
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_All)
End