0
Iam新增至c和gu中c。這是我的問題。 這兩個函數都可以獨立正常工作,但是當我按下按鍵時,snake_move函數不會改變它的關鍵值。窗口小部件在執行時甚至不會打開。 如果我不叫蛇移動的每一件事情都很好,即key_event工作!如何更改代碼,以便在按下任何箭頭鍵時,snake_call函數中的key_val會發生變化?當按下任何箭頭鍵時更改函數中的變量
在此先感謝
//Detects the key and puts the value to new
static gboolean
key_event(GtkWidget *widget, GdkEventKey *event ,int* new) {
if(strcmp(gdk_keyval_name (event->keyval),"Up")==0) {
*new = 8;
printf("%d\n",*new);
} else if(strcmp(gdk_keyval_name (event->keyval),"Down")==0) {
*new=2;
printf("%d\n",*new);
} else if(strcmp(gdk_keyval_name (event->keyval),"Right")==0) {
*new=6;
printf("%d\n",*new);
} else if(strcmp(gdk_keyval_name (event->keyval),"Left")==0) {
*new=4;
printf("%d\n",*new);
}
return FALSE;
}
//Moves the snake by one bit in the direction specified by new (*new = 8 means up so on
void snake_loop(int**arr,int lenth,int*new,int*pos_x ,int *pos_y) {
int x_pos,y_pos,key_value;
x_pos=*pos_x ;y_pos =*pos_y;
while(1) {
key_value = *new;
snake_move(arr ,&lenth ,key_value,&x_pos ,&y_pos);
sleep(1);
}
}