【发布时间】:2020-04-19 04:47:57
【问题描述】:
当我初始化 Allegro 时,我绘制了一个 2D 表格,它的单元格将在程序期间更改为白色/黑色
//Global variables
int** board;
//Draw 2D board
for (int i = 0; i < SCREEN_H ; i++) {
for (int j = 0; j < SCREEN_W; j++) {
al_draw_rectangle((j) * CELL_SIZE, (i) * CELL_SIZE, (j + 1) * CELL_SIZE, (i + 1) * CELL_SIZE, BLACK, 1.0);
}
}
al_flip_display();
在 while 循环之前,它初始化 2D 动态指针 board,随机值介于 0 和 1 之间。
在while循环中我改变了单元格的颜色
//changes the values of board based on the rules of the Conway's Game of Life
generate();
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < columns; ++j) {
//Redrawing the table
al_draw_rectangle((j) * CELL_SIZE, (i) * CELL_SIZE, (j + 1) * CELL_SIZE, (i + 1) * CELL_SIZE, BLACK, 1.0);
if(board[i][j] == 1){
al_draw_filled_rectangle((j) * CELL_SIZE, (i) * CELL_SIZE, (j + 1) * CELL_SIZE, (i + 1) * CELL_SIZE, BLACK);
}else{
al_draw_filled_rectangle((j) * CELL_SIZE, (i) * CELL_SIZE, (j + 1) * CELL_SIZE, (i + 1) * CELL_SIZE, WHITE);
}
}
}
但是在 for 循环中我需要重新绘制表格。
如何避免 Allegro 在我绘制单个单元格时重绘静态背景?
【问题讨论】: