Я делаю игру в дартс и создал весь макет страницы игры.Я хочу дождаться, когда дротик ударит по доске, что может занять разное время, затем обновить счет для этого дротика, обновить оставшиеся очки, оставленные игроком, и обновить счет раунда.
Я делаюмакет, вызовите gtk_widget_show_all (window) ;, затем вызовите await_dart_hit ();
Окно не отображается, пока дротик не попадет.Как будто окно не может отображаться, пока не завершится вся функция, но я попытался создать окно в отдельной функции, затем вернуть, затем вызвать await_dart_hit ();и это тоже не работает.
#include <gtk/gtk.h>
void problem_causing_wait(){
while(1);
}
void start(){
GtkWidget *window;
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"Start");
gtk_container_set_border_width(GTK_CONTAINER(window),10);
gtk_window_set_default_size(GTK_WINDOW(window),1000,400);
gtk_widget_show_all(window);
problem_causing_wait();
}
int main(int argc, char *argv[]) {
GtkWidget *window, *button, *button_box;
gtk_init(&argc,&argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"Welcome!");
gtk_window_set_default_size(GTK_WINDOW(window),1000,400);
button_box = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
gtk_container_add(GTK_CONTAINER(window),button_box);
button = gtk_button_new_with_label("Get Started");
g_signal_connect (button, "clicked", G_CALLBACK (start), NULL);
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window);
gtk_container_add(GTK_CONTAINER(button_box),button);
gtk_widget_show_all(window);
gtk_main();
return(0);
}
Если вы запустите этот код, вы увидите, что как только вы нажмете кнопку «Начать», он зависнет.Он не отображает окно «Пуск», несмотря на то, что показывает все перед вызовом функции problem_causing_wait ().
Пожалуйста, помогите!
скомпилировано с: gcc main.c -o main pkg-config --cflags --libs gtk+-3.0