Pas encore membre?


[Complément] Deux astuces pour créer un jeu
index des tutoriaux >> C - SDK [ graph85 ] >> [Complément] Deux astuces pour créer un jeu posté le 07/10/2007 à 10:12

Pylaterreur

MP / Email
Informations:

[Complément] Deux astuces pour créer un jeu
posté le 07/10/2007 à 10:12
par Pylaterreur

permalien:

Ce tuto est en fait plus un trucs-et-astuces qu’autre chose.
Lorsque vous créez un jeu, plusieurs problèmes se posent, et les deux principaux sont les suivants :

I] Comment éviter le scintillement dû au rafraichissement de l’écran

II] Comment faire pour que le jeu ne ralentisse pas lorsqu’on appuie sur une touche de contrôle




I] Le scintillement de l’écran est dû à une fréquence de rafraichissement trop faible : en effet, on a pris l’habitude de :

a) effacer l’écran et la VRAM avec Bdisp_AllClr_DDVRAM()
b) dessiner dans la VRAM avec, par exemple, Bdisp_DrawLineVRAM(X1,Y1,X2,Y2)
c) tracer avec Bdisp_PutDisp_DD()

Le problème du scintillement se pose lorsque l’étape b (le dessin) prend du temps : l’écran reste trop longtemps effacé, et l’œil s’en rend compte. Thomatos et moi avons trouvé une solution. Cette solution consiste à dessiner dans la VRAM avant d’effacer l’écran, puis de tracer la VRAM sur l’écran, puis d’effacer la VRAM :

a) dessiner dans la VRAM avec, par exemple, Bdisp_DrawLineVRAM(X1,Y1,X2,Y2)
b) effacer l’écran avec Bdisp_AllClr_DD()
c) tracer avec Bdisp_PutDisp_DD()
d) effacer la VRAM avec Bdisp_AllClr_VRAM()




II] Vous avez déjà rencontré le problème suivant : votre jeu super rapide ralentit dès que vous voulez tourner à droite 

Il y a une seule solution vraiment efficace, d’après moi : l’utilisation de timers. Il vous faudra créer un timer avec la fonction SetTimer. Elle vous permettra d’exécuter tous les X millisecondes une fonction (pour le cas du Snake de Muelsaco, le timer appelait la fonction de déplacement du Snake).
Cette fonction prend en compte 3 paramètres : le premier est le numéro du timer, de type int. Le deuxième paramètre est de type int lui aussi ; il indique tous les combiens de millisecondes la fonction va être appelée. Le troisième paramètre indique le nom de la fonction.
Pour supprimer le timer, utilisez la fonction KillTimer, qui prend un seul paramètre : le numéro d'identification du timer.

Voici les prototype des fonctions tels qu'ils sont dans la doc :
Code: int SetTimer(
int ID, // timer identifier
int elapse, // time-out value
void (*hander)(void) // address of timer procedure
);

int KillTimer(
int ID
);


Si vous avez des questions, allez sur le forum , et n'oubliez pas la documentation officielle


[Complément] Deux astuces pour créer un jeu posté le 07/10/2007 à 10:12 par Pylaterreur




http://top-progcasio.com V5.0 © par Bebe Vador 2005 - 2008 | il y a 2 personnes connectées | sitemap(txt) | sitemap(html) | sitemap(xml)