Page 2 sur 2

Re: un tetris

Publié : ven. 05/oct./2012 8:32
par kelebrindae
Je dirais que oui, si tu as mis le flag "#PB_Screen_SmartSynchronization" dans l'OpenScreen=> c'est son rôle, normalement.

Re: un tetris

Publié : mer. 17/oct./2012 20:41
par SPH
kelebrindae a écrit :Je dirais que oui, si tu as mis le flag "#PB_Screen_SmartSynchronization" dans l'OpenScreen=> c'est son rôle, normalement.
le PB_Screen_SmartSynchronization est dans le openwindows ! C'est grave ?

Re: un tetris

Publié : mer. 17/oct./2012 21:08
par SPH
Jourbon,

comment coller le openscreen a l'openwindows ?

Code : Tout sélectionner

If InitSprite() And InitMouse() And InitKeyboard() ;And InitSound()
Else
  End
EndIf

If OpenWindow(0, 400, 40, 400, 600, "Tetris", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Screen_SmartSynchronization)

;- Main loop
  Repeat
    Delay(1)
    Repeat
      ; Traite TOUS les événements Windows, afin d'éviter qu'ils s'accumulent dans la file d'attente.
      Event = WindowEvent()
      Select Event
        Case #PB_Event_CloseWindow
          Quit = #True
      EndSelect
    Until Event = 0
  
    ;- Keyboard
    If ExamineKeyboard()
      ; ...Gestion du clavier...  
    EndIf
    
    ;- Mouse
    If ExamineMouse()
      ; ...Gestion de la souris si tu l'utilises (pas forcément nécessaire, dans un Tetris)...  
    EndIf
    
    ;- Logique du jeu
    
    ;- Gestion des graphismes (DisplaySprites ou autre)
    
    ;- Flipbuffers pour affichage et fin de la boucle
    FlipBuffers()
  
  Until Quit = #True
EndIf

End   ; All the opened windows are closed automatically by PureBasic

Re: un tetris

Publié : jeu. 18/oct./2012 8:50
par Le Soldat Inconnu
Comme ça :

Code : Tout sélectionner

If InitSprite() And InitMouse() And InitKeyboard() ; And InitSound()
Else
	End
EndIf

If OpenWindow(0, 400, 40, 400, 600, "Tetris", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
	
	OpenWindowedScreen(WindowID(0), 0, 0, 100, 100, 1, 0, 0, #PB_Screen_WaitSynchronization)
	
	;- Main loop
	Repeat
		
		Repeat
			; Traite TOUS les événements Windows, afin d'éviter qu'ils s'accumulent dans la file d'attente.
			Event = WindowEvent()
			Select Event
				Case #PB_Event_CloseWindow
					Quit = #True
			EndSelect
		Until Event = 0
		
		;- Keyboard
		If ExamineKeyboard()
			; ...Gestion du clavier...
		EndIf
		
		;- Mouse
		If ExamineMouse()
			; ...Gestion de la souris si tu l'utilises (pas forcément nécessaire, dans un Tetris)...
		EndIf
		
		;- Logique du jeu
		
		;- Gestion des graphismes (DisplaySprites ou autre)
		
		;- Flipbuffers pour affichage et fin de la boucle
		FlipBuffers()
		
	Until Quit = #True
EndIf

End ; All the opened windows are closed automatically by PureBasic
Et après vérification, le Delay(1) ne sert à rien, que ce soit avec #PB_Screen_WaitSynchronization ou #PB_Screen_SmartSynchronization . Par contre le debugger fait exploser le processueur

Re: un tetris

Publié : ven. 19/oct./2012 18:05
par SPH
Est ce normal que la souris ait disparu ??

Re: un tetris

Publié : ven. 19/oct./2012 18:34
par Fred
Non, car si il rend la main, il peut louper le flip et pour un jeu utiliser tout CPU dispo est souvent le cas.

Re: un tetris

Publié : ven. 19/oct./2012 23:04
par graph100
@Fred : je pense que tu réponds à LSI, car sinon ça n'a pas trop de sens ;)

@SPH : Oui c'est normal, car lorsque tu utilises la commande ExamineMouse(), la souris est 'capturée' par l'écran graphique

Pour éviter ce problème, et si tu as besoin de la souris ailleurs, tu peux utiliser la façon classique de récupérer les positions souris sur une fenêtre : WindowMouseX() etc..
Mais par contre pour les boutons ce sera moins pratique qu'avec les commandes de la bibliothèque Mouse de Pb

Tu peux aussi ajouter une bout de code qui relâche la souris lorsqu'elle s’approche d'un bord de la fenêtre, avec la commande : ReleaseMouse()

@LSI : Je ne sais pas chez toi, mais moi je n'ai pas d'augmentation de processeur conséquente pour le code que tu as fournis (avec ou sans delay et débugger),
par contre j'ai fermé le navigateur internet pour ne pas fausser les résultats ^^