當前位置:編程學習大全網 - 編程語言 - 怎樣用C語言寫俄羅斯方塊,求指教,謝謝!

怎樣用C語言寫俄羅斯方塊,求指教,謝謝!

首先妳要下載vc++,初學者可以用vs98安裝好後在項目中可以添加如下代碼

#include?"graphics.h"

#include?<conio.h>

#include?<stdlib.h>

int?gcW?=?20,?gcColor[]?=?{DARKGRAY,?LIGHTBLUE,?LIGHTGREEN,?LIGHTCYAN,

LIGHTRED,?LIGHTMAGENTA,MAGENTA,?YELLOW};

struct?tetris?{

int?_pool[16][32],?(*pool)[32],?tmap[8][4][16];

int?x,?y,?s,?st,?t;

}gt;

void?trsInit()?{

int?sp[8][4]?=?{{15,4369},{23,785,116,547},{71,275,113,802},

{39,305,114,562},{54,561},{99,306},{51,51},{-1}};

int?*p,?i,?j,?b;

for?(p?=?sp[0];?*p?>=?0;?++p)?if?(?*p?==?0?)?*p?=?p[-2];

gt.pool?=?&gt._pool[4];

for?(j?=?0;?j?<?7;?++j)

for?(i?=?0;?i?<?4;?++i)

for?(b?=?0;?b?<?16;?++b)

gt.tmap[j+1][i][b]?=?(sp[j][i]?&?1)?*?(j?+?1),

sp[j][i]?>>=?1;

memset(gt._pool,?-1,?sizeof(gt._pool));

for?(i?=?0;?i?<?10;?++i)

memset(&gt.pool[i],?0,?sizeof(int[21]));

return?;

}

int?trsCopy(int?sp[],?int?x,?int?y,?int?c)?{

int?m[]?=?{0,32,64,96,1,33,65,97,2,34,66,98,3,35,67,99},?i,?cx,?cy;

for?(i?=?0;?i?<?16;?++i)?if?(sp[i])?{

cx?=?x?+?(m[i]?>>?5),?cy?=?y?+?(m[i]?&?31);

if?(gt.pool[cx][cy])?if?(c?==?2)?gt.pool[cx][cy]?=?0;?else?return?0;

if?(c==1)?gt.pool[cx][cy]?=?sp[i];

}

return?1;

}

int?trsScene()?{

int?x,?y?=?0;

gt.s?=?random(7)?+?1,?gt.st?=?gt.t?=?0;

gt.x?=?4,?gt.y?=?0;

for?(--gt.t?;?;?delay(10),?--gt.t)?{

int?k?=?0;

while?(kbhit())?{

k?=?getch();

if?(k?==?27)?return?0;

if?(k?==?'A'?||?k?==?'a')?{

if?(trsCopy(gt.tmap[gt.s][gt.st],?gt.x-1,?gt.y,?0))?--gt.x;

}?else?if?(k?==?'D'?||?k?==?'d')?{

if?(trsCopy(gt.tmap[gt.s][gt.st],?gt.x+1,?gt.y,?0))?++gt.x;

}?else?if?(k?==?'W'?||?k?==?'w')?{

if?(trsCopy(gt.tmap[gt.s][(gt.st+1)?%?4],?gt.x,?gt.y,?0))

gt.st?=?(gt.st+1)?%?4;

}

}

if?(k?==?'S'?||?k?==?'s'?||?gt.t?<?0)?{

if?(trsCopy(gt.tmap[gt.s][gt.st],?gt.x,?gt.y+1,?0))++gt.y,gt.t=50;

else?{

trsCopy(gt.tmap[gt.s][gt.st],?gt.x,?gt.y,?1);

for?(--y;?y?>?0;?--y)?{

for?(x?=?0;?gt.pool[x][y]?>?0;?++x);

if?(gt.pool[x][y]?<?0)

for?(k?=?y++;?k?>?0;?--k)

for?(x?=?0;?gt.pool[x][0]?>=?0;?++x)

gt.pool[x][k]?=?gt.pool[x][k-1];

}

return?1;

}

}

trsCopy(gt.tmap[gt.s][gt.st],?gt.x,?gt.y,?1);

for?(x?=?0;?gt.pool[x][0]?>=?0;?++x)?{

for?(y?=?1;?gt.pool[x][y]?>=?0;?++y)?{

setfillstyle(1,?gcColor[gt.pool[x][y]]);

bar(201?+?x*gcW,?1?+?y*gcW,?200?+?gcW?+?x*gcW,?gcW?+?y*gcW);

}

}

trsCopy(gt.tmap[gt.s][gt.st],?gt.x,?gt.y,?2);

}

}

int?main()?{

int?g?=?DETECT,?m?=?0;

initgraph(&g,?&m,?"");

randomize();

trsInit();

while?(trsScene());

return?0;

}

  • 上一篇:充電樁檢測需要檢測什麽?
  • 下一篇:找個適合大學生演的小品或舞臺劇?
  • copyright 2024編程學習大全網