亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? game.c

?? 三子棋
?? C
字號:
/*Game TicTacToeGTK ver 2.5 Copyright (C) 2006  Obada Denis (obadadenis@gmail.com)Project home page : http://tictactoegtk.sourceforge.netThis program is free software; you can redistribute it and/ormodify it under the terms of the GNU Lesser General PublicLicense as published by the Free Software Foundation; eitherversion 2.1 of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNULesser General Public License for more details.You should have received a copy of the GNU Lesser General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA*/#include <gtk/gtk.h>#include <stdlib.h>#include <stdio.h>#include <time.h>#include <string.h>//Header files#include "cpu.h"#include "draw.h"#include "login_window.h"#include "menu.h"#include "build.h" //Build counter #define debug 1 //Debug Switch : 0 - Debug messages OFF; 1 - Debug messages ON#define release_version "TicTacToeGTK 2.5"#define window_title release_version//End Messages#define cpu_win "CPU win !"#define no_win "No winners !"#define end_title "The End"//Login Dialog#define login_title "Login"#define name_msg "Enter your name : "#define choice_msg "Choice char : "#define error_name_msg "Please enter your name !"//Confirm Exit Dialog#define exit_title "Confirm exit "#define exit_label "Please confirm exit "//Confirm NEW Game dialog#define new_game_title "New Game confirm"#define new_game_str "Confirm new game"//About dialog#define about_title "About"#define about_str "<span size=\"x-large\">"release_version"</span>\n<tt>Build : "build"\nCopyright (C) 2006 Obada Denis\nTicTacToeGTK is free software :\nsee LICENSE file for license information</tt>\nProject home page : <b>http://tictactoegtk.sourceforge.net</b>"GtkWidget *window;//Main windowGtkWidget *ebox;//Read events form userGtkWidget *darea;//Drawing areaGtkWidget *status_bar;GtkStatusbar *statusbar;int stbar_id;GdkGC *Xcolor,*Ocolor;//Colors for X and OGdkColor color;//Temp colorGtkWidget *menu_bar; //Menu barGtkWidget *vbox;//Main window Box : store menu and eboxgint scaleX=40;//X scalegint scaleO=40;//O scalegint scaleGrid=100;//table scalegchar grid[3][3];//Main table : ' ' - Free Zone; 'X' - Zone used by X; 'O'- Zone used by Ogchar usrchar='X',cpuchar='O';//Players Chars (default values)//Functions prototypesint checkwin(void);gint delete_event(GtkWidget *,GdkEvent *,gpointer);int confirm_exit_dialog(void);void init_game(void);#include "draw.c" //Draw objects #include "cpu.c" //CPU move #include "menu.c" //Menu file#include "login_window.c" //Login Windowint confirm_exit_dialog(void){//Confirm exit dialogGtkWidget *dialog;GtkWidget *label;gint result;//Confirm Exit from GAME#if debugg_printf("Show confirmation dialog !\n");#endifdialog = gtk_dialog_new_with_buttons (exit_title,GTK_WINDOW(window),GTK_DIALOG_MODAL,GTK_STOCK_YES,GTK_RESPONSE_ACCEPT,GTK_STOCK_NO,GTK_RESPONSE_REJECT,NULL);gtk_window_set_policy(GTK_WINDOW(dialog),FALSE,FALSE,TRUE);//Add text in dialoglabel=gtk_label_new(exit_label);gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox),label);//Show dialolggtk_widget_show_all (dialog);if (gtk_dialog_run(GTK_DIALOG(dialog))==GTK_RESPONSE_ACCEPT)        result=1;        else        result=0;gtk_widget_destroy(dialog);return result;}gint delete_event(GtkWidget *widget,GdkEvent *event,gpointer data){//Confirm Exit from GAME#if debugg_printf("Delete event !\n");#endifif (confirm_exit_dialog())	return FALSE;	else	return TRUE;}void destroy(GtkWidget *widget,gpointer data)//Stop program{#if debugg_printf("Exit\n");#endifgtk_main_quit();}gboolean redraw(GtkWidget *widget,GdkEventExpose *event,gpointer data)//Redraw objects{drawGrid();return TRUE;}gboolean user_action (GtkWidget *event_box,GdkEventButton *event,gpointer data)//User Action  {    gint i,j,x;    GtkWidget *dialog,*label;    //Calc coords     i=(gint)(event->x)/scaleGrid;    j=(gint)(event->y)/scaleGrid;    #if debug    g_printf("Click on : %d %d\n",i,j);    #endif    if (grid[i][j]==' ')//Check if cell is free	{	    grid[i][j]=usrchar;//Marc cell as used 	    drawGrid();//Show on modifications	    x=checkwin();//Check if win	    #if debug 	    g_printf("Check win 1, check value  : %d\n",x);	    #endif	    if (x!=0)//If win show dialog		{		dialog = gtk_dialog_new_with_buttons (end_title,GTK_WINDOW(window),GTK_DIALOG_MODAL,GTK_STOCK_OK,GTK_RESPONSE_NONE,NULL);                                gtk_window_set_policy(GTK_WINDOW(dialog),FALSE,FALSE,TRUE);                		gtk_widget_set_size_request(dialog,120,100);		//Set a mesage		if (x==1)		label=gtk_label_new (cpu_win);		if (x==2)                label=gtk_label_new (usr_win);		if (x==3)                label=gtk_label_new (no_win);		//Connect signals           	 g_signal_connect(dialog,"response", G_CALLBACK (destroy),NULL);		//Add text in dialog                 gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox),label);		//Show dialog                         gtk_widget_show_all (dialog);		}            if (x==0) //If CPU can move 	    cpumove();//Move :)	    drawGrid();//Show modifications            if(x==0)	    {	    x=checkwin();//Check if CPU win	     #if debug            g_printf("Check win 2, check value : %d\n",x);            #endif            if (x!=0)                {                dialog = gtk_dialog_new_with_buttons (end_title,GTK_WINDOW(window),GTK_DIALOG_MODAL,GTK_STOCK_OK,GTK_RESPONSE_NONE,NULL);                gtk_window_set_policy(GTK_WINDOW(dialog),FALSE,FALSE,TRUE);                gtk_widget_set_size_request(dialog,120,100);                if (x==1)                label = gtk_label_new (cpu_win);                if (x==2)                label = gtk_label_new (usr_win);                if (x==3)                label = gtk_label_new (no_win);                 g_signal_connect(dialog,"response", G_CALLBACK (destroy),NULL);                 gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox),label);                 gtk_widget_show_all (dialog);                }		}	}    return TRUE;  }int checkwin(void){/*Check game status0 - Game continue1 - CPU Win2 - User Win3 - No win */gint i,j,n;gchar s1[4],cpustr[4],usrstr[4];cpustr[0]=cpuchar;cpustr[1]=cpuchar;cpustr[2]=cpuchar;cpustr[3]='\0';usrstr[0]=usrchar;usrstr[1]=usrchar;usrstr[2]=usrchar;usrstr[3]='\0';//Check linesfor(i=0;i<3;i++){s1[0]='\0';for(j=0;j<3;j++)	s1[j]=grid[i][j];s1[3]='\0';if (strcmp(s1,cpustr)==0)	return 1;if (strcmp(s1,usrstr)==0)        return 2;}//Check columnsfor(i=0;i<3;i++){s1[0]='\0';for(j=0;j<3;j++)        s1[j]=grid[j][i];s1[3]='\0';if (strcmp(s1,cpustr)==0)        return 1;if (strcmp(s1,usrstr)==0)        return 2;}//Verificam Check diagonalss1[0]='\0';for(i=0;i<3;i++)	s1[i]=grid[i][i];s1[3]='\0';if (strcmp(s1,cpustr)==0)        return 1;if (strcmp(s1,usrstr)==0)        return 2;s1[0]='\0';for(i=0;i<3;i++)        s1[i]=grid[i][2-i];s1[3]='\0';if (strcmp(s1,cpustr)==0)        return 1;if (strcmp(s1,usrstr)==0)        return 2;//Check if exist Free celsn=0;for (i=0;i<3;i++)for (j=0;j<3;j++)        if (grid[i][j]!=' ')                n++;#if debugprintf("Total fill cell : %d\n",n);#endifif (n==9)        return 3;return 0;}void init_game(void){int i,j;//Initializing . . .for(i=0;i<3;i++)for(j=0;j<3;j++)grid[i][j]=' ';//Init random generatorsrand(time(NULL));}void initcolors(void){//Init Colors //Gen colors for X and O//Color for XXcolor=gdk_gc_new(darea->window);color.red=65535;//Red colorcolor.green=0;color.blue=0;gdk_gc_set_rgb_fg_color (Xcolor, &color);//Color for OOcolor=gdk_gc_new(darea->window);color.red=0;color.green=0;color.blue=65535;//Color bluegdk_gc_set_rgb_fg_color (Ocolor, &color);}//***Main***main(int argc,char *argv[]){g_printf("***\n\n");g_printf("%s Build ",release_version);g_printf(build);g_printf(" Copyright (C) 2006  Obada Denis (obadadenis@gmail.com)\nProject home page : http://tictactoegtk.sourceforge.net\n");g_printf("TicTacToeGTK is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by \nthe Free Software Foundation; either version 2 of the License, or \n (at your option) any later version.\n\nTicTacToeGTK is distributed in the hope that it will be useful, \nbut WITHOUT ANY WARRANTY; without even the implied warranty of \nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the \nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License \nalong with Nautilus; if not, write to the Free Software Foundation, Inc., \n51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA");g_printf("\n\n***\n\n");//Debug message#if debugg_printf(window_title);g_printf("\nDebug version\n");#endif//GTK initgtk_init(&argc,&argv);//Init Gameinit_game();window=gtk_window_new(GTK_WINDOW_TOPLEVEL);//Create Main Windowgtk_widget_set_size_request(window,305,370);//Set size of Main Windowgtk_window_set_title(GTK_WINDOW(window),window_title);//Set WIndow titlegtk_window_set_policy(GTK_WINDOW(window),FALSE,FALSE,TRUE);//Set Window Policy//Config destroy signalg_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(delete_event),NULL);g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(destroy),NULL);//Create Event boxebox=gtk_event_box_new();darea=gtk_drawing_area_new();//Config Signalsg_signal_connect (G_OBJECT (darea), "expose_event",G_CALLBACK (redraw), NULL);//Redraw signalg_signal_connect (G_OBJECT (ebox),"button_press_event",G_CALLBACK (user_action),darea);//Signal form user//Status Barstatus_bar=gtk_statusbar_new();gtk_widget_set_size_request(status_bar,300,20);stbar_id=gtk_statusbar_get_context_id(GTK_STATUSBAR(status_bar),"Info");//Menumenu_bar=get_menubar_menu(window);//VBoxvbox=gtk_vbox_new(FALSE,10);//packing widgets//Adding Menugtk_box_pack_start (GTK_BOX (vbox), menu_bar, FALSE, FALSE, 0);//Adding DAREAgtk_container_add(GTK_CONTAINER(ebox),darea);gtk_container_add(GTK_CONTAINER(vbox),ebox);gtk_box_pack_start(GTK_BOX(vbox),status_bar,FALSE,FALSE,0);//Adding VBox on main windowgtk_container_add(GTK_CONTAINER(window),vbox);//Show widget on screengtk_widget_show_all(window);gtk_statusbar_push(GTK_STATUSBAR(status_bar),stbar_id,release_version);//Show login screen :)login();//Init Colorsinitcolors();gtk_main();return 0;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区免费在线| 高清av一区二区| 美女脱光内衣内裤视频久久网站| 欧美bbbbb| 成人综合婷婷国产精品久久蜜臀| 成人av网在线| 欧美一卡二卡三卡四卡| 国产欧美精品在线观看| 一区二区三区在线影院| 日本欧美一区二区| 成人黄色av网站在线| 欧美日韩国产小视频| 久久久无码精品亚洲日韩按摩| 亚洲免费成人av| 国产精品影视天天线| 欧美理论电影在线| 国产精品免费视频一区| 五月婷婷激情综合网| 成人av影院在线| 精品免费国产一区二区三区四区| 亚洲精品国产a久久久久久| 精品一区二区三区免费视频| 91黄视频在线| 国产日韩视频一区二区三区| 成人性生交大片| 国产福利精品一区二区| 久久综合久久综合亚洲| 精品制服美女久久| 一本大道av伊人久久综合| 日韩天堂在线观看| 一区二区三区 在线观看视频| 国内精品久久久久影院一蜜桃| 91猫先生在线| 久久精品欧美一区二区三区不卡| 天天操天天干天天综合网| 91福利国产精品| 亚洲自拍偷拍麻豆| 欧美午夜视频网站| 亚洲第一在线综合网站| 欧美二区乱c少妇| 日韩国产精品久久久久久亚洲| 欧美视频你懂的| 日韩国产欧美在线视频| 欧美一区二区不卡视频| 国产精品亚洲午夜一区二区三区| 国产一区999| 亚洲欧美日韩在线| 精品国产一区二区三区久久影院 | 91毛片在线观看| 亚洲精品久久久蜜桃| 欧美在线999| 老司机精品视频线观看86| 2021中文字幕一区亚洲| 成人激情文学综合网| 中文字幕一区二区视频| 91看片淫黄大片一级在线观看| 夜夜精品视频一区二区| 欧美一区二区三区小说| 九九视频精品免费| 欧美国产97人人爽人人喊| 91久久精品一区二区三区| 人禽交欧美网站| 亚洲国产精品激情在线观看| 在线一区二区视频| 免费观看在线综合| 亚洲日本va午夜在线电影| www久久久久| 日韩精品一区二区三区视频| 91极品美女在线| 色综合久久中文字幕| 亚洲色欲色欲www| 国产日本一区二区| 欧美性一级生活| 99久久免费国产| 精品一区二区三区免费| 无码av中文一区二区三区桃花岛| 2014亚洲片线观看视频免费| 欧美三级日韩三级国产三级| 粉嫩在线一区二区三区视频| 日韩精品欧美精品| 一级中文字幕一区二区| 国产欧美va欧美不卡在线| 日韩午夜在线观看视频| 欧美日韩在线电影| 日本久久一区二区| 97成人超碰视| 99这里只有久久精品视频| 国产黄色成人av| 国产伦精一区二区三区| 精品一区二区三区免费毛片爱| 亚洲成av人片一区二区梦乃| 亚洲图片欧美一区| 亚洲一区电影777| 亚洲激情男女视频| 一区二区三区国产豹纹内裤在线| 亚洲欧美日韩国产综合| 亚洲裸体xxx| 亚洲成av人片一区二区梦乃| 日韩综合一区二区| 免费黄网站欧美| 国产馆精品极品| 91在线免费看| 欧美日韩国产小视频| 日韩精品一区二区三区在线| 久久综合给合久久狠狠狠97色69| 久久久777精品电影网影网 | 日韩欧美一卡二卡| 日韩欧美国产一区在线观看| 精品区一区二区| 国产精品久久久久四虎| 亚洲第一综合色| 国产一区福利在线| 91丨porny丨国产入口| 欧美日韩美少妇| 久久国产精品99精品国产| 高清国产一区二区| 色88888久久久久久影院野外| 欧美mv和日韩mv国产网站| 国产精品久久久久久久久久久免费看| 亚洲欧美日韩国产成人精品影院| 日韩精品成人一区二区在线| 国产一区二区三区在线观看免费 | 国产福利一区二区三区| 欧美日韩一区国产| 国产精品美女久久久久久| 麻豆精品久久精品色综合| 色视频成人在线观看免| 26uuu精品一区二区在线观看| 亚洲精品视频在线观看网站| 国产在线日韩欧美| 7777精品伊人久久久大香线蕉超级流畅 | 天堂在线亚洲视频| 成人午夜免费视频| 欧美精品一区二| 日韩国产精品91| 欧美吞精做爰啪啪高潮| 亚洲美女区一区| 91在线视频免费观看| 日本一区二区不卡视频| 国产精品一区专区| 日韩欧美中文字幕公布| 日本sm残虐另类| 91精品国产品国语在线不卡| 亚洲影视资源网| 欧美日韩二区三区| 亚洲网友自拍偷拍| 欧美亚洲动漫精品| 午夜一区二区三区视频| 欧洲av在线精品| 亚洲一二三专区| 欧美人动与zoxxxx乱| 亚洲成人一区二区| 欧美精品久久久久久久多人混战 | 欧美精品v国产精品v日韩精品| 亚洲乱码日产精品bd| 欧美日韩中文一区| 人人爽香蕉精品| 亚洲国产激情av| 在线观看免费视频综合| 午夜免费久久看| 欧美成人性战久久| 成人禁用看黄a在线| 亚洲国产精品久久人人爱| 欧美精品1区2区3区| 欧美一区二区三区的| 狠狠色丁香久久婷婷综| 国产精品久久久久久久久免费桃花 | 久草中文综合在线| 国产女人aaa级久久久级| 欧美中文字幕一区二区三区| 久久精品国产成人一区二区三区| 久久久久久久久久久久久久久99| 成人综合日日夜夜| 午夜一区二区三区视频| 国产蜜臀97一区二区三区| 欧美日韩国产欧美日美国产精品| 精品一区二区三区免费视频| 有码一区二区三区| 久久久久久一二三区| 在线视频国产一区| 国产福利一区二区三区视频在线 | 一级精品视频在线观看宜春院| 欧美一区中文字幕| 波多野结衣中文字幕一区| 日本不卡在线视频| 亚洲欧美激情视频在线观看一区二区三区| 日韩亚洲国产中文字幕欧美| 在线区一区二视频| 99久久精品国产麻豆演员表| 久久国产综合精品| 三级影片在线观看欧美日韩一区二区| 欧美国产精品一区二区三区| 91精品国产综合久久精品 | 日韩高清不卡在线| 亚洲男人的天堂在线观看| 日本一区二区三区四区| 久久精品亚洲乱码伦伦中文 | 99久久综合国产精品| 国产成人99久久亚洲综合精品| 久久精品免费观看|