俄罗斯方块程序(2)

2019-03-15 22:11

{

// printat(x*3+1, 241-(y-4)*12,\ printat(x*3+1, 241-(y-4)*12,\

}

//--------------------------------------------------------------------------//

void fk_show(void) //显示分数

{

printat(50, 12,chnint(score,1));

printat(60, 12,\ printat(40, 12,\得分:\ printat(54,36,chnint(line,1)); printat(40, 36,\行数:\ printat(54,60,chnchar(speed,1));

printat(40,60,\速度:\ printat(54,84,chnchar(automapn,1));

printat(40,84,\关数:\

}

//--------------------------------------------------------------------------//

void fk_reffk(void) //刷新方块

{ uchar i,j; uchar temp;

//----------------------------------------------//清除原来的方块

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

{

temp=(fk_mod[fk_type][fk_oldr][i]); for (j=fk_oldx;j

{

if(temp&0x01)

{

fk_cldot(j,fk_oldy+i);

} temp>>=1;

} }

//----------------------------------------------//显示新的方块

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

{

temp=(fk_mod[fk_type][fk_r][i]);

for (j=fk_x;j

{

if(temp&0x01)

{

fk_dot(j,fk_y+i);

} temp>>=1;

} }

fk_oldx=fk_x;fk_oldy=fk_y;fk_oldr=fk_r; //保存新方块位置

}

//--------------------------------------------------------------------------//

void fk_refnew(void) //刷新预览方块

{ uchar i,j; uchar temp;

//----------------------------------------------//预览方块

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

{

temp=(fk_mod[fk_newtype][fk_newr][i]);

for (j=NEWX;j

{

if(temp&0x01)

{

fk_dot(j,NEWY+i);

} else {

fk_cldot(j,NEWY+i);

} temp>>=1;

} } }

//--------------------------------------------------------------------------//

void fk_refline(yy) //刷新1行背景

{ uchar i; uint temp; if (yy>=4)

{

temp=fk_map[yy]; for (i=0;i<12;i++)

{

if ((temp&0x01) !=0)

fk_dot(i,yy);

else fk_cldot(i,yy); temp >>= 1;

} } }

//--------------------------------------------------------------------------//

bit fk_chk(void) //冲突检查

{ uchar i; bit neq=0; for (i=0;i<4;i++)

{

if ( (((fk_mod[fk_type][fk_r][i])<

(((fk_mod[fk_type][fk_r][i])<

neq=1;

} return(neq);

}

//--------------------------------------------------------------------------//

void fk_new(void) //产生新方块

{

srand(rand()+fk_x+fk_y+fk_r);

fk_oldx=fk_x=5; fk_oldy=fk_y=LINEMAX; fk_type = fk_newtype; fk_oldr=fk_newr; fk_newtype = rand()%7; fk_newr=rand()%4;

fk_refnew(); //刷新预览方块

if (fk_run)

fk_reffk(); //刷新显示

}

//--------------------------------------------------------------------------//

void fk_add(void) //方块合并

{ uchar i,j; uchar full=0x00; uchar fulltemp; uchar fullline=0x00;

for (i=0;i<4;i++) //方块合并

{

fk_map[fk_y+i] |= (fk_mod[fk_type][fk_r][i])<

full <<= 1;

if ((fk_y+i >= 4) && (fk_map[fk_y+i] == 0xffff)) //满行

{ full |= 0x01;

} }

if (full != 0) //有满行

{

for (j=0;j<3;j++) //消行闪烁3次

{ delay(300); fulltemp=full; for (i=0;i<4;i++) //4行

{

if ((fulltemp&0x08) != 0)

{

fk_map[fk_y+i] ^= FULLMAP;

}

fk_refline(fk_y+i); fulltemp <<= 1;

} } fulltemp=full;

for (i=fk_y;i

{

if ((i < LINEMAX+4)&&(fk_map[i-fullline]!=fk_map[i]))

{

fk_map[i-fullline]=fk_map[i];

fk_refline(i-fullline);

}

if ((i >= LINEMAX+4)&&(fk_map[i-fullline]!=~FULLMAP))

{

fk_map[i-fullline]=~FULLMAP; //背景映象

fk_refline(i-fullline);

}

if ((fulltemp&0x08) != 0)

{ fullline++;

} fulltemp <<= 1;

}

if (((line+fullline)/LINEGUAN) != (line/LINEGUAN))//每20行速度+1

speed ++;

line += fullline; //更新分数、行数

score += (1<

printat(46,180,strmap[fullline-1]); //夸奖 fk_show(); //显示分数 fk_new(); //产生新方块

} else {

if (fk_y > LINEMAX-10) //在最高位置碰撞且不能消行则游戏结束

printat(46,180,\加油啊!\加油啊

if (fk_y > LINEMAX-6) //在最高位置碰撞且不能消行则游戏结束

printat(46,180,\糟糕了!\糟糕了

if (fk_y==LINEMAX) //在最高位置碰撞且不能消行则游戏结束

fk_run=0; //方块初始化

else

fk_new(); //产生新方块

} }

//--------------------------------------------------------------------------//

void fk_init(void) //方块初始化

{ uchar i; fk_run = 0; moven=0; Lcd6963Cls(); Lcd6963Rec(0,0,152,255);

Lcd6963ChHz(0); //切换到16X16点阵

printat(2, 16,\欢迎光临文君阁\ printat(2, 48,\请按键选择:\ printat(2, 80,\ printat(2, 96,\左旋 8右旋 9右旋\ printat(2, 112,\左移 5右旋 6右移\ printat(2, 128,\速度 5开始 6关数\ printat(2, 144,\左移 2下移 3右移\

printat(2, 160,\

Lcd6963ChHz(1); //切换到12X12点阵

printat(46,180,\欢迎使用\ fk_show(); //显示分数

while (~fk_run)

{


俄罗斯方块程序(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:德育职责

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: