在Linux下通过gtk做一个简单的小游戏(猜拳)
时间:2019-11-14
本文章向大家介绍在Linux下通过gtk做一个简单的小游戏(猜拳),主要包括在Linux下通过gtk做一个简单的小游戏(猜拳)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#include <gtk/gtk.h> void callback1(GtkButton*button,gpointer user_data); void callback2(GtkButton*button,gpointer user_data); void callback3(GtkButton*button,gpointer user_data); void close_window(GtkWidget *widget, GdkEvent *event, gpointer data) { gtk_main_quit(); } GtkWidget*label_title; GtkWidget*label_man; GtkWidget*label_vs; GtkWidget*label_vs_s; GtkWidget*label_me; GtkWidget*label_me_s; GtkWidget*label_men_s; //GtkWidget *table; GtkWidget* vbox_me_s; int main(int argc, char *argv[]) { //初始化 gtk_init(&argc,&argv); //创建顶层窗口 GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); //创建按钮,文本信息为"window" gtk_window_set_title(GTK_WINDOW(window), "table"); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_container_set_border_width(GTK_CONTAINER(window), 10); //创建布局 GtkWidget *table = gtk_table_new(4, 4, TRUE); //// 容器加入窗口 gtk_container_add(GTK_CONTAINER(window), table); label_title = gtk_label_new("猜拳游戏"); gtk_table_attach_defaults(GTK_TABLE(table), label_title, 1, 2, 0, 1); label_man = gtk_label_new("机器人"); gtk_table_attach_defaults(GTK_TABLE(table), label_man, 0, 1, 1, 2); label_vs = gtk_label_new("VS"); gtk_table_attach_defaults(GTK_TABLE(table), label_vs, 1, 2, 1, 2); label_me = gtk_label_new("自己"); gtk_table_attach_defaults(GTK_TABLE(table), label_me, 2, 3, 1, 2); //设置剪刀选项 GtkWidget *vbox_men_s = gtk_vbox_new(TRUE,20); label_men_s = gtk_label_new(""); gtk_container_add(GTK_CONTAINER(vbox_men_s),label_men_s); gtk_table_attach_defaults(GTK_TABLE(table), vbox_men_s, 0, 1, 2, 3); //设置输赢选项 GtkWidget *vbox_vs = gtk_vbox_new(TRUE,20); label_vs_s = gtk_label_new(""); gtk_container_add(GTK_CONTAINER(vbox_vs),label_vs_s); gtk_table_attach_defaults(GTK_TABLE(table), vbox_vs, 1, 2, 2, 3); //设置石头选项 GtkWidget *vbox_me_s = gtk_vbox_new(TRUE,20); /****/ g_signal_connect(vbox_me_s, "pressed",G_CALLBACK(callback1), NULL); g_signal_connect(vbox_me_s, "pressed",G_CALLBACK(callback2), NULL); g_signal_connect(vbox_me_s, "pressed",G_CALLBACK(callback3), NULL); /****/ label_me_s = gtk_label_new(""); gtk_container_add(GTK_CONTAINER(vbox_me_s),label_me_s); gtk_table_attach_defaults(GTK_TABLE(table), vbox_me_s, 2, 3, 2, 3); GtkWidget *button_jd = gtk_button_new_with_label("剪刀"); g_signal_connect(button_jd, "pressed",G_CALLBACK(callback2), NULL); gtk_table_attach_defaults(GTK_TABLE(table), button_jd, 1, 2, 3, 4); GtkWidget *button_st = gtk_button_new_with_label("石头"); g_signal_connect(button_st, "pressed",G_CALLBACK(callback1), NULL); gtk_table_attach_defaults(GTK_TABLE(table), button_st, 0, 1, 3, 4); GtkWidget *button_bu = gtk_button_new_with_label("布"); g_signal_connect(button_bu, "pressed",G_CALLBACK(callback3), NULL); gtk_table_attach_defaults(GTK_TABLE(table), button_bu, 2, 3, 3, 4); gtk_widget_show_all(window); gtk_main(); return 0; } int i=0,j=0,k=0; void callback1(GtkButton*button,gpointer user_data) { i++; j++; char haha[100] = ""; char hehe[100] = ""; char hihi[100] = ""; sprintf(haha,"石头",i); gtk_label_set_text(GTK_LABEL(label_me_s),haha); int a = rand()%3+1; if(a==1){ sprintf(hehe,"石头",j); gtk_label_set_text(GTK_LABEL(label_men_s),hehe); sprintf(hihi,"平局",k); gtk_label_set_text(GTK_LABEL(label_vs_s),hihi); }else if(a==2){ sprintf(hehe,"剪刀",j); gtk_label_set_text(GTK_LABEL(label_men_s),hehe); sprintf(hihi,"赢",k); gtk_label_set_text(GTK_LABEL(label_vs_s),hihi); }else{ sprintf(hehe,"布",j); gtk_label_set_text(GTK_LABEL(label_men_s),hehe); sprintf(hihi,"输",k); gtk_label_set_text(GTK_LABEL(label_vs_s),hihi); } } void callback2(GtkButton*button,gpointer user_data) { i++; j++; char haha[100] = ""; char hehe[100] = ""; char hihi[100] = ""; sprintf(haha,"剪刀",i); gtk_label_set_text(GTK_LABEL(label_me_s),haha); int a = rand()%3+1; if(a==1){ sprintf(hehe,"石头",j); gtk_label_set_text(GTK_LABEL(label_men_s),hehe); sprintf(hihi,"输",k); gtk_label_set_text(GTK_LABEL(label_vs_s),hihi); }else if(a==2){ sprintf(hehe,"剪刀",j); gtk_label_set_text(GTK_LABEL(label_men_s),hehe); sprintf(hihi,"平局",k); gtk_label_set_text(GTK_LABEL(label_vs_s),hihi); }else{ sprintf(hehe,"布",j); gtk_label_set_text(GTK_LABEL(label_men_s),hehe); sprintf(hihi,"赢",k); gtk_label_set_text(GTK_LABEL(label_vs_s),hihi); } } void callback3(GtkButton*button,gpointer user_data) { i++; j++; char haha[100] = ""; char hehe[100] = ""; char hihi[100] = ""; sprintf(haha,"布",i); gtk_label_set_text(GTK_LABEL(label_me_s),haha); int a = rand()%3+1; if(a==1){ sprintf(hehe,"石头",j); gtk_label_set_text(GTK_LABEL(label_men_s),hehe); sprintf(hihi,"赢",k); gtk_label_set_text(GTK_LABEL(label_vs_s),hihi); }else if(a==2){ sprintf(hehe,"剪刀",j); gtk_label_set_text(GTK_LABEL(label_men_s),hehe); sprintf(hihi,"输",k); gtk_label_set_text(GTK_LABEL(label_vs_s),hihi); }else{ sprintf(hehe,"布",j); gtk_label_set_text(GTK_LABEL(label_men_s),hehe); sprintf(hihi,"平局",k); gtk_label_set_text(GTK_LABEL(label_vs_s),hihi); } }
原文地址:https://www.cnblogs.com/yrui/p/11857350.html
- rabbitMQ教程(三) spring整合rabbitMQ代码实例
- 谈谈序列化—实体bean一定要实现Serializable接口?
- Kafka源码系列之通过源码分析Producer性能瓶颈
- 微软在动态语言支持上超越了Java?
- JAVA图片批量上传JS-带预览功能
- Netty-Websocket 根据URL路由,分发机制的实现
- DrawerLayout实现网易新闻抽屉效果
- shiro权限控制(一):shiro介绍以及整合SSM框架
- websocket(三) 进阶!netty框架实现websocket达到高并发
- Kafka源码系列之Broker的IO服务及业务处理
- Dubbo(五) Dubbo入门demo——helloworld
- Dubbo(四) Dubbo-Admin项目 Dubbo管理台
- volley请求原理
- Dubbo(三) 安装Zookeeper 单机-集群
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ansible运行报错CryptographyDeprecationWarning解决
- 团体程序设计天梯赛-练习集 L1-018 大笨钟
- 天啦噜,项目上使用InputStream,我被坑了一把!
- 团体程序设计天梯赛-练习集 L1-019 谁先倒
- 团体程序设计天梯赛-练习集 L1-034 点赞
- 团体程序设计天梯赛-练习集 L1-028 判断素数
- 团体程序设计天梯赛-练习集 L1-039 古风排版
- 团体程序设计天梯赛-练习集 L1-027 出租
- MyBatis与设计模式的激情碰撞
- ES 慢查询日志收集实战总结
- 团体程序设计天梯赛-练习集 L1-016 查验身份证
- 团体程序设计天梯赛-练习集 L1-029 是不是太胖了
- 团体程序设计天梯赛-练习集 L1-031 到底是不是太胖了
- 进程监控工具 Procmon有Linux版本了
- 你凭什么说Spring会导致MyBatis的一级缓存失效!