读心术游戏

mind_reader.c

 

#include <gtk/gtk.h>

gchar *str[] = {"♠","♣","♥","♬","♪","♩","♭","☏","♂","♀","☺",
        "♧","♡","◊","☆","☊","☋","の","£","☪","♋","☯",
        "☂","✈","✉","☈","♨","@","㊣","⊕","あ","§","¥"};
struct A
{
    GtkWidget *label;
};
GtkWidget *show_label;
struct A a[100];
GtkWidget *btn;
gint j,id;
PangoFontDescription *desc;

void on_mouse_click();

void reset()
{
    gint i,index;
    gchar buf[10];
    for (i=0;i<100;i++)
    {
        index = g_random_int_range(0,33);
        g_sprintf(buf,"%d:%s",i,str[index]);
        if (i==9)
            j = index;
        if (i>9 && i<90 && !(i%9))
            g_sprintf(buf,"%d:%s",i,str[j]);
        gtk_label_set_text(GTK_LABEL(a[i].label),buf);
    }
    gtk_label_set_text(GTK_LABEL(show_label),"");
    gtk_button_set_label(GTK_BUTTON(btn),"OK");
    g_signal_handler_disconnect(G_OBJECT(btn),id);
    id = g_signal_connect(G_OBJECT(btn),"button-press-event",
            G_CALLBACK(on_mouse_click),NULL);
}

void on_mouse_click()
{
    gtk_label_set_text(GTK_LABEL(show_label),str[j]);
    desc = pango_font_description_from_string("Simhei 100");
    gtk_widget_modify_font(show_label,desc);
    gtk_button_set_label(GTK_BUTTON(btn),"Try again");
    g_signal_handler_disconnect(G_OBJECT(btn),id);
    id = g_signal_connect(G_OBJECT(btn),"button-press-event",
            G_CALLBACK(reset),NULL);
}
void creat_ui()
{   
    GtkWidget *window;
    GtkWidget *hbox;
    GtkWidget *vbox;
    GtkWidget *button;
    GtkWidget *frame;
    GtkWidget *separator;
    GtkWidget *label;

    gint i,index;
    gchar buf[10];

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title (GTK_WINDOW (window), "Mind_Reader");
    g_signal_connect(G_OBJECT(window), "delete_event",G_CALLBACK(gtk_main_quit), NULL);
    gtk_container_set_border_width (GTK_CONTAINER (window), 20);
//    gtk_widget_set_size_request(window,500,400);
    gtk_window_set_resizable (GTK_WINDOW (window), FALSE);

    hbox = gtk_hbox_new(FALSE, 0);
    gtk_container_add (GTK_CONTAINER (window), hbox);

    vbox=gtk_vbox_new(FALSE, 0);
    gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
    frame = gtk_frame_new("Amazing");
//    gtk_widget_set_usize(frame, 100, 200);
    show_label = gtk_label_new("");
    gtk_widget_set_usize(show_label, 100, 200);
    gtk_container_add (GTK_CONTAINER (frame), show_label);
    gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 5);

//    separator = gtk_hseparator_new();
//    gtk_box_pack_start (GTK_BOX (vbox), separator, FALSE, TRUE,5);

    frame = gtk_frame_new("Rule");
    label = gtk_label_new("Choose any two digit number,add together both digits and then subtract the total from your original number./n" /
            "When you have the final number, look it up on the chart and find the relevant symbol, and remember it./n" /
            "Then click on the 'OK', and it will show you the symbol you are remember ...");
    desc = pango_font_description_from_string("Simhei 10");
    gtk_widget_modify_font(label,desc);
    gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
//    gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
    gtk_container_add (GTK_CONTAINER (frame), label);
    gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 5);
    separator = gtk_hseparator_new();
    gtk_box_pack_start (GTK_BOX (vbox), separator, FALSE, TRUE,5);
    btn = gtk_button_new_with_label("OK");
    id = g_signal_connect(G_OBJECT(btn),"button-press-event",
            G_CALLBACK(on_mouse_click),NULL);
    gtk_box_pack_start (GTK_BOX (vbox), btn, FALSE, TRUE,5);

    for (i=0; i<100; i++)
    {
        if (!(i%20))
        {
            vbox=gtk_vbox_new(FALSE, 0);
            gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
        }
        index = g_random_int_range(0,33);
        g_sprintf(buf,"%d:%s",i,str[index]);
        if (i==9)
            j = index;
        if (i>9 && i<90 && !(i%9))
            g_sprintf(buf,"%d:%s",i,str[j]);
        label = gtk_label_new(buf);
        desc = pango_font_description_from_string("Simhei 12");
        gtk_widget_modify_font(label,desc);
        a[i].label = label;
        gtk_widget_set_usize(label, 40, 20);
        gtk_box_pack_start(GTK_BOX(vbox),label, FALSE, FALSE, 0);       
/*
        button = gtk_button_new_with_label(buf);
        gtk_widget_set_usize(button, 50, 30);
        gtk_box_pack_start(GTK_BOX(vbox),button, FALSE, FALSE, 0);
*/
    }


    gtk_widget_show_all(window);

}

gint main(gint argc, gchar **argv)
{
    gtk_init(&argc, &argv);
    creat_ui();
    gtk_main();
    return 0;
}

 

Makefile

 


CC = gcc

CFLAGS = -Wall                 /
    -DG_DISABLE_DEPRECATED          /
    -DGDK_DISABLE_DEPRECATED     /
    -DGDK_PIXBUF_DISABLE_DEPRECATED /
    -DGTK_DISABLE_DEPRECATED

mind_reader: mind_reader.c
    $(CC) mind_reader.c -o mind_reader $(DEPRECTATED) `pkg-config gtk+-2.0 --cflags --libs`

clean:
    rm -f *.o mind_reader

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值