C语言中的俄罗斯方块

C语言中的俄罗斯方块,第1张

我给你,我有源代码,可以运行

/

<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语言编写一个界面好看的游戏 例如 俄罗斯方块、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9496424.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存