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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
| struct processData
{
GtkWidget* win_menu;
GtkWidget* win_game;
GtkWidget* win_inst;
GtkWidget* win_high;
GtkImage* tuyau[21];
GtkImage* tuyau2[21];
//GtkButton* button[12][8];
GtkImage* casevide;
GtkButton* buttonpioche;
int num;
int briquerest;
int I, J;
t_bouton boutons [12][8];
};
void new_game(GtkButton* sender, struct processData* data)
{
// Declarations
// Win et Box
GtkWidget *win = NULL;
GtkTable *tableH = NULL;
GtkTable *tableB = NULL;
GtkVBox *vbox = NULL;
GtkVBox *vbox1 = NULL;
GtkVBox *vbox2 = NULL;
GtkVBox *vbox3 = NULL;
GtkVBox *vbox4 = NULL;
GtkVBox *hbox = NULL;
// Boutons
GtkButton *quitbutton = NULL;
GtkButton *savebutton = NULL;
GtkButton *loadbutton = NULL;
GtkButton *turnbutton = NULL;
// Images et labels
GtkImage *casenouv = NULL;
GtkLabel *score = NULL;
GtkLabel *scoreDc = NULL;
GtkLabel *pioche = NULL;
GtkLabel *nbpioche= NULL; // c'est le label qui va afficher le score
// Variables
int i, j, num;
char chaine[10]; // J'ai cree une chaine de caractere
char nom[100];
data->briquerest = 80;
sprintf(chaine,"%c",data->briquerest ); // dans cette chaine je rentre le score
// Window
gtk_widget_hide_all(data->win_menu);
win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_resizable(win,FALSE);
gtk_window_position(win, 1);
gtk_window_set_title(win, "Connect");
data->win_game = win;
// Table
tableB = gtk_table_new (4,1,FALSE);
tableH = gtk_table_new (12,8,FALSE);
// Vbox
vbox = gtk_vbox_new(FALSE,0);
vbox1 = gtk_vbox_new(FALSE,0);
vbox2 = gtk_vbox_new(FALSE,0);
vbox3 = gtk_vbox_new(FALSE,0);
vbox4 = gtk_vbox_new(FALSE,0);
hbox = gtk_hbox_new(FALSE,0);
//Affichage de la grille (Table superieure)
for (i=0; i<12; i++)
{
for (j=0; j<8; j++)
{
data->boutons[i][j].button = gtk_button_new ();
data->boutons[i][j].bas=0;
data->boutons[i][j].haut=0;
data->boutons[i][j].gauche=0;
data->boutons[i][j].droite=0;
data->boutons[i][j].flag=0;
data->boutons[i][j].life=0;
gtk_table_attach_defaults (tableH, data->boutons[i][j].button,i,i+1,j,j+1);
data->casevide = gtk_image_new_from_file ("pics/casevide.jpg");
//gtk_container_add (button[i][j], casevide);
gtk_button_set_image (data->boutons[i][j].button, data->casevide);
}
}
//Affichage de la Table inferieure
//Buttons
data->buttonpioche = gtk_button_new ();
quitbutton = gtk_button_new_with_label ("Retour au menu");
savebutton = gtk_button_new_with_label ("Sauvegarder");
loadbutton = gtk_button_new_with_label ("Charger");
turnbutton = gtk_button_new_with_label ("Tourner");
//Labels
score = gtk_label_new("Score");
scoreDc = gtk_label_new("Score Dernier Cycle");
pioche = gtk_label_new("Briques restantes:");
nbpioche = gtk_label_new(chaine); // Le label "contient" la chaine
// Mise en page
gtk_container_add(vbox4,data->buttonpioche);
gtk_container_add(vbox3,savebutton);
gtk_container_add(vbox3,loadbutton);
gtk_container_add(vbox3,quitbutton);
gtk_container_add(vbox2,score);
gtk_container_add(vbox2,hbox);
gtk_container_add(hbox,scoreDc);
gtk_container_add(hbox,nbpioche); // Je met le label dans une hbox
gtk_container_add(vbox1,pioche);
gtk_container_add(vbox1,turnbutton);
gtk_table_attach_defaults (tableB, vbox4,0,1,0,1);
gtk_table_attach_defaults (tableB, vbox1,1,2,0,1);
gtk_table_attach_defaults (tableB, vbox2,2,3,0,1);
gtk_table_attach_defaults (tableB, vbox3,3,4,0,1);
gtk_container_add(win, vbox);
gtk_container_add(vbox, tableH);
gtk_container_add(vbox, tableB);
// Evenments
// Quitter
g_signal_connect(quitbutton,"clicked",G_CALLBACK(dialog_menu),data);
// Randomisation de la premiere pioche
rand_case(data->buttonpioche,data);
// Fonction "Passer
g_signal_connect(data->buttonpioche,"clicked",rand_case,data);
// Mettre la brique dans le button[i][j]
for (i=0; i<12;i++)
{
for(j=0;j<8;j++)
{
g_signal_connect(data->boutons[i][j].button,"clicked",action_case,data);
}
}
// Faire tourner les briques
g_signal_connect(turnbutton,"clicked",tourner_brique,data);
gtk_widget_show_all(win);
} |
Partager