ARM课程设计报告 - 图文 联系客服

发布时间 : 星期二 文章ARM课程设计报告 - 图文更新完毕开始阅读ba3af20dbfd5b9f3f90f76c66137ee06eff94e7c

ARM系统设计实践课程报告

附录:

/////////// 设置屏幕上某点的亮灭函数/////////////////

void Set_Display(uint8 x,uint8 y,uint8 k) //设置(y,x)点的亮(1)或者灭(0),显示屏上横为y,竖为x,函数这样和一般坐标系就一致 {

uint8 xx,jj,kk,tt; xx=x;

kk=y/8; //在第几列 jj=y%8; //在该列的第几位

tt=0x01; if(k==1) {

if(jj!=0) {

tt=tt<<(8-jj);//找到相应的位置赋值 chDispRam[x][kk]=chDispRam[x][kk]| tt; } else {

chDispRam[x][kk-1]=chDispRam[x][kk-1]| tt; } }

else if(k==0) {

if(jj!=0) {

tt=tt<<(8-jj);//找到相应的位置赋值 tt=~tt;

chDispRam[x][kk]=chDispRam[x][kk]&tt; } else {

tt=0xfe;

chDispRam[x][kk-1]=chDispRam[x][kk-1]& tt; } }

disp_bmp(); }

////////////检测屏幕上某点的亮灭函数//////////////

8

ARM系统设计实践课程报告

uint8 Test_Light(uint8 x,uint8 y) //检测坐标(y,x)处亮(1)或者灭(0) {

uint8 xx,jj,kk,tt;

xx=x;

kk=y/8; //在第几列 jj=y%8; //在列的第几位

tt=0x80;

tt=tt>>(8-jj); //找到相应的位置赋值 chDispRam2[x][kk]=chDispRam[x][kk]&tt; return chDispRam2[x][kk]; }

///////////游戏开始后贪吃蛇初始行进函数/////////////////

void Move() //蛇初始运动方向为向右 {

while(1) {

Set_Display(SX,++SY,1); //蛇头向前一点

Judge_Food(); //直线运动,判断食物 Set_Display(SX,SY-SL,0); //蛇尾灭一个点

switch( Key_Num ) //检测是否向上或者向下的按键 {

case KEY1: //键1表示向上 Key_Num = 0; UpMove(); break;

case KEY2: //键2表示向下 Key_Num = 0; DownMove(); break; default:

Key_Num = 0; break; } } }

9

ARM系统设计实践课程报告

///////////贪吃蛇向右转向函数//////////////////

void RightMove() //向右运动 {

Judge_Direction(); sx=SX; sy=SY; sl=SL;

if(JD==1) //向上运动时 {

JD=0;

while(1) //正在向右转弯 {

if(sl!=0) {

Set_Display(SX,++SY,1);

Set_Display(sx-(sl-1),sy,0);

if((foodsignal==1)&&(sl==2)) 蛇长变长

{

SL=SL+1; sl=sl-2; } else sl--; } else break; } }

else if(JD==2) //向下运动时 {

JD=0;

while(1) //正在向右转弯 {

if(sl!=0) {

Set_Display(SX,++SY,1);

Set_Display(sx+(sl-1),sy,0);

if((foodsignal==1)&&(sl==2)) 蛇长变长

{

SL=SL+1; sl=sl-2;

10

目的是在在转弯过程中,吃到食物,目的是在在转弯过程中,吃到食物, // //ARM系统设计实践课程报告

} else sl--; } else break; } }

while(1) //转向完毕后直线行进 {

Set_Display(SX,++SY,1); //蛇头向前一点

Judge_Food(); //直线运动,判断食物 Set_Display(SX,SY-SL,0); //蛇尾灭一个点

switch( Key_Num ) //检测是否向上或者向下的按键 {

case KEY1: //键1表示向上 Key_Num = 0; UpMove(); break;

case KEY2: //键2表示向下 Key_Num = 0; DownMove(); break; default:

Key_Num = 0; break; } } }

///////////贪吃蛇向上转向函数///////////////

void UpMove() {

Judge_Direction(); sx=SX; sy=SY; sl=SL;

if(JD==3) //向左运动时 {

JD=0;

while(1) //正在向上转弯

11