热门搜索文档格式.docx

上传人:b****1 文档编号:463842 上传时间:2023-04-29 格式:DOCX 页数:18 大小:213.51KB
下载 相关 举报
热门搜索文档格式.docx_第1页
第1页 / 共18页
热门搜索文档格式.docx_第2页
第2页 / 共18页
热门搜索文档格式.docx_第3页
第3页 / 共18页
热门搜索文档格式.docx_第4页
第4页 / 共18页
热门搜索文档格式.docx_第5页
第5页 / 共18页
热门搜索文档格式.docx_第6页
第6页 / 共18页
热门搜索文档格式.docx_第7页
第7页 / 共18页
热门搜索文档格式.docx_第8页
第8页 / 共18页
热门搜索文档格式.docx_第9页
第9页 / 共18页
热门搜索文档格式.docx_第10页
第10页 / 共18页
热门搜索文档格式.docx_第11页
第11页 / 共18页
热门搜索文档格式.docx_第12页
第12页 / 共18页
热门搜索文档格式.docx_第13页
第13页 / 共18页
热门搜索文档格式.docx_第14页
第14页 / 共18页
热门搜索文档格式.docx_第15页
第15页 / 共18页
热门搜索文档格式.docx_第16页
第16页 / 共18页
热门搜索文档格式.docx_第17页
第17页 / 共18页
热门搜索文档格式.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

热门搜索文档格式.docx

《热门搜索文档格式.docx》由会员分享,可在线阅读,更多相关《热门搜索文档格式.docx(18页珍藏版)》请在冰点文库上搜索。

热门搜索文档格式.docx

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

// 

源程序大公开 

//

(c)Copyright2001-2005xuwenjun 

AllRightsReserved 

V1.00 

//标 题:

俄罗斯方块程序 

?

//文件名:

xwj_fk.c 

//版 本:

//修改人:

徐文军 

E-mail:

xuwenjun@ 

//日 期:

05-05-13 

//描 述:

//声 明:

以下代码仅免费提供给学习用途,但引用或修改后必须在文件中声明出处.//

如用于商业用途请与作者联系. 

有问题请mailtoxuwenjun@ 

欢迎与我交流!

//老版本:

无 

老版本文件名:

//创建人:

1、功能完整,直接使用 

2、模块独立性强,移植方便,外部仅init和move函数,修改显示和输入即可//

3、对减少内存占用、尽量减少屏幕操作进行适当优化 

4、新方块生成高度随机,绝对无规律 

5、仿真环境为Keil7.5+Proteus6.5,可以联机也可脱机运行 

codeSIZE 

1845 

---- 

constANTSIZE 

326 

dataSIZE 

16 

19 

idataSIZE 

50 

bitSIZE 

#include<

stdlib.h>

#include"

xwj_lcd16.h"

//字符液晶控制函数声明 

xwj_lcd6963.h"

//T6963C公用函数

xwj_hlkey.h"

//P1口行列式键盘//

xwj_serial.h"

//串口函数集

change.h"

//数制转换

xwj_fk.h"

//俄罗斯方块程序

#defineulong 

unsignedlong

#defineuint 

unsignedint

#defineuchar 

unsignedchar

externvoiddelay(unsignedintx);

//----------------俄罗斯方块内部函数----------------------------------------//

voidfk_dot(ucharx,uchary);

//显示1个方块点

voidfk_cldot(ucharx,uchary);

//清除1个方块点

voidfk_show(void);

//显示分数

voidfk_reffk(void);

//刷新方块

voidfk_refnew(void);

//刷新预览方块

voidfk_refline(yy);

//刷新1行背景

bitfk_chk(void);

//冲突检查

voidfk_new(void);

//产生新方块

voidfk_add(void);

//方块合并

/*

//-----------------俄罗斯方块公用函数--------------------------------------//

voidfk_init(void);

//方块初始化

voidfk_move(unsignedcharmode);

//移动方块

*/

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

#defineFULLMAP 

0x0fff 

/*掩码*/

#defineLINEGUAN 

20 

/*20行过一关*/

#defineNEWX 

15 

/*预览方块X位置*/

#defineNEWY 

12 

/*预览方块Y位置*/

#defineLINEMAX 

21 

/*屏幕最高21行*/

uintidatafk_map[LINEMAX+4];

//背景映象

ucharfk_x,fk_y,fk_r;

//方块左右、高度、方向

ucharfk_type;

//方块形状

ucharfk_oldx,fk_oldy,fk_oldr;

//方块上次左右、高度、方向

