| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 
 | //----------------------------------------------------------------------//
// FICHIER              : 2DCHAP1.CPP			                        //
// AUTEUR               : Shaun Dore					                //
// DESCRIPTION  	    : Starfield horizontal pour demontrer putpixel  //
// DATE DE MODIFICATION : 30-09-97	                              	    //
// COMPILATEUR          : Borland Turbo C++ Real Mode 16-bit compiler   //
// NOTES                : Compiler avec modele memoire COMPACT          //
//----------------------------------------------------------------------//
 
//----------------------------------------------------------------------//
// Fichiers include                                                     //
//----------------------------------------------------------------------//
#include<time.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
//----------------------------------------------------------------------//
// Declaration des constantes                                           //
//----------------------------------------------------------------------//
 
#define MAX_ETOILES 500
 
//----------------------------------------------------------------------//
// Types personalises                                                   //
//----------------------------------------------------------------------//
 
 struct type_etoile  // Pour contenir les infos sur chaque etoiles
{                           // Coordonnees x,y et "z"
  int x,y,z;
};
 
//----------------------------------------------------------------------//
// Variables globales           				  				        //
//----------------------------------------------------------------------//
 
char *ecran = (char *) (0xA0000000L);  // Pointeur sur RAM video
 
//----------------------------------------------------------------------//
// setmode - Appelle le mode passer en parametre                        //
//----------------------------------------------------------------------//
void setmode( )
{
  _asm {
	   mov Ah,0 
       mov al,19
	   int 10h
	 }
}
 
//----------------------------------------------------------------------//
// putpixel - Affiche un pixel directement dans la memoire              //
//----------------------------------------------------------------------//
void putpixel (int x, int y, unsigned char coul)
{
  ecran[(y*320)+x] = coul;
}
 
//----------------------------------------------------------------------//
// Fonction MAIN		           				  			            //
//----------------------------------------------------------------------//
void main()
{
 
  int et;
  unsigned char coul;
  type_etoile etoiles[MAX_ETOILES]; 
  setmode();
  srand(time(NULL));                     
  for (int i=0;i<=MAX_ETOILES;i++)  
  {
    etoiles[i].x = 0;
    etoiles[i].y = 0;
    etoiles[i].z = 0;
  }
  do
  {
    for (et=0;et<MAX_ETOILES;et++)
    {
	 for (unsigned int ralenti=0; ralenti<=1000; ralenti++) {} 
	 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 = rand()%200; // a une nouvelle hauteur,
	   etoiles[et].z = rand()%256; // sur un nouveau z.
      }
      coul = etoiles[et].z % 15 + 17;             // 17-32 = tons de gris
      putpixel(etoiles[et].x,etoiles[et].y,coul); // affiche nouvelle position
    }
  } while (!kbhit());
 
  setmode();
  printf("Shaun Dore\ndores@videotron.ca\nhttp://pages.infinit.net/shaun/");
} | 
Partager