Bonsoir !
Je développe dans le cadre d'un projet scolaire un jeu de tétris. Hélas, un bug bizarre me bloque depuis quelques temps.

Voilà la source : http://pastebin.com/mca18847
La compilation requiert la SFML de Laurent Gomila.

Mon problème : dans la méthode place de la classe Tetris, dans la boucle, gdb me dit que je modifie une variable, alors que c'est faux (ligne ~404).

Voilà ce que me dit gdb :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
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
kreeg@kubuntu:~/Bureau/C++$ gdb ./tetris -q
Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".
(gdb) b 281
Breakpoint 1 at 0x8049ef7: file tetris.cpp, line 281.
(gdb) enable once 1
(gdb) run
Starting program: /home/kreeg/Bureau/C++/tetris
[Thread debugging using libthread_db enabled]
[New Thread 0xb6d76900 (LWP 8325)]
[Switching to Thread 0xb6d76900 (LWP 8325)]
 
Breakpoint 1, Tetris (this=0xbfd55888, renderer=0x80f5dd0) at tetris.cpp:281
281     }
(gdb) p &current_brick
$1 = (Tetris::Brick *) 0xbfd55888
(gdb) watch *(0xbfd55888)
Hardware watchpoint 2: *3218430088
(gdb) continue
Continuing.
Hardware watchpoint 2: *3218430088
 
Old value = 135419368
New value = 3
Tetris::place (this=0xbfd55888, p={x = 1, y = -21}, dim={x = 4, y = 1}) at tetris.cpp:404
404                     for (int j = p.y - dim.y + 1; j <= p.y; j++)
(gdb) kill
Kill the program being debugged? (y or n) y
(gdb) quit
kreeg@kubuntu:~/Bureau/C++$
Merci d'avance !