我是刚学习c的,想找点小游戏用来提高兴趣,在这个网站上有很多源码,http://study.qqcf.com/web/178/20681.htm 但是不能用gcc编译。请高手帮忙看一下。。先谢谢了。。
#include <stdio.h>
#include <bios.h>
#include <ctype.h>
#include <conio.h>
#include <dos.h>
#define CROSSRU 0xbf /*右上角点*/
#define CROSSLU 0xda /*左上角点*/
#define CROSSLD 0xc0 /*左下角点*/
#define CROSSRD 0xd9 /*右下角点*/
#define CROSSL 0xc3 /*左边*/
#define CROSSR 0xb4 /*右边*/
#define CROSSU 0xc2 /*上边*/
#define CROSSD 0xc1 /*下边*/
#define CROSS 0xc5 /*十字交叉点*/
/*定义棋盘左上角点在屏幕上的位置*/
#define MAPXOFT 5
#define MAPYOFT 2
/*定义1号玩家的操作键键码*/
#define PLAY1UP 0x1157/*上移--'W'*/
#define PLAY1DOWN 0x1f53/*下移--'S'*/
#define PLAY1LEFT 0x1e41/*左移--'A'*/
#define PLAY1RIGHT 0x2044/*右移--'D'*/
#define PLAY1DO 0x3920/*落子--空格键*/
/*定义2号玩家的操作键键码*/
#define PLAY2UP 0x4800/*上移--方向键up*/
#define PLAY2DOWN 0x5000/*下移--方向键down*/
#define PLAY2LEFT 0x4b00/*左移--方向键left*/
#define PLAY2RIGHT 0x4d00/*右移--方向键right*/
#define PLAY2DO 0x1c0d/*落子--回车键Enter*/
/*若想在游戏中途退出, 可按 Esc 键*/
#define ESCAPE 0x011b
/*定义棋盘上交叉点的状态, 即该点有无棋子 */
/*若有棋子, 还应能指出是哪个玩家的棋子 */
#define CHESSNULL 0 /*没有棋子*/
#define CHESS1 'O'/*一号玩家的棋子*/
#define CHESS2 'X'/*二号玩家的棋子*/
/*定义按键类别*/
#define KEYEX99v 0/*退出键*/
#define KEYFALLCHESS 1/*落子键*/
#define KEYMOVECURSOR 2/*光标移动键*/
#define KEYINVALID 3/*无效键*/
/*定义符号常量: 真, 假 --- 真为1, 假为0 */
#define TRUE 1
#define FALSE 0
/**********************************************************/
/* 定义数据结构 */
/*棋盘交叉点坐标的数据结构*/
struct point
{
int x,y;
};
/**********************************************************/
/*自定义函数原型说明 */
void Init(void);
int GetKey(void);
int CheckKey(int press);
int ChangeOrder(void);
int ChessGo(int Order,struct point Cursor);
void DoError(void);
void DoOK(void);
void DoWin(int Order);
void MoveCursor(int Order,int press);
void DrawCross(int x,int y);
void DrawMap(void);
int JudgeWin(int Order,struct point Cursor);
int JudgeWinLine(int Order,struct point Cursor,int direction);
void ShowOrderMsg(int Order);
void EndGame(void);
/**********************************************************/
/**********************************************************/
/* 定义全局变量 */
int gPlayOrder; /*指示当前行棋方 */
struct point gCursor; /*光标在棋盘上的位置 */
char gChessBoard[19][19];/*用于记录棋盘上各点的状态*/
/**********************************************************/
怎么运行这个用c语言的小游戏?
-
- 帖子: 89
- 注册时间: 2008-11-18 8:50
-
- 帖子: 99
- 注册时间: 2007-04-21 7:37
Re: 怎么运行这个用c语言的小游戏?
你给的那个网页是 一份详细的五子棋说明
不是完正的源程序
连main函数都没有,怎么编译
还是好好学习c把
不是完正的源程序
连main函数都没有,怎么编译
还是好好学习c把
-
- 帖子: 89
- 注册时间: 2008-11-18 8:50
Re: 怎么运行这个用c语言的小游戏?
谢谢!但是这个有main函数怎么也不能编译呢?是不 是要用其它的工具啊,
#include<dos.h>
#include<graphics.h>
#include<stdio.h>
int x,y;
void doexit(),saveimage(),doimage(),imagedrive();
void *buff;
main()
{
int i,j,key;
int dokey();
char ch[]="BEAUIDEAL",c[]="help: right,down,left,up,enter,esc; very easy,OK!~!";
imagedrive();
saveimage();
cleardevice();
setbkcolor(7);
setcolor(1);
settextstyle(0,0,2);
outtextxy(250,50,ch);
setlinestyle(1,0,3);
rectangle(30,30,600,400);
setlinestyle(0,0,0);
settextstyle(0,0,1);
setcolor(8);
outtextxy(100,380,c);
setcolor(15);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
rectangle(200+j*35,100+i*35,230+j*35,130+i*35);
setcolor(1);
rectangle(200,100,230,130);
x=200;
y=100;
while(1)
{
key=bioskey(0);
dokey(key);
}
free(buff);
closegraph();
}
void saveimage() /*存储方格*/
{
bar(0,0,29,29);
buff=sizeof(imagesize(0,0,29,29));
getimage(0,0,28,28,buff);
}
void imagedrive() /*图形模式初始化*/
{
int gd,gm;
gd=VGA;
gm=VGAHI;
initgraph(&gd,&gm,"");
cleardevice();
}
void doimage(x,y) /*画方格*/
{
void tell();
putimage(x+1,y+1,buff,1);
if(x!=200)
putimage(x+1-35,y+1,buff,1);
if(x!=340)
putimage(x+1+35,y+1,buff,1);
if(y!=100)
putimage(x+1,y+1-35,buff,1);
if(y!=240)
putimage(x+1,y+1+35,buff,1);
tell();
}
int dokey(key) /*键盘处理*/
int key;
{
int prect(),nrect();
switch(key)
{
case 0x4800 : if(y!=100) {prect(x,y);nrect(x,y-=35);} break;
case 0x4b00 : if(x!=200) {prect(x,y);nrect(x-=35,y);} break;
case 0x4d00 : if(x!=340) {prect(x,y);nrect(x+=35,y);} break;
case 0x5000 : if(y!=240) {prect(x,y);nrect(x,y+=35);} break;
case 0x11b : doexit();break;
case 0x1c0d : doimage(x,y);break;
}
}
void tell() /*判断是否画满*/
{
void win();
int color=15,t=0,i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(color!=getpixel(215+i*35,115+j*35))
{t=1;break;}
if(t==0)
win();
}
void win()
{
char c;
settextstyle(3,0,2);
outtextxy(50,100,"YOU WIN !! do you want to replay (y/n) ");
do
{
c=getch();
if(c=='y'||c=='Y')
main(); /*从新玩就返回主函数*/
if(c=='n'||c=='N')
doexit();
}while(c=='y'||c=='Y'||c=='n'||c=='N');
}
int prect(x,y) /*在新位置画方框*/
{
setcolor(15);
rectangle(x,y,x+30,y+30);
}
int nrect(x,y) /*将原来位置的方框清除*/
{
setcolor(1);
rectangle(x,y,x+30,y+30);
}
#include<dos.h>
#include<graphics.h>
#include<stdio.h>
int x,y;
void doexit(),saveimage(),doimage(),imagedrive();
void *buff;
main()
{
int i,j,key;
int dokey();
char ch[]="BEAUIDEAL",c[]="help: right,down,left,up,enter,esc; very easy,OK!~!";
imagedrive();
saveimage();
cleardevice();
setbkcolor(7);
setcolor(1);
settextstyle(0,0,2);
outtextxy(250,50,ch);
setlinestyle(1,0,3);
rectangle(30,30,600,400);
setlinestyle(0,0,0);
settextstyle(0,0,1);
setcolor(8);
outtextxy(100,380,c);
setcolor(15);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
rectangle(200+j*35,100+i*35,230+j*35,130+i*35);
setcolor(1);
rectangle(200,100,230,130);
x=200;
y=100;
while(1)
{
key=bioskey(0);
dokey(key);
}
free(buff);
closegraph();
}
void saveimage() /*存储方格*/
{
bar(0,0,29,29);
buff=sizeof(imagesize(0,0,29,29));
getimage(0,0,28,28,buff);
}
void imagedrive() /*图形模式初始化*/
{
int gd,gm;
gd=VGA;
gm=VGAHI;
initgraph(&gd,&gm,"");
cleardevice();
}
void doimage(x,y) /*画方格*/
{
void tell();
putimage(x+1,y+1,buff,1);
if(x!=200)
putimage(x+1-35,y+1,buff,1);
if(x!=340)
putimage(x+1+35,y+1,buff,1);
if(y!=100)
putimage(x+1,y+1-35,buff,1);
if(y!=240)
putimage(x+1,y+1+35,buff,1);
tell();
}
int dokey(key) /*键盘处理*/
int key;
{
int prect(),nrect();
switch(key)
{
case 0x4800 : if(y!=100) {prect(x,y);nrect(x,y-=35);} break;
case 0x4b00 : if(x!=200) {prect(x,y);nrect(x-=35,y);} break;
case 0x4d00 : if(x!=340) {prect(x,y);nrect(x+=35,y);} break;
case 0x5000 : if(y!=240) {prect(x,y);nrect(x,y+=35);} break;
case 0x11b : doexit();break;
case 0x1c0d : doimage(x,y);break;
}
}
void tell() /*判断是否画满*/
{
void win();
int color=15,t=0,i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(color!=getpixel(215+i*35,115+j*35))
{t=1;break;}
if(t==0)
win();
}
void win()
{
char c;
settextstyle(3,0,2);
outtextxy(50,100,"YOU WIN !! do you want to replay (y/n) ");
do
{
c=getch();
if(c=='y'||c=='Y')
main(); /*从新玩就返回主函数*/
if(c=='n'||c=='N')
doexit();
}while(c=='y'||c=='Y'||c=='n'||c=='N');
}
int prect(x,y) /*在新位置画方框*/
{
setcolor(15);
rectangle(x,y,x+30,y+30);
}
int nrect(x,y) /*将原来位置的方框清除*/
{
setcolor(1);
rectangle(x,y,x+30,y+30);
}
-
- 帖子: 8
- 注册时间: 2007-11-15 9:08
Re: 怎么运行这个用c语言的小游戏?
这个显然是Dos下用Turbo C写的程序,运到了Turbo C扩展的绘图函数,肯定不能用Gcc编译的!
清 凉散 人 写了:谢谢!但是这个有main函数怎么也不能编译呢?是不 是要用其它的工具啊,
#include<dos.h>
#include<graphics.h>
#include<stdio.h>
int x,y;
void doexit(),saveimage(),doimage(),imagedrive();
void *buff;
main()
{
int i,j,key;
int dokey();
char ch[]="BEAUIDEAL",c[]="help: right,down,left,up,enter,esc; very easy,OK!~!";
imagedrive();
saveimage();
cleardevice();
setbkcolor(7);
setcolor(1);
settextstyle(0,0,2);
outtextxy(250,50,ch);
setlinestyle(1,0,3);
rectangle(30,30,600,400);
setlinestyle(0,0,0);
settextstyle(0,0,1);
setcolor(8);
outtextxy(100,380,c);
setcolor(15);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
rectangle(200+j*35,100+i*35,230+j*35,130+i*35);
setcolor(1);
rectangle(200,100,230,130);
x=200;
y=100;
while(1)
{
key=bioskey(0);
dokey(key);
}
free(buff);
closegraph();
}
void saveimage() /*存储方格*/
{
bar(0,0,29,29);
buff=sizeof(imagesize(0,0,29,29));
getimage(0,0,28,28,buff);
}
void imagedrive() /*图形模式初始化*/
{
int gd,gm;
gd=VGA;
gm=VGAHI;
initgraph(&gd,&gm,"");
cleardevice();
}
void doimage(x,y) /*画方格*/
{
void tell();
putimage(x+1,y+1,buff,1);
if(x!=200)
putimage(x+1-35,y+1,buff,1);
if(x!=340)
putimage(x+1+35,y+1,buff,1);
if(y!=100)
putimage(x+1,y+1-35,buff,1);
if(y!=240)
putimage(x+1,y+1+35,buff,1);
tell();
}
int dokey(key) /*键盘处理*/
int key;
{
int prect(),nrect();
switch(key)
{
case 0x4800 : if(y!=100) {prect(x,y);nrect(x,y-=35);} break;
case 0x4b00 : if(x!=200) {prect(x,y);nrect(x-=35,y);} break;
case 0x4d00 : if(x!=340) {prect(x,y);nrect(x+=35,y);} break;
case 0x5000 : if(y!=240) {prect(x,y);nrect(x,y+=35);} break;
case 0x11b : doexit();break;
case 0x1c0d : doimage(x,y);break;
}
}
void tell() /*判断是否画满*/
{
void win();
int color=15,t=0,i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(color!=getpixel(215+i*35,115+j*35))
{t=1;break;}
if(t==0)
win();
}
void win()
{
char c;
settextstyle(3,0,2);
outtextxy(50,100,"YOU WIN !! do you want to replay (y/n) ");
do
{
c=getch();
if(c=='y'||c=='Y')
main(); /*从新玩就返回主函数*/
if(c=='n'||c=='N')
doexit();
}while(c=='y'||c=='Y'||c=='n'||c=='N');
}
int prect(x,y) /*在新位置画方框*/
{
setcolor(15);
rectangle(x,y,x+30,y+30);
}
int nrect(x,y) /*将原来位置的方框清除*/
{
setcolor(1);
rectangle(x,y,x+30,y+30);
}
-
- 帖子: 89
- 注册时间: 2008-11-18 8:50
Re: 怎么运行这个用c语言的小游戏?
说的有理啊,谢谢这位朋友,那是不是可以用vc来编译啊,要不要装图形库相当于ubuntu下的gtk这类的软件。还有能不能提供几个能在ubuntu下编译并运行的c程序的游戏源码啊,边玩边学可以加深理解。谢谢了!
-
- 帖子: 102
- 注册时间: 2006-08-15 20:35
Re: 怎么运行这个用c语言的小游戏?
你给的源码是很老的Dos下的游戏的源码,我没有试过,但猜测在VC下应该编译不过。
你可以找一些Win32的游戏源码,用VC编译,或者Linux游戏源码,用GCC编译。
还有一些跨平台的C/C++的游戏,比如使用SDL(一个游戏引擎)编写的游戏,但你需要先了解这些引擎如何使用。
你可以找一些Win32的游戏源码,用VC编译,或者Linux游戏源码,用GCC编译。
还有一些跨平台的C/C++的游戏,比如使用SDL(一个游戏引擎)编写的游戏,但你需要先了解这些引擎如何使用。
我的blog: http://www.liuzhongshu.com/
~ Tech、Code、Guitar、Design and my Life~
~ Tech、Code、Guitar、Design and my Life~
-
- 帖子: 120
- 注册时间: 2008-08-05 11:09
Re: 怎么运行这个用c语言的小游戏?
学习中.....
- lll9p
- 帖子: 1806
- 注册时间: 2007-07-18 18:56
- 联系:
-
- 帖子: 89
- 注册时间: 2008-11-18 8:50
Re: 怎么运行这个用c语言的小游戏?
GTK乒乓球
---用GTK实现乒乓球游戏
乒乓球游戏就是人控制一个板把从对面飞过来的球弹回去,当然有的会弹回去就打了一个正方形的格格。我现在这个只是把飞来的球弹回去,用左右控制板的移动,用SPACE控制暂停,用ENTER控制继续开始游戏,功能很简单!
运行的前提是在Windows平台下用VS2005+GTK的开发包,或者用Linux平台的GTK也可以。如果有什么问题,请联系我(可以留言),yanyegang521@126.com
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include <gtk/gtk.h>
#include <stdio.h>
gint sx=0;
gint sy=0;
gint ex=1;
gint ey=1;
gint barx=250;
gint diameter=50;
GtkWidget *window;
GtkWidget *da;
gint single =0;
static void destroy(GtkWidget *widget,gpointer data)
{
gtk_main_quit();
}
void press(GtkWidget *widget,GdkEventKey *event)
{
g_print ("press: %x\n",event->keyval);
switch(event->keyval)
{
case 65361: //左键
//g_print ("Rigth\n"); //use debug
if (barx>0 )
barx = barx - 10;
else
barx = 0;
break ;
case 65363: //右键
//g_print ("Left\n"); //use debug
if (barx<500 )
barx = barx + 10;
else
barx = 500;
break ;
case 32: //空格键
single = 1;
//g_print ("Stop\n"); //use debug
break;
case 65293: //回车键
single =0;
//g_print ("Begin\n"); //use debug
break;
default:
break;
}
}
gboolean my_expose(GtkWidget *da,GdkEventExpose *event,gpointer data )
{
GdkGC *gc1,*gc2,*gc;
GdkColor color;
gc1 = gdk_gc_new(da->window);
color.red = 0;
color.green = 65535;
color.blue = 0;
gdk_gc_set_rgb_fg_color(gc1,&color);
gc2 = gdk_gc_new(da->window);
color.red = 65535;
color.green = 0;
color.blue = 0;
gdk_gc_set_rgb_fg_color(gc2,&color);
gc = gc1;
gdk_draw_rectangle(da->window,gc,TRUE,barx,480,100,20);
gc = gc2;
gdk_draw_arc(da->window,gc,TRUE,ex,ey,diameter,diameter,0,64*360);
g_object_unref(G_OBJECT(gc1));
g_object_unref(G_OBJECT(gc2));
return TRUE;
}
void leave_notify_event(GtkWidget *widget, GdkEventMotion *event)
{
gint x, y;
GdkModifierType state;
GdkRectangle rect;
if (event->is_hint)
gdk_window_get_pointer(event->window,&x,&y,&state);
else{
x = (gint)event->x;
y = (gint)event->y;
state = (GdkModifierType)event->state;
}
barx = x;
rect.x = 0;
rect.y = 470;
rect.width = 600;
rect.height = 30;
gdk_window_invalidate_rect(da->window,&rect,FALSE);
}
gboolean inBar()
{
if(ex >=barx && ex <= (barx+100))
return TRUE;
return FALSE;
}
gboolean chPosition()
{
gint tempx=ex;
gint tempy=ey;
if ( single == 1)
{
return TRUE;
}
if(ex == 0 && ey > sy || ey == 0 && ex>sx)
{
ex++;
ey++;
}//右下
else if(ey == (480-diameter) && ex < sx && inBar() || ex == (600-diameter) && ey < sy )
{
ex--;
ey--;
}//左上
else if(ey == 0 && ex <sx || ex == (600-diameter) && ey > sy)
{
ex--;
ey++;
}//左下
else if(ey == (480-diameter) && inBar() && ex > sx || ex == 0 && ey < sy)
{
ex++;
ey--;
}//右上
else if(ey == (500-diameter) )
{
return FALSE;
}
else
{
ex = 2*ex - sx;
ey = 2*ey - sy;
}
sx = tempx;
sy = tempy;
gdk_window_invalidate_rect(da->window, NULL, FALSE);
return TRUE;
}
int main(int argc, char *argv[])
{
gtk_init(&argc,&argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_set_events ( GTK_WIDGET(window), GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK|GDK_BUTTON_PRESS_MASK );
g_signal_connect(G_OBJECT(window),"delete_event", G_CALLBACK(gtk_main_quit),NULL);
g_signal_connect(G_OBJECT(window),"key_press_event", G_CALLBACK(press),NULL);
gtk_widget_add_events( GTK_WIDGET(window), GDK_KEY_PRESS_MASK |GDK_KEY_RELEASE_MASK|GDK_BUTTON_PRESS_MASK);
g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(destroy),NULL);
gtk_signal_connect(GTK_OBJECT(window),"leave_notify_event", GTK_SIGNAL_FUNC(leave_notify_event),NULL);
da = gtk_drawing_area_new();
gtk_widget_set_size_request(da,600,500);
gtk_container_add(GTK_CONTAINER(window),da);
g_signal_connect(da,"expose_event",G_CALLBACK(my_expose),NULL);
gtk_widget_show_all(window);
g_timeout_add(10,(GSourceFunc)chPosition,NULL);
gtk_main();
return 0;
}
这是一个gtk的小游戏,编 译后就能运行了。。有点意思。。
---用GTK实现乒乓球游戏
乒乓球游戏就是人控制一个板把从对面飞过来的球弹回去,当然有的会弹回去就打了一个正方形的格格。我现在这个只是把飞来的球弹回去,用左右控制板的移动,用SPACE控制暂停,用ENTER控制继续开始游戏,功能很简单!
运行的前提是在Windows平台下用VS2005+GTK的开发包,或者用Linux平台的GTK也可以。如果有什么问题,请联系我(可以留言),yanyegang521@126.com
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include <gtk/gtk.h>
#include <stdio.h>
gint sx=0;
gint sy=0;
gint ex=1;
gint ey=1;
gint barx=250;
gint diameter=50;
GtkWidget *window;
GtkWidget *da;
gint single =0;
static void destroy(GtkWidget *widget,gpointer data)
{
gtk_main_quit();
}
void press(GtkWidget *widget,GdkEventKey *event)
{
g_print ("press: %x\n",event->keyval);
switch(event->keyval)
{
case 65361: //左键
//g_print ("Rigth\n"); //use debug
if (barx>0 )
barx = barx - 10;
else
barx = 0;
break ;
case 65363: //右键
//g_print ("Left\n"); //use debug
if (barx<500 )
barx = barx + 10;
else
barx = 500;
break ;
case 32: //空格键
single = 1;
//g_print ("Stop\n"); //use debug
break;
case 65293: //回车键
single =0;
//g_print ("Begin\n"); //use debug
break;
default:
break;
}
}
gboolean my_expose(GtkWidget *da,GdkEventExpose *event,gpointer data )
{
GdkGC *gc1,*gc2,*gc;
GdkColor color;
gc1 = gdk_gc_new(da->window);
color.red = 0;
color.green = 65535;
color.blue = 0;
gdk_gc_set_rgb_fg_color(gc1,&color);
gc2 = gdk_gc_new(da->window);
color.red = 65535;
color.green = 0;
color.blue = 0;
gdk_gc_set_rgb_fg_color(gc2,&color);
gc = gc1;
gdk_draw_rectangle(da->window,gc,TRUE,barx,480,100,20);
gc = gc2;
gdk_draw_arc(da->window,gc,TRUE,ex,ey,diameter,diameter,0,64*360);
g_object_unref(G_OBJECT(gc1));
g_object_unref(G_OBJECT(gc2));
return TRUE;
}
void leave_notify_event(GtkWidget *widget, GdkEventMotion *event)
{
gint x, y;
GdkModifierType state;
GdkRectangle rect;
if (event->is_hint)
gdk_window_get_pointer(event->window,&x,&y,&state);
else{
x = (gint)event->x;
y = (gint)event->y;
state = (GdkModifierType)event->state;
}
barx = x;
rect.x = 0;
rect.y = 470;
rect.width = 600;
rect.height = 30;
gdk_window_invalidate_rect(da->window,&rect,FALSE);
}
gboolean inBar()
{
if(ex >=barx && ex <= (barx+100))
return TRUE;
return FALSE;
}
gboolean chPosition()
{
gint tempx=ex;
gint tempy=ey;
if ( single == 1)
{
return TRUE;
}
if(ex == 0 && ey > sy || ey == 0 && ex>sx)
{
ex++;
ey++;
}//右下
else if(ey == (480-diameter) && ex < sx && inBar() || ex == (600-diameter) && ey < sy )
{
ex--;
ey--;
}//左上
else if(ey == 0 && ex <sx || ex == (600-diameter) && ey > sy)
{
ex--;
ey++;
}//左下
else if(ey == (480-diameter) && inBar() && ex > sx || ex == 0 && ey < sy)
{
ex++;
ey--;
}//右上
else if(ey == (500-diameter) )
{
return FALSE;
}
else
{
ex = 2*ex - sx;
ey = 2*ey - sy;
}
sx = tempx;
sy = tempy;
gdk_window_invalidate_rect(da->window, NULL, FALSE);
return TRUE;
}
int main(int argc, char *argv[])
{
gtk_init(&argc,&argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_set_events ( GTK_WIDGET(window), GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK|GDK_BUTTON_PRESS_MASK );
g_signal_connect(G_OBJECT(window),"delete_event", G_CALLBACK(gtk_main_quit),NULL);
g_signal_connect(G_OBJECT(window),"key_press_event", G_CALLBACK(press),NULL);
gtk_widget_add_events( GTK_WIDGET(window), GDK_KEY_PRESS_MASK |GDK_KEY_RELEASE_MASK|GDK_BUTTON_PRESS_MASK);
g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(destroy),NULL);
gtk_signal_connect(GTK_OBJECT(window),"leave_notify_event", GTK_SIGNAL_FUNC(leave_notify_event),NULL);
da = gtk_drawing_area_new();
gtk_widget_set_size_request(da,600,500);
gtk_container_add(GTK_CONTAINER(window),da);
g_signal_connect(da,"expose_event",G_CALLBACK(my_expose),NULL);
gtk_widget_show_all(window);
g_timeout_add(10,(GSourceFunc)chPosition,NULL);
gtk_main();
return 0;
}
这是一个gtk的小游戏,编 译后就能运行了。。有点意思。。