[djgpp & allegro] matrix

Contenu du snippet

J'ai déjà laissé un prog du même type fait avec econio.h pour VC++
C'est le même mais pour DJGPP
C'est autrement plus beau

Source / Exemple :


// MATRIX BY GOLDENEYE 
// Compilé avec DJGPP. Linux compatible
// Je vous préviens, c'est très condensé.
// Pour toute question/suggestion: herve.picard@int-evry.fr
#include "allegro.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N1 25 // rez du mode text (lignes)
#define N2 80 // (colonnes)

int main()
{
	BITMAP *doublebuffer;
	int N=1000; // indicateur de la charge de l'écran (voir algorithme)
	int h,k,l,n,rnd;//rnd pour random
	int ecran[N1][N2];// la matrice de l'écran en mode texte
	srand(time(0));//intialisation du randomizer
	allegro_init();
	doublebuffer=create_bitmap(640,480);
                clear(doublebuffer); //efface:on ne sait jamais
	install_keyboard();
	install_timer(); //pour ralentir le prog
	set_gfx_mode(GFX_AUTODETECT,640,480,0,0); // essayer 800*600
	while(key[KEY_ESC]==0) // tant qu'on a pas fait [ESC]
	{// un premier passage à vide
                                rest(75); // se regarde le nombril pendant 75 ms
		for(h=N1-1;h>0;h--) // lignes
		{
			for(l=0;l<N2;l++) //colonnes
			{ // là ça devient rigolo: programmé à la GoldenEye
				while(((rnd=48+rand()%74)<65&&rnd>57)||(rnd>90&&rnd<97)); //tant que c'est pas un chiffre ou une lettre
				ecran[h][l]=(ecran[h-1][l]!=32?rnd:ecran[h][l]); // 32=code ASCII de l'espace
				if(ecran[h][l]!=32&&h==N1-1) //si la colonne est pleine
					for (k=0;k<N1;k++) //efface la colonne
						ecran[k][l]=32; // 32=code de [SPC] pour les neuneus
				textprintf(doublebuffer,font,l*8,h*19,2,"%c",ecran[h][l]);// affiche le caractère ASCII contenu dans la case ecran[h][l]
            }//en effet 640/80=8 et 480/25=19
		}
		for(n=0;n<N2;n++) // première ligne tout en haut
		{
			rnd=rand()%N;
			(!((rnd<48)||(rnd>57&&rnd<65)||(rnd>122)))?(ecran[0][n]=rnd):(ecran[0][n]=32); // si c pas une lettre ou un chiffre,on met un espace
		}
		vsync(); //synchro avec l'écran pour éviter les saloperies à l'écran
		blit(doublebuffer,screen,0,0,0,0,640,480);// et hop, on swappe l'écran réel et l'écran virtuel
    }
    destroy_bitmap(doublebuffer); // pour être propre
    allegro_exit(); //idem
	return 0;
}

Conclusion :


Bug à herve.picard@int-evry.fr

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.