Désolé. Voici mon code for (int i=1; i<=NI/2; i++) {
for (int j=1; j<=NJ; j++) {
oldMatrix[i][j]=0;
}}
for (int i=NI/2+1; i <= 3*NI/4; i++) {
for (int j=1; j<=NJ; j++) {
oldMatrix[i][j]=1;
}}
for (int i=3*NI/4+1; i<=NI; i++) {
for (int j=1; j<=NJ; j++) {
oldMatrix[i][j]= -1;
}}
RenderWindow app(VideoMode(400, 200, 32), "Prey Predator");
Image monimage(NI, NJ);
// Boucle principale
while (app.isOpen())
{
for (int i=1; i<=NI; i++) {
for (int j=1; j<=NJ; j++) {
if(oldMatrix[i][j] > 0) monimage.SetPixel(i, j, Color::Green);
if (newMatrix[i][j] == 0) monimage.SetPixel(i, j, Color::Blue);
if (oldMatrix[i][j] < 0) monimage.SetPixel(i, j, Color::Red);
}}
// Affichage de la fenêtre à l'écran
app.clear(Color::Black);
app.draw(monimage);
app.display();
system("pause");
}
On voit que oldMatrix est rempli à moitié de 0, le quart sont des 1 et le quart restant des -1. On affiche un pixel en bleu si oldMatrix vaut 0 à la même location.
Or à l'affichage la moitié de app est blanche et non bleue. Je ne sais pas pourquoi. Les deux autres "quarts" sont corrects.
J'ai la SFML 2.1 sous Windows 64 bits (avec la bibliothèque 64 bits aussi) et une Nvidia 670M.
@kimci86 : C'est intentionnel, les cellules d'indices 0 représentent des valeurs spéciales.
Désolé, en fait je modifiais un fichier dans Visual Studio or quand je compilais c'était les fichiers du projet ouvert qui compilaient d'où le fait que j'obtenais toujours les mêmes résultats... ce problème se produit quand on sauvegarde une copie du fichier courant, c'est le nouveau fichier qui apparait dans l'IDE or visual compile toujours l'ancien...
J'ai juste une dernière question : Utiliser un tableau de vertex comme je le fait : "Vertex Ocean[NI+1][NJ+1];" est-il le meilleur moyen de modifier pixel par pixel une image, ou existe-t-il un meilleur moyen comme la classe Image qui n'existe plus dans la SFML 2.1 ? Sachant qu'il n'y a aucun lien entre mes pixels : je ne veux pas de dégradés, interpolations etc.
Enfait avec cette solution je suis obligé de fixer la position des pixels pour utiliser directement les indices de Ocean :
for (int i=1; i<NI; i++){
for (int j=1; j<NJ; j++){
Ocean[i][j].position=Vector2f(i, j);}}
D'où le fait que je me demande si il y avait un moyen plus adapté comme la classe Image.