c语言和gtk实现的游戏,如何用c语言和GTK写一个扔色子的程序?

原标题:如何用c语言和GTK写一个扔色子的程序?

今来写一个简单版本的扔色子的程序。

如果只用C语言来写,就随机数就可以了,现在加上了图形界面,代码如下:

#include

#include

static GtkWidget *ourgif;

gint i = 0;

int flag=0;

void change_bmp()

{

srand(time(NULL));

i = rand() % 6; //取值范围是0~5

if(flag==0){

g_print("flag===%d i===%d\n",flag,i);

char *file = g_strdup_printf("%d.png", i);

gtk_image_set_from_file(GTK_IMAGE(ourgif), file);

}

}

void deal_pressed(GtkButton *button, gpointer user_data)

{

flag=1;

}

int main(int argc, char **argv)

{

GtkWidget *window;

GtkWidget *vbox;

GtkWidget *button;

GtkWidget *label;

gint num = 0;

gchar *filename;

gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(gtk_main_quit), NULL);

vbox = gtk_vbox_new(FALSE, 0);

gtk_container_add(GTK_CONTAINER(window), vbox);

label = gtk_label_new("通过时钟控制的动画");

gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 5);

ourgif = gtk_image_new_from_file("1.png");

gtk_box_pack_start(GTK_BOX(vbox), ourgif, FALSE, FALSE, 5);

gtk_timeout_add(150, (GtkFunction)change_bmp, NULL);

button = gtk_button_new_with_label("暂停");

gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 5);

g_signal_connect(button, "pressed", G_CALLBACK(deal_pressed), NULL);

gtk_widget_show_all(window);

gtk_main();

return TRUE;

}

效果:

dc85fa295906665dbcbc6bb542e3d419.png

gtk摇色子

还算比较简单的,中间还有点问题,就是摇色子的速度问题,上边这个例子产生六个随机数。很容易出现很多次相同的一个数,导致图片变化缓慢,大家可以思考下怎末能产生0-5之间的随机数,而且尽量减少重复。返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值