#include<stdlib.h>
#include<gtk/gtk.h>
#include<libintl.h>
#include<locale.h>
#include"main.h"
#include"drawboard.h"
#include"module_act.h"
#include"time_tick.h"
#include"clean_line.h"
#include"about_message.h"
extern GdkPixbuf* image;
extern gint* board1[COLUMN1];
extern gint* board2[COLUMN2];
extern pmodule module;
extern gboolean ispause;
GtkWidget* lscore;
GtkWidget* lrow;
GtkWidget* llevel;
gint score=0;
gint row =0;
gint level=1;
gint timerid;
gint timespace=TIME_SPACE;
static gint blockWidth=0;
static gboolean
stop_the_app(GtkWidget* widget,gpointer data)
{
gtk_main_quit();
return TRUE;
}
static void
board_configure1(GtkWidget* widget,
gpointer data)
{
drawboard_init(widget,
COLUMN1,ROW1,
blockWidth,1);
}
static void
board_configure2(GtkWidget* widget,
gpointer data)
{
drawboard_init(widget,
COLUMN2,ROW2,
blockWidth*2/3,2);
}
static gboolean
expose_event1(GtkWidget* widget,
gpointer data)
{
return drawboard_expose(widget,
1,NULL);
}
static gboolean
expose_event2(GtkWidget* widget,
gpointer data)
{
return drawboard_expose(widget,
2,NULL);
}
static gboolean
app_start(GtkWidget* widget,
gpointer data)
{
if(0==timerid){
/* Declared in time_tick.h */
time_tick_init(GTK_WIDGET(data));
timerid=g_timeout_add(timespace,
time_tick,
GTK_WIDGET(data));
}
ispause=FALSE;
return TRUE;
}
static gboolean
app_pause(GtkWidget* widget,
gpointer data)
{
ispause=TRUE;
return TRUE;
}
static gboolean
stop_the_game(GtkWidget* widget,
gpointer data)
{
renew_the_app(GTK_WIDGET(data));
return TRUE;
}
static gboolean
create_buttons(GtkWidget* window,
GtkWidget* box)
{
GtkWidget* lbox;
GtkWidget* bstart;
GtkWidget* bpause;
GtkWidget* bstop;
GtkWidget* bquit;
bquit =gtk_button_new_with_label(_("Quit"));
bstop =gtk_button_new_with_label(_("Stop"));
bpause=gtk_button_new_with_label(_("Pause"));
bstart=gtk_button_new_with_label(_("Start"));
gtk_box_pack_end_defaults(GTK_BOX(box),
bquit);
gtk_box_pack_end_defaults(GTK_BOX(box),
bstop);
gtk_box_pack_end_defaults(GTK_BOX(box),
bpause);
gtk_box_pack_end_defaults(GTK_BOX(box),
bstart);
gtk_signal_connect(GTK_OBJECT(bstart),
"clicked",
GTK_SIGNAL_FUNC(app_start),
window);
gtk_signal_connect(GTK_OBJECT(bpause),
"clicked",
GTK_SIGNAL_FUNC(app_pause),
window);
gtk_signal_connect(GTK_OBJECT(bquit),
"clicked",
GTK_SIGNAL_FUNC(stop_the_app),
NULL);
gtk_signal_connect(GTK_OBJECT(bstop),
"clicked",
GTK_SIGNAL_FUNC(stop_the_game),
window);
lscore=gtk_label_new(_("score: 0"));
lrow =gtk_label_new(_("row : 0"));
llevel=gtk_label_new(_("level: 1"));
lbox=gtk_vbox_new(FALSE,5);
gtk_box_pack_end_defaults(GTK_BOX(lbox),
llevel);
gtk_box_pack_end_defaults(GTK_BOX(lbox),
lrow);
gtk_box_pack_end_defaults(GTK_BOX(lbox),
lscore);
gtk_box_pack_end_defaults(GTK_BOX(box),
lbox);
return TRUE;
}
static gboolean
key_release_answer(GtkWidget* widget,
GdkEventKey* key,
gpointer data)
{
switch(key->keyval){
case 65364:
break;
default:
break;
}
return TRUE;
}
static gboolean
key_press_answer(GtkWidget* widget,
GdkEventKey* key,
gpointer data)
{
gint keyval=key->keyval;
if(ispause&&keyval!=115&&keyval!=113&&keyval!=83&&keyval!=81) /* */
return TRUE;
switch(key->keyval){
case 113:
case 81:
stop_the_app(NULL,NULL);
break;
case 112:
case 80:
ispause=TRUE;
break;
case 83:
case 115:
if(0==timerid){
/* Declared in time_tick.h */
time_tick_init(GTK_WIDGET(widget));
timerid=g_timeout_add(timespace,
time_tick,
GTK_WIDGET(widget));
}
ispause=FALSE;
break;
case 65362: /* up */
module_rotate(module);
draw_mod_board1(module);
drawboard_draw(widget,
board1,
COLUMN1,
ROW1,
1);
break;
case 65361: /* left */
module_left(module);
draw_mod_board1(module);
drawboard_draw(widget,
board1,
COLUMN1,
ROW1,
1);
break;
case 65363: /* right */
module_right(module);
draw_mod_board1(module);
drawboard_draw(widget,
board1,
COLUMN1,
ROW1,
1);
break;
case 65364: /* down */
time_tick(widget);
break;
case 32:
module_direct_down(widget,
module);
draw_mod_board1(module);
drawboard_draw(widget,
board1,
COLUMN1,
ROW1,
1);
break;
default:
break;
}
return TRUE;
}
static gboolean
create_menu(GtkWidget* window,
GtkWidget* vbox)
{
GtkWidget* label;
GtkWidget* menubar;
GtkWidget* gamemenuitem;
GtkWidget* helpmenuitem;
GtkWidget* menu;
GtkWidget* item;
menubar=gtk_menu_bar_new();
gtk_box_pack_start_defaults(GTK_BOX(vbox),
menubar);
gamemenuitem=gtk_menu_item_new_with_label(_("Game"));
helpmenuitem=gtk_menu_item_new_with_label(_("Help"));
gtk_menu_bar_append(GTK_MENU_BAR(menubar),
gamemenuitem);
gtk_menu_bar_append(GTK_MENU_BAR(menubar),
helpmenuitem);
menu=gtk_menu_new();
item=gtk_menu_item_new_with_label(_("Start"));
gtk_menu_append(GTK_MENU(menu),item);
gtk_signal_connect(GTK_OBJECT(item),
"activate",
GTK_SIGNAL_FUNC(app_start),
window);
item=gtk_menu_item_new_with_label(_("Pause "));
gtk_menu_append(GTK_MENU(menu),item);
gtk_signal_connect(GTK_OBJECT(item),
"activate",
GTK_SIGNAL_FUNC(app_pause),
window);
item=gtk_menu_item_new_with_label(_("Stop"));
gtk_menu_append(GTK_MENU(menu),item);
gtk_signal_connect(GTK_OBJECT(item),
"activate",
GTK_SIGNAL_FUNC(stop_the_game),
window);
item=gtk_menu_item_new_with_label(_("Quit"));
gtk_menu_append(GTK_MENU(menu),item);
gtk_signal_connect(GTK_OBJECT(item),
"activate",
GTK_SIGNAL_FUNC(stop_the_app),
俄罗斯改进版
需积分: 3 157 浏览量
2007-11-08
20:26:39
上传
评论
收藏 49KB GZ 举报
WizardOz
- 粉丝: 68
- 资源: 3
评论0