MODE VESA HAUTE RESOLUTION [DJGPP]

Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 - 6 août 2004 à 00:37
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 - 15 oct. 2004 à 20:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/25168-mode-vesa-haute-resolution-djgpp

Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
15 oct. 2004 à 20:26
C'est une source qui ne compile que sous DJGPP et ces fichiers sont spécifiques à ce compilo.
Si t'es sous Visual C++ ou Dev-C++, n'espère même pas; ce sont des compilos pour Windows et la source est pour DOS (ce qui est différent, malgré ce qu'on pourrait penser ^^)
the_verms Messages postés 1 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 15 octobre 2004
15 oct. 2004 à 11:36
Je sais que je suis un newbie mais...

#include
#include <conio.h>
#include <dpmi.h>
#include <go32.h>
#include
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/farptr.h>
#include <sys/movedata.h>
#include <time.h>

Cela implique qu'il est nécessaire d'avoir ces fichiers (et la bonne version) pour la compilation. Mais quand on ne les a pas, comment fait-ton? Où les trouve-t-on?

Thx d'avance....
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009
3 sept. 2004 à 14:23
ça marche pas :

void main(void)
{
int tm;


clrscr();

tm=clock();
gotoxy(1,1);printf("a= %d",tm);

for(int i=0;i<100;i++) y++;
tm=clock()-tm;
tm=(tm*1000)/CLOCKS_PER_SEC;
gotoxy(1,2);printf("b= %d",tm);

getch();

}

ou alors ça marche pas ou bien aucun n'est passé pendant la boucle for et le gotoxy() + le printf.
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009
3 sept. 2004 à 12:26
Merci c'est cool pais je vais un peu prendre pn temps pour tester je suis un peu pris c'est temps si.
ça ne te derange pas si je tarde à te donner les resultat du test ?
cs_gorgonzola Messages postés 37 Date d'inscription samedi 16 mars 2002 Statut Membre Dernière intervention 21 février 2015
27 août 2004 à 21:41
OK si j'ai bien compris tu veux pas attendre mais compter les microsecondes. Alors c'est simple, en fait la fonction clock() renvoie le nombre de tics du processeur actuel (comme pour la fonction time() sauf que c'est des 'tics' et pas des secondes). et 'CLOCKS_PER_SEC' est le nombre de tics dans une seconde.
Autrement dit il te suffit de faire :

tmp=clock(); // mémorise le nombre de tics actuel

...
ici tu met ton code, ce que tu veux
...

tmp=clock()-tmp; // calcule le nombre de tics actuel moins le nombre de tics de la derniere fois, autrement dit 'tmp' va contenir le nombre de tics passé

tmp=(tmp*1000)/CLOCKS_PER_SEC; // et maintenant convertit le nombre de tics en microsecondes !

Voila, puis après tu fais ce que tu veux avec 'tmp' qui contient le nombre de microsecondes passées.
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009
10 août 2004 à 10:42
j'ai lu ta source mais ya un hic le programme ne doit pas s'interrompre c'est un chrono du genre

in main()
{
do
{
if ( ok=chrono(200)) y++;
if ( ok2=chrono(500)) y2++;
if (kbhit()) e=getch();
/* {
si des touches taper faire qq chose
} */
capture _arriereplan(x,y,dx,dy);
restore_arriereplan(dx,dy);
afiche_pcx(image1,x,y);
afiche_pcx(image0,x,y2);

}
while(e!=27);

}

comme tu peut le constater la fonction chrono renvois 1 si X ms sont passé depuis sont dernière appel et ainsi toutes les X milli seconde + le temps d'execution d'une boucle y et y2 sont incrémenter.
ca me permettra de pouvoire synchroniser le mouvement de plusieurs ennemis dans mon jeu.au fait c'est sur turbo c
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009
10 août 2004 à 10:30
Merci t'es génial
cs_gorgonzola Messages postés 37 Date d'inscription samedi 16 mars 2002 Statut Membre Dernière intervention 21 février 2015
9 août 2004 à 14:00
t'as de la chance j'avais déjà fait une source pour attendre X microsecondes il y a quelques temps :

http://www.cppfrance.com/code.aspx?id=9952
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009
9 août 2004 à 13:26
Génial je n'vais besoin que de ça mais dit moi j'ai un petit blème tu pourras peut être m'aider : j'ai besoin d'un chrono pour un programme genre castelvania que je prépare.
voilà il me faut créer un timer pour que mes personnages puisse bouger par ex: le perso 1 ne peut pas effectuer de mouvement avant que 800ms ne sois passées sepuis son dernier mouvement ,le perso 2 600ms et ainsi de suite.
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
6 août 2004 à 00:37
Excellente source :) Ça marche très bien chez moi :)
Le seul truc peut-être c'est les commentaires, notamment pour la fonction line(). C'est ça l'algo de Bresenham?