ucharfk_newtype,fk_newr;

//新方块形状、方向

uintscore;

//总分

uintline;

//总行数 

ucharspeed;

//速度

ucharmoven;

//速度相关计数器

ucharautomapn;

//随机方块的行数

bitfk_run;

//俄罗斯方坑蜗吩诵?

ucharcodefk_mod[][4][4]={ 

//方块模型号,4个方向,4行

0,0,7,2,0,1,3,1,0,0,2,7,0,2,3,2, 

//_|_

0,0,6,3,0,1,3,2,0,0,6,3,0,1,3,2, 

//_|~

0,0,3,6,0,2,3,1,0,0,3,6,0,2,3,1, 

//~|_

0,0,7,4,0,3,1,1,0,0,1,7,0,2,2,3, 

//|__

0,0,7,1,0,1,1,3,0,0,4,7,0,3,2,2, 

//__|

0,0,0,15,1,1,1,1,0,0,0,15,1,1,1,1, 

//____

0,0,3,3,0,0,3,3,0,0,3,3,0,0,3,3, 

//田字

};

ucharcodestrmap[4][9]={

"

不错!

"

真棒!

好极啦!

"

太棒了!

voidfk_dot(ucharx,uchary) 

{

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

■"

);

}

voidfk_cldot(ucharx,uchary) 

□"

┘"

voidfk_show(void) 

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

printat(60,12,"

00"

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,"

关数:

voidfk_reffk(void) 

uchari,j;

uchartemp;

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

for(i=0;

i<

4;

i++)

{

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

for(j=fk_oldx;

j<

fk_oldx+4;

j++)

if(temp&

0x01)

fk_cldot(j,fk_oldy+i);

}

temp>

>

=1;

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

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

for(j=fk_x;

fk_x+4;

fk_dot(j,fk_y+i);

fk_oldx=fk_x;

fk_oldy=fk_y;

fk_oldr=fk_r;

//保存新方块位置

voidfk_refnew(void) 

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

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

for(j=NEWX;

NEWX+4;

fk_dot(j,NEWY+i);

else

fk_cldot(j,NEWY+i);

voidfk_refline(yy) 

uchari;

uinttemp;

if(yy>

=4)

temp=fk_map[yy];

12;

if((temp&

0x01)!

=0)

fk_dot(i,yy);

fk_cldot(i,yy);

temp>

=1;

bitfk_chk(void) 

bitneq=0;

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

<

fk_x)+(fk_map[fk_y+i]))!

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

fk_x)|(fk_map[fk_y+i])))

neq=1;

return(neq);

voidfk_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();

//刷新显示

voidfk_add(void) 

ucharfull=0x00;

ucharfulltemp;

ucharfullline=0x00;

i++) 

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

fk_x;

full<

if((fk_y+i>

=4)&

&

(fk_map[fk_y+i]==0xffff)) 

//满行

full|=0x01;

if(full!

=0) 

//有满行

for(j=0;

3;

j++) 

//消行闪烁3次

delay(300);

fulltemp=full;

//4行

if((fulltemp&

0x08)!

=0)

fk_map[fk_y+i]^=FULLMAP;

fk_refline(fk_y+i);

fulltemp<

for(i=fk_y;

LINEMAX+4+fullline;

//上面行下移

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)&

=~FULLMAP))

fk_map[i-fullline]=~FULLMAP;

fullline++;

if(((line+fullline)/LINEGUAN)!

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

speed++;

line+=fullline;

//更新分数、行数

score+=(1<

fullline)-1;

printat(46,180,strmap[fullline-1]);

//夸奖

fk_show();

fk_new();

if(fk_y>

LINEMAX-10) 

//在最高位置碰撞且不能消行则游戏结束

printat(46,180,"

加油啊!

//加油啊

LINEMAX-6) 

糟糕了!

//糟糕了

if(fk_y==LINEMAX) 

fk_run=0;

voidfk_init(void) 

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,"

7左旋8右旋9右旋"

printat(2,112,"

4左移5右旋6右移"

printat(2,128,"

4速度5开始6关数"

printat(2,144,"

1左移2下移3右移"

printat(2,160,"

Lcd6963ChHz

(1);

//切换到12X12点阵

欢迎使用"

while(~fk_run)

fk_move();

//等待设置速度关数开始

delay(10);

fk_map[i]=0xffff;

delay(3000);

for(i=4;

LINEMAX+4;

if(i<

(automapn+4))

fk_map[i]=rand()-1|~FULLMAP;

fk_map[i]=~FULLMAP;

fk_refline(i);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2