Re: OpenScreen problème étrange
Publié : lun. 31/mars/2014 13:52
............ Je suis un Âne ! ...............
Forums PureBasic - Français
http://forums.purebasic.com/french/
Code : Tout sélectionner
#dobro =1
#Police =1
#sprite=1
InitKeyboard () : ; j'espere qu'il y a un clavier au moins !!
Resultat = InitSprite () ; initialisation de la gestion des Sprites par Purebasic
; ************** definition des variables ****************
EcranX = 800
EcranY = 600
; ***************************************************
; *********** ouvre une fenetre aucentre de l'ecran sans bordure, mais ayant la petite croix pour fermer *****************
WindowID = OpenWindow (1, 0, 0,EcranX, EcranY, "hello" , #PB_Window_BorderLess |#PB_Window_ScreenCentered )
; **************************************************************************************************
;********** placement d'un ecran graphique dans notre fenetre préalablement crée *************************
Result = OpenWindowedScreen ( WindowID (1),0,0, EcranX,EcranY)
; *****************************************************************************************
Procedure.d Dist(x1.d, y1.d, x2.d, y2.d)
v1.d = x2 - x1 : v2.d = y2 - y1
ProcedureReturn Sqr(v1 * v1 + v2 * v2)
EndProcedure
Procedure.d InCircle(d.d, r.d)
If d <= r
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
EndProcedure
; ******* creation d'un sprite ************
If CreateSprite (1,32, 32) ; on creer un sprite vide (une cellule) de 32 par 32 et on lui donne le numero 1
StartDrawing ( SpriteOutput (#sprite) ) ; on va dessiner dedans !
For y = 0 To 31
For x = 0 To 31
q1.d = Dist(x, y, 16, 16)
q2.d = Dist(x+1, y, 16, 16)
q3.d = Dist(x+1, y+1, 16, 16)
q4.d = Dist(x, y+1, 16, 16)
v.d = (InCircle(q1, 16) + InCircle(q2, 16) + InCircle(q3, 16) + InCircle(q4, 16)) / 4
Plot(x, y, RGB(v * $FF, 0, 0)) ;RGB(256 - 16 * d, 0, 0))
Next x
Next y
StopDrawing ()
EndIf
; ******************************************
; ********* preparation du point de depart de notre sprite *************************
x_sprite=EcranX/2 ; on centre les coordonées du sprite
y_sprite=EcranY/2 ; on centre les coordonées du sprite
; **************************************************************************
AddWindowTimer(1, 1, 1000)
Secondes.d = 0
Repeat ;********* debut de boucle principale **************************
;-testez !
Repeat
event= WindowEvent () ; <<<<<<<<<<<<<<<<<<<<<<<< mettez ceci en Rem
If event = #PB_Event_Timer
If EventTimer() = 1
Secondes + 1
EndIf
EndIf
Debug event
Until event = 0
Delay (2) ; <<<<<<<<<<<<<<<<<<<<<<<< mettez ceci en Rem
; event= WaitWindowEvent (2) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Remplacez par ceci
; Debug event
ExamineKeyboard (); on regarde si le clavier a ete touché par l'utilisateur
; ************************ ecriture dans l'ecran *********************
StartDrawing ( ScreenOutput ()) ; on va ecrire dans le fond de l'ecran
Resultat = DrawText (50, 50, "appuyez sur les touches flechées" , RGB (255,255,0), RGB (0,0,0) )
Resultat = DrawText (50, 150, "pour faire bouger le sprite" , RGB (255,255,0), RGB (0,0,0) )
LineXY(EcranX / 2, EcranY / 2, EcranX / 2 + 100 * Sin(Secondes * 2 * #PI / 60), EcranY / 2 + 100 * Cos( Secondes * 2*#PI / 60), #White)
StopDrawing ()
; ******************************************************************
; le clavier a ete touché !!!
; ********** gestion du clavier ***********************************
If KeyboardPushed ( #PB_Key_Up ) ; press touche fleche haut
Debug "press touche haut"
y_sprite= y_sprite-1 ; diminue la coordonée Y du sprite
EndIf
If KeyboardPushed ( #PB_Key_Down ) ; press touchefleche bas
Debug " press touche bas"
y_sprite= y_sprite+1 ; augmente la coordonée Y du sprite
EndIf
If KeyboardPushed ( #PB_Key_Left ) ; press touche flechegauche
Debug " press touche gauche"
x_sprite= x_sprite-1 ; diminue la coordonée x du sprite
EndIf
If KeyboardPushed ( #PB_Key_Right ) ; press touche flechedroit
Debug " press touche droit"
x_sprite= x_sprite+1 ; diminue la coordonée X du sprite
EndIf
; ****************************************************************
; ******* affichage du sprite ****************************************
DisplaySprite (#sprite, x_sprite - SpriteWidth(#sprite) / 2, y_sprite - SpriteHeight(#sprite) / 2) ; affiche le sprite au coordonées modifié par les touches
; ****************************************************************
; *************** affiche l'ecran ********************************
FlipBuffers(): ; affiche l'ecran
; **************************************************************
; **** ok on nettoie pour le prochain affichage **********************
ClearScreen ( RGB (0, 0, 0)) : ;efface l'ecran
; ***************************************************************
Until event= #PB_Event_CloseWindow Or KeyboardPushed ( #PB_Key_Escape ) ; press touche droit
;
; Epb
Code : Tout sélectionner
#dobro =1
#Police =1
#sprite=1
InitKeyboard () : ; j'espere qu'il y a un clavier au moins !!
Resultat = InitSprite () ; initialisation de la gestion des Sprites par Purebasic
; ************** definition des variables ****************
EcranX = 800
EcranY = 600
; ***************************************************
; *********** ouvre une fenetre aucentre de l'ecran sans bordure, mais ayant la petite croix pour fermer *****************
WindowID = OpenWindow (1, 0, 0,EcranX, EcranY, "hello" , #PB_Window_BorderLess |#PB_Window_ScreenCentered )
; **************************************************************************************************
;********** placement d'un ecran graphique dans notre fenetre préalablement crée *************************
Result = OpenWindowedScreen ( WindowID (1),0,0, EcranX,EcranY)
; *****************************************************************************************
Procedure.d Dist(x1.d, y1.d, x2.d, y2.d)
v1.d = x2 - x1 : v2.d = y2 - y1
ProcedureReturn Sqr(v1 * v1 + v2 * v2)
EndProcedure
Procedure.d InCircle(d.d, r.d)
If d <= r
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
EndProcedure
; ******* creation d'un sprite ************
If CreateSprite (1,32, 32) ; on creer un sprite vide (une cellule) de 32 par 32 et on lui donne le numero 1
StartDrawing ( SpriteOutput (#sprite) ) ; on va dessiner dedans !
For y = 0 To 31
For x = 0 To 31
q1.d = Dist(x, y, 16, 16)
q2.d = Dist(x+1, y, 16, 16)
q3.d = Dist(x+1, y+1, 16, 16)
q4.d = Dist(x, y+1, 16, 16)
v.d = (InCircle(q1, 16) + InCircle(q2, 16) + InCircle(q3, 16) + InCircle(q4, 16)) / 4
Plot(x, y, RGB(v * $FF, 0, 0)) ;RGB(256 - 16 * d, 0, 0))
Next x
Next y
StopDrawing ()
EndIf
; ******************************************
; ********* preparation du point de depart de notre sprite *************************
x_sprite=EcranX/2 ; on centre les coordonées du sprite
y_sprite=EcranY/2 ; on centre les coordonées du sprite
; **************************************************************************
AddWindowTimer(1, 1, 1)
Secondes.d = 0
Repeat ;********* debut de boucle principale **************************
Repeat
event= WindowEvent ()
; event= WaitWindowEvent (1)
If event = #PB_Event_Timer
If EventTimer() = 1
Secondes + 1
EndIf
EndIf
Debug event
Until event=0
ExamineKeyboard (); on regarde si le clavier a ete touché par l'utilisateur
; ************************ ecriture dans l'ecran *********************
StartDrawing ( ScreenOutput ()) ; on va ecrire dans le fond de l'ecran
Resultat = DrawText (50, 50, "appuyez sur les touches flechées" , RGB (255,255,0), RGB (0,0,0) )
Resultat = DrawText (50, 150, "pour faire bouger le sprite" , RGB (255,255,0), RGB (0,0,0) )
LineXY(EcranX / 2, EcranY / 2, EcranX / 2 + 100 * Sin(Secondes * 2 * #PI / 60), EcranY / 2 + 100 * Cos( Secondes * 2*#PI / 60), #White)
StopDrawing ()
; ******************************************************************
; le clavier a ete touché !!!
; ********** gestion du clavier ***********************************
If KeyboardPushed ( #PB_Key_Up ) ; press touche fleche haut
Debug "press touche haut"
y_sprite= y_sprite-1 ; diminue la coordonée Y du sprite
EndIf
If KeyboardPushed ( #PB_Key_Down ) ; press touchefleche bas
Debug " press touche bas"
y_sprite= y_sprite+1 ; augmente la coordonée Y du sprite
EndIf
If KeyboardPushed ( #PB_Key_Left ) ; press touche flechegauche
Debug " press touche gauche"
x_sprite= x_sprite-1 ; diminue la coordonée x du sprite
EndIf
If KeyboardPushed ( #PB_Key_Right ) ; press touche flechedroit
Debug " press touche droit"
x_sprite= x_sprite+1 ; diminue la coordonée X du sprite
EndIf
; ****************************************************************
; ******* affichage du sprite ****************************************
DisplaySprite (#sprite, x_sprite - SpriteWidth(#sprite) / 2, y_sprite - SpriteHeight(#sprite) / 2) ; affiche le sprite au coordonées modifié par les touches
; ****************************************************************
; *************** affiche l'ecran ********************************
FlipBuffers(): ; affiche l'ecran
; **************************************************************
; **** ok on nettoie pour le prochain affichage **********************
ClearScreen ( RGB (0, 0, 0)) : ;efface l'ecran
; ***************************************************************
Until event= #PB_Event_CloseWindow Or KeyboardPushed ( #PB_Key_Escape ) ; press touche droit
;
; Epb
Ah voilà ce que je cherchais depuis le début !!!Dobro a écrit :change de PC
Code : Tout sélectionner
#dobro =1
#Police =1
#sprite=1
InitKeyboard () : ; j'espere qu'il y a un clavier au moins !!
Resultat = InitSprite () ; initialisation de la gestion des Sprites par Purebasic
; ************** definition des variables ****************
EcranX = 800
EcranY = 600
; ***************************************************
; *********** ouvre une fenetre aucentre de l'ecran sans bordure, mais ayant la petite croix pour fermer *****************
WindowID = OpenWindow (1, 0, 0,EcranX, EcranY, "hello" , #PB_Window_BorderLess |#PB_Window_ScreenCentered )
; **************************************************************************************************
;********** placement d'un ecran graphique dans notre fenetre préalablement crée *************************
Result = OpenWindowedScreen ( WindowID (1),0,0, EcranX,EcranY)
; *****************************************************************************************
Procedure.d Dist(x1.d, y1.d, x2.d, y2.d)
v1.d = x2 - x1 : v2.d = y2 - y1
ProcedureReturn Sqr(v1 * v1 + v2 * v2)
EndProcedure
Procedure.d InCircle(d.d, r.d)
If d <= r
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
EndProcedure
; ******* creation d'un sprite ************
If CreateSprite (1,32, 32) ; on creer un sprite vide (une cellule) de 32 par 32 et on lui donne le numero 1
StartDrawing ( SpriteOutput (#sprite) ) ; on va dessiner dedans !
For y = 0 To 31
For x = 0 To 31
q1.d = Dist(x, y, 16, 16)
q2.d = Dist(x+1, y, 16, 16)
q3.d = Dist(x+1, y+1, 16, 16)
q4.d = Dist(x, y+1, 16, 16)
v.d = (InCircle(q1, 16) + InCircle(q2, 16) + InCircle(q3, 16) + InCircle(q4, 16)) / 4
Plot(x, y, RGB(v * $FF, 0, 0)) ;RGB(256 - 16 * d, 0, 0))
Next x
Next y
StopDrawing ()
EndIf
; ******************************************
; ********* preparation du point de depart de notre sprite *************************
x_sprite=EcranX/2 ; on centre les coordonées du sprite
y_sprite=EcranY/2 ; on centre les coordonées du sprite
; **************************************************************************
AddWindowTimer(1, 1, 1)
Secondes.d = 0
Repeat ;********* debut de boucle principale **************************
; Repeat
; event= WindowEvent ()
event= WaitWindowEvent (1)
If event = #PB_Event_Timer
If EventTimer() = 1
Secondes + 1
EndIf
EndIf
; Debug event
; Until event=0
ExamineKeyboard (); on regarde si le clavier a ete touché par l'utilisateur
; ************************ ecriture dans l'ecran *********************
StartDrawing ( ScreenOutput ()) ; on va ecrire dans le fond de l'ecran
Resultat = DrawText (50, 50, "appuyez sur les touches flechées" , RGB (255,255,0), RGB (0,0,0) )
Resultat = DrawText (50, 150, "pour faire bouger le sprite" , RGB (255,255,0), RGB (0,0,0) )
LineXY(EcranX / 2, EcranY / 2, EcranX / 2 + 100 * Sin(Secondes * 2 * #PI / 60), EcranY / 2 + 100 * Cos( Secondes * 2*#PI / 60), #White)
StopDrawing ()
; ******************************************************************
; le clavier a ete touché !!!
; ********** gestion du clavier ***********************************
If KeyboardPushed ( #PB_Key_Up ) ; press touche fleche haut
Debug "press touche haut"
y_sprite= y_sprite-1 ; diminue la coordonée Y du sprite
EndIf
If KeyboardPushed ( #PB_Key_Down ) ; press touchefleche bas
Debug " press touche bas"
y_sprite= y_sprite+1 ; augmente la coordonée Y du sprite
EndIf
If KeyboardPushed ( #PB_Key_Left ) ; press touche flechegauche
Debug " press touche gauche"
x_sprite= x_sprite-1 ; diminue la coordonée x du sprite
EndIf
If KeyboardPushed ( #PB_Key_Right ) ; press touche flechedroit
Debug " press touche droit"
x_sprite= x_sprite+1 ; diminue la coordonée X du sprite
EndIf
; ****************************************************************
; ******* affichage du sprite ****************************************
DisplaySprite (#sprite, x_sprite - SpriteWidth(#sprite) / 2, y_sprite - SpriteHeight(#sprite) / 2) ; affiche le sprite au coordonées modifié par les touches
; ****************************************************************
; *************** affiche l'ecran ********************************
FlipBuffers(): ; affiche l'ecran
; **************************************************************
; **** ok on nettoie pour le prochain affichage **********************
ClearScreen ( RGB (0, 0, 0)) : ;efface l'ecran
; ***************************************************************
Until event= #PB_Event_CloseWindow Or KeyboardPushed ( #PB_Key_Escape ) ; press touche droit
;
; Epb