Salut,
est ce que tu développes en visual C++ ?
Kevina
-------------------------------
Réponse au message :
-------------------------------
>
Yafuka ( * _ * ) 
>
> salut je fais mes premiers pas en programmation graphique. je suis actuellement un tutorial et je n arrive pas a compiler la source. quelqu'un pourrait m'aider ou me conseiller sur un site ou meme le compilateur a utiliser ?
>
> le code est ci dessous..
>
> //////////////////////////// debut du code //////////////////
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <conio.h>
> #include <dos.h>
> #include <mem.h>
>
> #define MAX_ETOILES 500
>
> char far *vga = (char far *) MK_FP(0xA000, 0); // pointeur sur memoire video
>
> typedef unsigned char byte; // char non signe 0-255
>
> typedef struct type_etoile // pour contenir les infos sur chaque etoiles
> {
> int x,y,z;
> };
>
>
> /****************************************************************************/
> /* SetVGA - Appelle le mode 320x200x256 13h du BIOS */
> /****************************************************************************/
> void SetVGA()
> {
> _AX = 0x0013;
> geninterrupt (0x10);
> }
>
>
> /****************************************************************************/
> /* Putpixel - Affiche un pixel directement dans la memoire */
> /****************************************************************************/
> void Putpixel (int x, int y, byte col)
> {
> memset(vga+x+(y*320),col,1);
> }
>
>
> /****************************************************************************/
> /* SetText - Appelle le mode texte 03h du BIOS */
> /****************************************************************************/
> void SetText()
> {
> _AX = 0x0003;
> geninterrupt (0x10);
> }
>
>
> /****************************************************************************/
> /* Cls - Vide l'ecran avec la couleur col */
> /****************************************************************************/
> void Cls(unsigned char col)
> {
> memset(vga,col,0xffff);
> }
>
>
> /*************************** PROGRAMME PRINCIPAL ****************************/
>
>
> main()
> {
>
> // Rappel mathematique: % = modulo, le reste de la division entiere
> // x mod y donne toujours entre 0 et y ex: x % 15 donne toujours
> // un nombre entre 0 et 15. Bon moyen pour ramener des valeurs dans
> // un cadre defini. On s'en sert en adressage disperse.
>
> int et;
> byte col;
> type_etoile etoiles[MAX_ETOILES]; // Tableau d'etoiles du type etoiles
> // definie plus haut
> SetText();
> printf("*** CHAPITRE 1 - Mode video VGA et Putpixel ***\n\n\n");
> printf("Ce programme illustre les differentes notions vues\n");
> printf("dans le premier chapitre. Le programme cree un champs\n");
> printf("d'etoiles defilantes, ou un starfield en anglais. Pour\n");
> printf("debuter, appuyer sur une touche...");
> getch();
>
> SetVGA();
> randomize(); // Generateur de nombres aleatoires
> for (int i=0;i<=MAX_ETOILES;i++) // Initialise la structure a 0
> {
> etoiles[i].x = 0;
> etoiles[i].y = 0;
> etoiles[i].z = 0;
> }
>
> do // boucle
> {
> delay(20); // Modifier la valeur de delay pour modifier la vitesse
> for (et=0;et<MAX_ETOILES;et++) // Pour chaque etoiles
> {
> Putpixel(etoiles[et].x,etoiles[et].y,0); //efface ancienne position
> etoiles[et].x = etoiles[et].x - (etoiles[et].z % 15 + 1); // la vitesse de deplacement en fonction du z
> if (etoiles[et].x <= 0) // si l'etoile est a gauche...
> {
> etoiles[et].x = 319; // on la remet a droite,
> etoiles[et].y = random(200); // a une nouvelle hauteur,
> etoiles[et].z = random (256); // sur un nouveau z.
> }
> col = etoiles[et].z % 15 + 17; // couleurs 17-32 sont des tons de gris
> Putpixel(etoiles[et].x,etoiles[et].y,col); // affiche nouvelle position
> }
> } while (!kbhit()); // tant qu'une touche n'est pas enfoncer
>
>
> SetText();
> printf("*** CHAPITRE 1 - Mode video VGA et Putpixel ***\n\n\n");
> printf("Le principe de ce programme est que chaque etoile est derementee\n");
> printf("en fonction de son z, ce qui donne un effet de profondeur a l'effet.\n");
> printf("Un tableau de type etoile comprenant sa coordonee X, Y ainsi que son z\n");
> printf(", sa 'profondeur', contient les informations de chaque etoiles.\n");
> printf("Pour chaque etoile, on verifie qu'elle n'est pas encore rendue a gauche.\n");
> printf("Si c'est le cas, elle retourne a droite, sinon, sa positions est mise a jour.\n");
> printf("Le programme profite du fait que les couleurs 17-32 sont des degrader de tons\n");
> printf("gris. Plus d'informations sont disponibles dans le code source. Pour questions\n");
> printf("et commentaires:\n\nShaun Dore * Krashlog * dores@videotron.ca");
> getch();
> getch();
>
> return 0;
> }