易码技术论坛

 找回密码
 加入易码
搜索
查看: 231668|回复: 6

[求助]一个奇怪的LAVA问题

[复制链接]
发表于 2006-7-5 02:10:00 | 显示全部楼层
说说具体情况,包括你的WQX型号和使用的编译器
 楼主| 发表于 2006-7-5 08:34:00 | 显示全部楼层
文曲星型号nc3000  使用的编译器:PC:lava3.3 文曲星:编译器1.02

症状:在文曲星端Drawmap()这个自定义函数似乎没有启动

无论是编译好的.lav还是传到文曲星上编译后的.lav
发表于 2006-7-5 09:22:00 | 显示全部楼层
最好发代码,这样描述太抽象~
发表于 2006-7-6 21:45:00 | 显示全部楼层
用3.1的虚拟机应该和文曲星一样,肯定是你程序本身的问题!

是不是打开文件后没有关闭,然后又打开了?

这样模拟器1.0能用,文曲星用不了!
 楼主| 发表于 2006-7-7 11:26:00 | 显示全部楼层
代码应该没有问题,因为是复制LEE博士失踪记的代码

#define  LEFT_ARROW   23
#define  RIGHT_ARROW  22
#define  UP_ARROW   20
#define  DOWN_ARROW   21
//----------------------------------------------------------------
#define LCD_HEIGHT_START 0
#define LCD_HEIGHT_END  3
#define LCD_WIDTH_START  0
#define LCD_WIDTH_END  9

#define LCD_MAX_WIDTH_OBJ 10
#define LCD_MAX_HEIGHT_OBJ 4
//----------------------------------------------------------------
#define MAP_MAX_WIDTH_OBJ 31
#define MAP_MAX_HEIGHT_OBJ 10



int man_x,man_y,map_x,map_y;
char map[][31]={
//0         x05            x10            x15            x20
01,01,01,01,01,30,31,32,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,
01,15,16,17,01,33,34,35,01,01, 0, 0,51,52,01, 0, 0, 0, 0, 0,01,40,41,42,01, 0,01, 0, 0, 0,01,
01,14,19,20,65,36,37,38, 0,01, 0, 0,53,54,01, 0, 0, 0, 0, 0,01,43,44,45,65, 0,01,01,01, 0,01,
01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,01, 0, 0, 0, 0, 0,01, 0,01, 0,01,
01,01,65, 0,01,01,01,01,65,01,01,01,01,01, 0,01,01,65,01,01,01, 0, 0,01, 0, 0,01, 0,01, 0,01,
01,01, 0, 0, 0,01,01,01,40,41,42,01, 0, 0, 0,01,01,22,23,01,01, 0, 0,01, 0,01, 0, 0, 0, 0,01,
01, 0,01,01, 0, 0,01,01,43,44,45,01, 0, 0, 0,01,25,26,27,28,01,01, 0, 0, 0, 0, 0, 0, 0,01,01,
01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,01,01, 0, 0, 6, 7, 8, 9, 0, 0,01,
01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01, 0,10,11,12,13,65, 0,01,
01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01, 0, 0, 0, 0, 0, 0, 0,01};
int GraphicData[][20]={
//Blank
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,

//Tree
0x0000,0x0000,0xF81F,0xFC1E,0x5475,0xBFBA,0x55D5,0xEFEE,0x55D5,0xAB6A,0x5555,0xEF6E,0x5675,0xBA1A,0xD61F,0xFC01,0xE001,0xA001,0xA001,0xE001,

//Brick
0xBB3B,0x1F1F,0x0E0E,0x1C1C,0x3838,0x7070,0xE0E0,0xF1F1,0xBBBB,0x1F1F,0x0E0E,0x1C1C,0x3838,0x7070,0xE0E0,0xF1F1,0xBBBB,0x1F1F,0x0E0E,0x1C1C,

//Gray
0x8888,0x4444,0x2222,0x1111,0x8888,0x4444,0x2222,0x1111,0x8888,0x4444,0x2222,0x1111,0x8888,0x4444,0x2222,0x1111,0x8888,0x4444,0x2222,0x1111,
0xFC3F,0xFE7F,0xFEFF,0xFF7F,0xB669,0x05A0,0x0660,0x0420,0x8819,0x3004,0xCC3B,0x0A50,0x0A50,0x0A50,0xFA6F,0xF61F,0x7038,0x7038,0x701C,0x783C
};
void DrawGraphic(int x,int y,int iObjectID)
{
   WriteBlock(x*16,y*20,16,20,1,iObjectID*40+GraphicData);
}

void DrawMap()
{
   int x,y;

   for (y=0;y<6;y++) {
     for (x=0;x<10;x++) {
      DrawGraphic(x,y,map[map_y+y][map_x+x]);
  }
   }
}

int IsWalkable()
{
   char ch;
  
   ch=map[map_y+man_y][map_x+man_x];

   if (ch<100) {
     return 1;
   }
    return 0;
}
void main(){
   char ch;
   man_x=1;
   man_y=1;
   map_x=0;
   map_y=0;
   DrawMap();
   DrawGraphic(man_x,man_y,4);
   Refresh();
  
for (;;) {
     ch=getchar();
  if (ch==LEFT_ARROW) {
     if (man_x>LCD_WIDTH_START) {
       man_x--;
    if (IsWalkable()) {
       if (man_x==LCD_WIDTH_START) {
         if (map_x>0) {
            map_x--;
         man_x++;
         }
       }
    } else {
       man_x++;
    }
     }
  } else if (ch==RIGHT_ARROW) {
     if (man_x<LCD_WIDTH_END) {
         man_x++;
    if (IsWalkable()) {
       if (man_x==LCD_WIDTH_END) {
         if (map_x<MAP_MAX_WIDTH_OBJ-LCD_MAX_WIDTH_OBJ) {
            map_x++;
         man_x--;
         }
        }
    } else {
       man_x--;
    }
     }
  } else if (ch==UP_ARROW) {
     if (man_y>LCD_HEIGHT_START) {
       man_y--;
    if (IsWalkable()) {
            if (man_y==LCD_HEIGHT_START) {
             if (map_y>0) {
            map_y--;
               man_y++;
           }
          }
    } else {
       man_y++;
    }
     }
  } else if (ch==DOWN_ARROW) {
     if (man_y<LCD_HEIGHT_END) {
       man_y++;
    if (IsWalkable()) {
          if (man_y==LCD_HEIGHT_END) {
         if (map_y<MAP_MAX_HEIGHT_OBJ-LCD_MAX_HEIGHT_OBJ) {
            map_y++;
         man_y--;
         }
       }
       } else {
       man_y--;
    }
     }
}  DrawMap();
   DrawGraphic(man_x,man_y,4);
   Refresh();
   }
   }


 楼主| 发表于 2006-7-7 11:46:00 | 显示全部楼层
人可以正常显示,但背景在文曲星上不能显示


 楼主| 发表于 2006-7-5 00:30:24 | 显示全部楼层 |阅读模式
为什么在模拟器上运行正常的程序,下到文曲星上后,地图不显示?(数据在主程序内)无论在电脑上编译还是在文曲星上编译
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-8-24 04:09 , Processed in 0.009688 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表