un tetris

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Re: un tetris

Message par kelebrindae »

Je dirais que oui, si tu as mis le flag "#PB_Screen_SmartSynchronization" dans l'OpenScreen=> c'est son rôle, normalement.
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: un tetris

Message 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 ?

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: un tetris

Message 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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: un tetris

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: un tetris

Message par SPH »

Est ce normal que la souris ait disparu ??

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Fred
Site Admin
Messages : 2805
Inscription : mer. 21/janv./2004 11:03

Re: un tetris

Message 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.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: un tetris

Message 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 ^^
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Répondre