
我给你,我有源代码,可以运行
/
<Russia Diamonds Ver 10>
Copyright by forever_chang
forever_chang@chinacom
2001111
/
//
#include "graphicsh" /头文件/
#include "timeh"
#include "stdlibh"
#include "biosh"
#include "dosh"
#include "stdioh"
#define ESC 0x11b /键盘扫描码/
#define UP 0x4800
#define DOWN 0x5000
#define LEFT 0x4b00
#define F1 0x3b00
#define RIGHT 0x4d00
#define YES 0x1579
#define NO 0x316e
#define RESTART 0x1372
//
struct diamond /记录每种方块每种状态的信息/
{
int x[4];
int y[4];
int start_x;
int start_y;
int color;
struct diamond next;
};
int grid[12][23]; /记录所有格子的状态 (0)没有方块 (1)有固定方块 (2)有活动方块/
int x; /活动方块所在位置/
int y;
int level; /游戏难度/
int count; /计数器/
int score;/得分/
struct diamond nowinfo; /当前活动方块/
struct diamond nextinfo; /下一个方块/
int color;/画格子的颜色/
int backcolor;/游戏区域背景色/
//
void show_interface (int mode);/显示游戏界面/
void show_copsign (int topx,int topy,int size,int color);/显示公司标志--恒基伟业/
void show_intro (int xs,int ys);/显示软件介绍区/
/void print(); 测试用函数/
void scandel();/扫描所有格子看是否有可消除行/
void show_down ();/方块下落后的下一个状态/
void show_next ();/方块翻转后的下一个状态/
void show_left ();/方块向左移动后的下一个状态/
void show_right ();/方块向右移动后的下一个状态/
void interrupt (oldtimer)();/指向未安装前的中断向量,即函数指针,指向一段可执行的代码/
void install();/安装新的中断向量,即将中断服务程序安装到中断向量表中/
void interrupt newtimer();/中断服务程序/
struct diamond get_diamond();/随机得到一个方块/
struct diamond create_I();/函数用来构造各种类形方块的环形链表/
struct diamond create_T();/返回链表中随机一个状态的指针/
struct diamond create_L();
struct diamond create_J();
struct diamond create_Z();
struct diamond create_N();
struct diamond create_H();
void delinfo (struct diamond info);/释放当前方块所占用的空间/
void addtobuffer(int c);/向键盘缓冲区中增加一个DOWN/
/void clrkey();调用dos中断清空键盘缓冲区,未使用此方法/
void showsubwin(struct diamond next);/在小窗口显示下一个方块/
void showscore(int scoreget);/显示分数/
void startset();/初始化游戏/
//
main ()
{
int driver=VGA;
int mode=VGAHI;
int i;/计数器/
int j;
int key;/记录键盘扫描码/
initgraph (&driver,&mode,"");/初始化/
color=8;
backcolor=7;
level=1;
score=298;
count=0;
show_interface (9);/显示界面/
setfillstyle(SOLID_FILL,1);
bar(0,465,640,480);
outtextxy(5,469,"Press any key to start");
getch();
setfillstyle(SOLID_FILL,9);
bar(0,465,640,480);
showscore(0);/显示分数/
randomize();
nowinfo=get_diamond ();/得到一个当前方块/
oldtimer=getvect(0x1c);
install(newtimer);
for(i=0;i<=21;i++)/初始化grid[12][23]/
{
for(j=1;j<=10;j++)
grid[j][i]=0;
}
for(i=0;i<=22;i++)
{
grid[0][i]=1;
grid[11][i]=1;
}
for(i=0;i<=11;i++)
{
grid[i][22]=1;
}
x=nowinfo->start_x;/初始化方块位置/
y=nowinfo->start_y;
nextinfo=get_diamond ();/得到下一个方块/
showsubwin(nextinfo);
for (;
{
key=bioskey(0);/得到键盘扫描码/
if (key)
{
switch(key)
{
case DOWN:{
show_down ();
break;
}
case UP:{
show_next ();
break;
}
case LEFT:{
show_left();
break;
}
case RIGHT:{
show_right();
break;
}
case RESTART:{
install(oldtimer);
setfillstyle(SOLID_FILL,1);
bar(0,465,640,480);
outtextxy(5,469,"Are you sure to restart (Y/N)");
for (;
{
key=bioskey(0);/得到键盘扫描码/
if (key==YES)
{
startset();
setfillstyle(SOLID_FILL,9);
bar(0,465,640,480);
break;
}
if (key==NO)
{
setfillstyle(SOLID_FILL,9);
bar(0,465,640,480);
install(newtimer);
break;
}
}
break;
}
/ case F1:{
print();
break;
}
/
case ESC:{
install(oldtimer);
setfillstyle(SOLID_FILL,1);
bar(0,465,640,480);
outtextxy(5,469,"Are you sure to exit (Y/N)");
for (;
{
key=bioskey(0);/得到键盘扫描码/
if (key==YES)
{
closegraph();
exit(0);
}
if (key==NO)
{
setfillstyle(SOLID_FILL,9);
bar(0,465,640,480);
install(newtimer);
break;
}
}
}
}
}
}
}
//
struct diamond get_diamond()
{
struct diamond now;
switch (random(7)+1)
{
case 1:{
now=create_I();
return now;
}
case 2:{
now=create_T();
return now;
}
case 3:{
now=create_L();
return now;
}
case 4:{
now=create_J();
return now;
}
case 5:{
now=create_Z();
return now;
}
case 6:{
now=create_N();
return now;
}
case 7:{
now=create_H();
return now;
}
}
}
//
void show_interface (int fill_mode)
{
int i;
setbkcolor (9);
setcolor (color);
setfillstyle (SOLID_FILL,backcolor);
bar (100,60,300,420);
bar (360,60,440,140);
rectangle (100,60,300,420);
rectangle (96,56,304,424);
rectangle (360,60,440,140);
rectangle (356,56,444,144);
setfillstyle (fill_mode,14);
floodfill (97,57,color);
floodfill (397,57,color);
setcolor(1);
rectangle(96,56,304,424);
setcolor (color);
for (i=80;i<=400;i+=20)
{
line (100,i,300,i);
}
for (i=120;i<=280;i+=20)
{
line (i,60,i,420);
}
for (i=80;i<=120;i+=20)
{
line (360,i,440,i);
}
for (i=380;i<=420;i+=20)
{
line (i,60,i,140);
}
show_intro (360,180);
show_copsign (475,320,40,1);
setfillstyle(SOLID_FILL,1);
setcolor(14);
rectangle(420,405,534,417);
floodfill (421,406,14);
outtextxy(422,408,"HI-TECH WEALTH");
}
//
void show_copsign (int topx,int topy,int size,int color)
{
int halfsize,qtrsize;
int xadd,xdel,yadd1,yadd2;
halfsize=05size;
qtrsize=025size;
xadd=topx+size;
xdel=topx-size;
yadd1=topy+size;
yadd2=topy+2size;
setcolor(color);
line (topx,topy,xdel,yadd1);
line (xdel,yadd1,topx,yadd2);
line (topx,yadd2,xadd,yadd1);
line (xadd,yadd1,topx,topy);
rectangle (topx-halfsize,topy+halfsize,topx+halfsize,yadd1+halfsize);
setfillstyle (SOLID_FILL,color);
floodfill (topx,topy+1,color);
floodfill (xdel+1,yadd1,color);
floodfill (topx,yadd2-1,color);
floodfill (xadd-1,yadd1,color);
rectangle (topx-halfsize,yadd1-qtrsize,topx-075halfsize,yadd1+qtrsize);
floodfill (topx-halfsize+1,yadd1-qtrsize+1,color);
rectangle (topx-qtrsize,yadd1-halfsize,topx+qtrsize,yadd1-025halfsize);
floodfill (topx-qtrsize+1,yadd1-halfsize+1,color);
rectangle (topx+075halfsize,yadd1-qtrsize,topx+halfsize,yadd1+qtrsize);
floodfill (topx+075halfsize+1,yadd1-qtrsize+1,color);
rectangle (topx-qtrsize,yadd1+025halfsize,topx+qtrsize,yadd2-halfsize);
floodfill (topx-qtrsize+1,yadd1+025halfsize+1,color);
setcolor(14);
line (topx,topy-1,xdel-1,yadd1);
line (xdel-1,yadd1,topx,yadd2+1);
line (topx,yadd2+1,xadd+1,yadd1);
line (xadd+1,yadd1,topx,topy-1);
setfillstyle (SOLID_FILL,14);
floodfill (topx,yadd1,color);
}
//
void show_intro (int xs,int ys)
{
char stemp[20];
setcolor (15);
rectangle(xs-3,ys-3,xs+239,ys+115);
line (xs-3,ys+26,xs+239,ys+26);
line (xs-3,ys+72,xs+239,ys+72);
outtextxy(xs,ys,"Level:");
outtextxy(xs,ys+15,"Score:");
sprintf(stemp," -Roll -Downwards");
stemp[0]=24;
stemp[7]=25;
outtextxy(xs,ys+30,"Help:");
setcolor(14);
outtextxy(xs+40,ys+30,stemp);
outtextxy(xs+40,ys+45,"<-Turn Left >-Turn Right");
outtextxy(xs+40,ys+60,"Esc-Exit R-Restart");
outtextxy(xs,ys+75,"Russia Diamonds Ver 10");
outtextxy(xs,ys+90,"CopyRight By ChangYong01-11-1");
outtextxy(xs,ys+105,"Email:forever_chang@163com");
}
//
struct diamond create_I()
{
struct diamond info;
struct diamond first;
first=(struct diamond )malloc(sizeof(struct diamond));
info=(struct diamond )malloc(sizeof(struct diamond));
first->next=info;
info->next=first;
first->x[0]=0;
first->y[0]=0;
first->x[1]=-1;
first->y[1]=0;
first->x[2]=1;
first->y[2]=0;
first->x[3]=2;
first->y[3]=0;
first->start_x=5;
first->start_y=3;
first->color=2;
info->x[0]=0;
info->y[0]=0;
info->x[1]=0;
info->y[1]=-1;
info->x[2]=0;
info->y[2]=1;
info->x[3]=0;
info->y[3]=2;
info->start_x=5;
info->start_y=1;
info->color=2;
if(random(2)==0) {return first;}
else {return first->next;}
}
//
struct diamond create_T()
{
struct diamond info;
struct diamond first;
struct diamond last;
int i;
info=(struct diamond )malloc(sizeof(struct diamond));
info->x[0]=0;
info->y[0]=0;
info->x[1]=-1;
info->y[1]=0;
info->x[2]=0;
info->y[2]=-1;
info->x[3]=1;
info->y[3]=0;
info->start_x=5;
info->start_y=3;
info->color=4;
first=info;
last=info;
info=(struct diamond )malloc(sizeof(struct diamond));
info->x[0]=0;
info->y[0]=0;
info->x[1]=0;
info->y[1]=1;
info->x[2]=0;
info->y[2]=-1;
info->x[3]=1;
info->y[3]=0;
info->start_x=5;
info->start_y=2;
info->color=4;
last->next=info;
last=info;
info=(struct diamond )malloc(sizeof(struct diamond));
info->x[0]=0;
info->y[0]=0;
info->x[1]=-1;
info->y[1]=0;
info->x[2]=1;
info->y[2]=0;
info->x[3]=0;
info->y[3]=1;
info->start_x=5;
info->start_y=2;
info->color=4;
last->next=info;
last=info;
info=(struct diamond )malloc(sizeof(struct diamond));
info->x[0]=0;
info->y[0]=0;
info->x[1]=0;
info->y[1]=1;
info->x[2]=0;
info->y[2]=-1;
info->x[3]=-1;
info->y[3]=0;
info->start_x=5;
info->start_y=2;
info->color=4;
last->next=info;
last=info;
last->next=first;
for (i=0;i<=random(4);i++)
{
first=first->next;
}
return first;
}
//
struct diamond create_L()
{
struct diamond info;
struct diamond first;
struct diamond last;
int i;
info=(struct diamond )malloc(sizeof(struct diamond));
info->x[0]=0;
info->y[0]=0;
info->x[1]=0;
info->y[1]=1;
info->x[2]=0;
info->y[2]=-1;
info->x[3]=1;
info->y[3]=1;
info->start_x=5;
info->start_y=2;
info->color=5;
first=info;
last=info;
info=(struct diamond )malloc(sizeof(struct diamond));
info->x[0]=0;
info->y[0]=0;
info->x[1]=-1;
info->y[1]=0;
info->x[2]=1;
info->y[2]=0;
info->x[3]=-1;
info->y[3]=1;
info->start_x=5;
info->start_y=2;
info->color=5;
last->next=info;
last=info;
info=(struct diamond )malloc(sizeof(struct diamond));
info->x[0]=0;
info->y[0]=0;
info->x[1]=0;
info->y[1]=1;
info->x[2]=0;
info->y[2]=-1;
info->x[3]=-1;
info->y[3]=-1;
info->start_x=5;
info->start_y=2;
info->color=5;
last->next=info;
last=info;
info=(struct diamond )malloc(sizeof(struct diamond));
info->x[0]=0;
info->y[0]=0;
info->x[1]=-1;
info->y[1]=0;
info->x[2]=1;
info->y[2]=0;
info->x[3]=1;
info->y[3]=-1;
info->start_x=5;
info->start_y=2;
info->color=5;
last->next=info;
last=info;
last->next=first;
for (i=0;i<=random(4);i++)
{
first=first->next;
}
return first;
}
//
struct diamond create_J()
{
struct diamond info;
struct diamond first;
struct diamond last;
int i;
info=(struct diamond )malloc(sizeof(struct diamond));
info->x[0]=0;
info->y[0]=0;
info->x[1]=0;
info->y[1]=1;
info->x[2]=0;
info->y[2]=-1;
info->x[3]=-1;
info->y[3]=1;
info->start_x=5;
info->start_y=2;
info->color=6;
first=info;
last=info;
info=(struct diamond )malloc(sizeof(struct diamond));
info->x[0]=0;
info->y[0]=0;
info->x[1]=-1;
info->y[1]=0;
info->x[2]=1;
info->y[2]=0;
info->x[3]=-1;
info->y[3]=-1;
info->start_x=5;
info->start_y=2;
info->color=6;
last->next=info;
last=info;
info=(struct diamond )malloc(sizeof(struct diamond));
info->x[0]=0;
info->y[0]=0;
info->x[1]=0;
info->y[1]=1;
info->x[2]=0;
info->y[2]=-1;
info->x[3]=1;
info->y[3]=-1;
info->start_x=5;
info->start_y=2;
info->color=6;
last->next=info;
last=info;
info=(struct diamond )malloc(sizeof(struct diamond));
info->x[0]=0;
info->y[0]=0;
info->x[1]=-1;
info->y[1]=0;
info->x[2]=1;
info->y[2]=0;
info->x[3]=1;
info->y[3]=1;
info->start_x=5;
info->start_y=2;
info->color=6;
last->next=info;
last=info;
last->next=first;
for (i=0;i<=random(4);i++)
{
first=first->next;
}
return first;
}
//
struct diamond create_Z()
{
struct diamond info;
struct diamond first;
first=(struct diamond )malloc(sizeof(struct diamond));
info=(struct diamond )malloc(sizeof(struct diamond));
first->next=info;
info->next=first;
first->x[0]=0;
first->y[0]=0;
first->x[1]=-1;
first->y[1]=0;
first->x[2]=0;
first->y[2]=1;
first->x[3]=1;
first->y[3]=1;
first->start_x=5;
first->start_y=2;
first->color=9;
info->x[0]=0;
info->y[0]=0;
info->x[1]=0;
info->y[1]=1;
info->x[2]=1;
info->y[2]=0;
info->x[3]=1;
info->y[3]=-1;
info->start_x=5;
info->start_y=2;
info->color=9;
if(random(2)==0) {return first;}
else {return first->next;}
}
//
struct diamond create_N()
{
struct diamond info;
struct diamond first;
first=(struct diamond )malloc(sizeof(struct diamond));
info=(struct diamond )malloc(sizeof(struct diamond));
first->next=info;
info->next=first;
first->x[0]=0;
first->y[0]=0;
first->x[1]=0;
first->y[1]=1;
first->x[2]=-1;
first->y[2]=1;
first->x[3]=1;
first->y[3]=0;
first->start_x=5;
first->start_y=2;
first->color=14;
info->x[0]=0;
info->y[0]=0;
info->x[1]=0;
info->y[1]=-1;
info->x[2]=1;
info->y[2]=0;
info->x[3]=1;
info->y[3]=1;
info->start_x=5;
info->start_y=2;
info->color=14;
if(random(2)==0) {return first;}
else {return first->next;}
}
//
struct diamond create_H()
{
struct diamond first;
first=(struct diamond )malloc(sizeof(struct diamond));
first->next=first;
first->x[0]=0;
first->y[0]=0;
first->x[1]=0;
first->y[1]=1;
first->x[2]=1;
first->y[2]=0;
first->x[3]=1;
first->y[3]=1;
first->start_x=5;
first->start_y=2;
first->color=1;
return first;
}
//
void show_next ()
{
int nowx;/记录当前每个格子的位置/
int nowy;
int i;/计数器/
int j;
int haveit;/当前格子是否已经显示/
struct diamond next;/当前方块的翻转后的下一个状态/
next=nowinfo->next;
if (next==NULL) {gotoxy(1,1);printf("null");}
for (i=0;i<=3;i++)/判断是否能够翻转,若不能,就直接退出该函数/
{
if (grid[x+next->x[i]][y+next->y[i]]==1)
{
return;
}
}
setfillstyle(SOLID_FILL,backcolor);/设置背景色以消除不需要的格子/
for (i=0;i<=3;i++)
{
haveit=0;
for (j=0;j<=3;j++)
{
if (next->x[j]==nowinfo->x[i]&&next->y[j]==nowinfo->y[i]) {haveit=1;break;}
}
if (haveit==0) /判断翻转后该格子是否显示,若不显示,将该格子设为背景色/
{
grid[x+nowinfo->x[i]][y+nowinfo->y[i]]=0;
if (y+nowinfo->y[i]>=4)/判断该格子是否到了可以显示的区域/
floodfill(80+(nowinfo->x[i]+x)20+1,-20+(nowinfo->y[i]+y)20+1,color);
}
}
nowinfo=next;
nowx=x;
nowy=y;
setfillstyle(SOLID_FILL,nowinfo->color);/设置填冲色为方块的颜色/
for (i=0;i<=3;i++)
{
if (grid[x+nowinfo->x[i]][y+nowinfo->y[i]]!=2)/如果该格子还没有被显示/
{
nowx=x+nowinfo->x[i];
nowy=y+nowinfo->y[i];
if (y+nowinfo->y[i]>=4)
floodfill(80+nowx20+1,-20+nowy20+1,color);
grid[nowx][nowy]=2; /设置该格子当前有活动方块/
}
}
return;
}
//
void show_left ()
{
int i;/计数器/
int j;
int haveit;/当前格子是否已经显示/
int nowx;/记录当前每个格子的位置/
int nowy;
for (i=0;i<=3;i++)/判断是否可以向左移动/
{
if (grid[x-1+nowinfo->x[i]][y+nowinfo->y[i]]==1)
{
return;
}
}
setfillstyle(SOLID_FILL,backcolor);/设置背景色以消除不需要的格子/
for (i=0;i<=3;i++)
{
haveit=0;
for (j=0;j<=3;j++)
{
if (nowinfo->x[i]==nowinfo->x[j]-1&&nowinfo->y[i]==nowinfo->y[j]) {haveit=1;break;}
}
if (haveit==0) /判断翻转后该格子是否显示,若不显示,将该格子设为背景色/
{
grid[x+nowinfo->x[i]][y+nowinfo->y[i]]=0;
if (y+nowinfo->y[i]>=4)/判断该格子是否到了可以显示的区域/
floodfill(80+(nowinfo->x[i]+x)20+1,-20+(nowinfo->y[i]+y)20+1,color);
}
}
setfillstyle(SOLID_FILL,nowinfo->color);/设置填冲色为方块的颜色/
for (i=0;i<=3;i++)
{
nowx=x+nowinfo->x[i]-1;
nowy=y+nowinfo->y[i];
if (grid[nowx][nowy]!=2)/如果该格子还没有被显示/
{
if (nowy>=4)
floodfill(80+nowx20+1,-20+nowy20+1,color);
grid[nowx][nowy]=2;
}
}
x=x-1;
return;
}
//
void show_right ()
{
int i;/计数器/
int j;
int haveit;/当前格子是否已经显示/
int nowx;/记录当前每个格子的位置/
int nowy;
for (i=0;i<=3;i++)
{
if (grid[x+1+nowinfo->x[i]][y+nowinfo->y[i]]==1)
{
return;/判断是否可以向右移动/
}
}
setfillstyle(SOLID_FILL,backcolor);/设置背景色以消除不需要的格子/
for (i=0;i<=3;i++)
{
haveit=0;
for (j=0;j<=3;j++)
{
if (nowinfo->x[i]==nowinfo->x[j]+1&&nowinfo->y[i]==nowinfo->y[j]) {haveit=1;break;}
}
if (haveit==0)/判断翻转后该格子是否显示,若不显示,将该格子设为背景色/
{
grid[x+nowinfo->x[i]][y+nowinfo->y[i]]=0;
if (y+nowinfo->y[i]>=4)/判断该格子是否到了可以显示的区域/
floodfill(80+(nowinfo->x[i]+x)20+1,-20+(nowinfo->y[i]+y)20+1,color);
}
}
setfillstyle(SOLID_FILL,nowinfo->color);/设置填冲色为方块的颜色/
for (i=0;i<=3;i++)
{
nowx=x+nowinfo->x[i]+1;
nowy=y+nowinfo->y[i];
if (grid[nowx][nowy]!=2)
{
if (nowy>=4)/判断该格子是否到了可以显示的区域/
floodfill(80+nowx20+1,-20+nowy20+1,color);
grid[nowx][nowy]=2;
}
}
x=x+1;
return;
}
//
void show_down ()
{
int i;/计数器/
int j;
int haveit;/当前格子是否已经显示/
int nowx;/记录当前每个格子的位置/
int nowy;
int key;
for (i=0;i<=3;i++)
{
if (grid[x+nowinfo->x[i]][y+nowinfo->y[i]+1]==1)/判断方块是否能够下落/
{
for (j=0;j<=3;j++)
{
grid[x+nowinfo->x[j]][y+nowinfo->y[j]]=1;
if (y+nowinfo->y[j]<=3)
{/判断游戏是否已经玩完/
install(oldtimer);
setfillstyle(SOLID_FILL,1);
bar(0,465,640,480);
outtextxy(5,469,"Do you want to restart (Y/N)");
for (;
{
key=bioskey(0);
if (key==YES)
{
startset();
setfillstyle(SOLID_FILL,9);
bar(0,465,640,480);
return;
}
if (key==NO)
{
closegraph();
exit (0);}
}
}
}
delinfo(nowinfo);
scandel();/扫描,删除/
delay(2500);
while(bioskey(1)) bioskey(0);/清除键盘缓冲区/
/ clrkey();/
nowinfo=nextinfo;/得到新的方块/
nextinfo=get_diamond();/得到下一个方块/
showsubwin(nextinfo);
x=nowinfo->start_x;/重新设置方块位置/
y=nowinfo->start_y;
return;
}
}
setfillstyle(SOLID_FILL,backcolor);/设置背景色以消除不需要的格子/
for (i=0;i<=3;i++)
{
haveit=0;
for (j=0;j<=3;j++)
{
if (nowinfo->x[i]==nowinfo->x[j]&&nowinfo->y[i]==nowinfo->y[j]+1) {haveit=1;break;}
}
详见:
>
自己看吧。这就是用C语言做的最最简单的一个窗口:
#include <tcharh>#include <windowsh>
/ 这个函数由Windows内部函数DispatchMessage()调用 /
LRESULT CALLBACK WindowProcedure (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch (message) / 处理信息 /
{
case WM_DESTROY:
PostQuitMessage (0); / 发送WM_QUIT到消息队列 /
break;
case WM_PAINT:
hdc = BeginPaint (hWnd, &ps);
GetClientRect (hWnd, &rect);
DrawText (hdc, TEXT("Hello, Windows NT!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint (hWnd, &ps);
break;
default: / 不处理的消息 /
return DefWindowProc (hWnd, message, wParam, lParam);
}
return 0;
}
/ 下面是主函数 /
int WINAPI _tWinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nFunsterStil)
{
HWND hWnd; / 这是窗口的句柄 /
MSG messages; / 应用程序的消息保存在这里 /
WNDCLASSEX wincl; / 窗口类的数据结构 /
TCHAR szClassName[ ] = TEXT("WindowsApp"); / 窗口类的类名 /
/ 窗口结构 /
winclhInstance = hThisInstance;
wincllpszClassName = szClassName;
wincllpfnWndProc = WindowProcedure;/ 这个函数由Windows *** 作系统调用 /
winclstyle = CS_DBLCLKS; / 获取双击指令 /
winclcbSize = sizeof (WNDCLASSEX);
/ 使用默认图标和鼠标指针 /
winclhIcon = LoadIcon (NULL, IDI_APPLICATION);
winclhIconSm = LoadIcon (NULL, IDI_APPLICATION);
winclhCursor = LoadCursor (NULL, IDC_ARROW);
wincllpszMenuName = NULL; / 没有菜单 /
winclcbClsExtra = 0;/ 窗口类后面没有多余的字节 /
winclcbWndExtra = 0;/ 结构或者窗口实例 /
/ 使用窗口的默认颜色作为窗口的背景色 /
winclhbrBackground = (HBRUSH) COLOR_BACKGROUND;
/ 注册窗口类。如果注册失败,那么就退出程序 /
if (!RegisterClassEx (&wincl))
return 0;
/ 窗口类已被注册。创建它的程序 /
hWnd = CreateWindowEx (
0,
szClassName, / 类名 /
TEXT("Windows App"), / 窗口标题栏的文字 /
WS_OVERLAPPEDWINDOW, / 默认窗口 /
CW_USEDEFAULT, / 窗口左上角的位置 /
CW_USEDEFAULT, / 窗口右下角的位置 /
544, / 窗口宽度(以“像素”位单位) /
375, / 窗口高度(以“像素”位单位) /
HWND_DESKTOP, / 窗口是桌面的子窗口 /
NULL,/ 该窗口无菜单 /
hThisInstance, / 程序实例的句柄 /
NULL / 没有窗口创建的数据 /
);
/ 显示窗口 /
ShowWindow (hWnd, nFunsterStil);
/ 重绘窗口 /
UpdateWindow(hWnd);
/ 运行消息循环。循环到GetMessage()函数返回0 /
while (GetMessage (&messages, NULL, 0, 0))
{
/ 把虚拟信息翻译成字符信息 /
TranslateMessage(&messages);
/ 发送信息到窗口过程 /
DispatchMessage(&messages);
}
/ 返回PostQuitMessage()函数的返回值 /
return messageswParam;
}
以上就是关于C语言中的俄罗斯方块全部的内容,包括:C语言中的俄罗斯方块、怎样用c语言编写一个界面好看的游戏 例如 俄罗斯方块、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)