我学会了将函数作为参数传递的技巧
while((ch = getch()) != KEY_F(2)) {
switch(ch) {
case KEY_MOUSE :
if (getmouse(&event) == OK) {
if (event.y == 39 && event.x >= 1 && event.x <= 10) {
item_actif = PLUS;
mvwprintw(fen_outils, 0, 1, "X");
mvwprintw(fen_outils, 1, 1, " ");
wrefresh(fen_outils);
}
else if (event.y == 40 && event.x >=1 && event.x <= 10) {
item_actif = MINUS;
mvwprintw(fen_outils, 0, 1, " ");
mvwprintw(fen_outils, 1, 1, "X");
wrefresh(fen_outils);
}
else if (event.y > 0 && event.y < NB_LIGNES_SIM + 1 && event.x > 0 && event.x < NB_COL_SIM + 1) {
switch (item_actif) {
case PLUS :
k=0;
l=0;
for(i = 0;i<36;i+=4){
k++;
l=0;
for(j=19;j<129;j+=11){
if((event.y==i+1 && event.x==j+1)){
++tab[k][l];
sprintf(tabChar[k][l],"%d",tab[k][l]);
mvwprintw(fen_sim, event.y - 1, event.x - 1, tabChar[k][l]);
wrefresh(fen_sim);
refresh();
break;
}
l++;
}
}
break;
case MINUS :
k=0;
l=0;
for(i = 0;i<36;i+=4){
k++;
l=0;
for(j=19;j<129;j+=11){
if((event.y==i+1 && event.x==j+1)){
--tab[k][l];
sprintf(tabChar[k][l],"%d",tab[k][l]);
mvwprintw(fen_sim, event.y - 1, event.x - 1, tabChar[k][l]);
wrefresh(fen_sim);
refresh();
break;
}
l++;
}
}
}
}
}
}
}
我觉得将所需的函数封装到一个甚至有助于思考过程的列表中真是太棒了。
这种做法的模式是什么?