易码技术论坛

 找回密码
 加入易码
搜索
12
返回列表 发新帖
楼主: wanglejia

800的LAVA有BUG??

[复制链接]
发表于 2006-7-12 18:35:00 | 显示全部楼层
lee连tc800都没有一台....

光这一点就要BS*100倍 GGV....
发表于 2006-7-12 19:30:00 | 显示全部楼层
怎么变热贴了,我 晕
 楼主| 发表于 2006-7-12 19:36:00 | 显示全部楼层
汗~~我家一把柴~~~

连LEE都解决不了,看样子TC800是没办法用石英钟的了
发表于 2006-7-13 09:33:00 | 显示全部楼层
玩水管马力貌似和神州的七诀剑气(好象)在800上都有BUG,一道道斜杠
 楼主| 发表于 2006-7-13 10:57:00 | 显示全部楼层
是啊,已经确认,800的三角函数有问题~~~

等待LEE解决
发表于 2006-7-13 10:59:00 | 显示全部楼层
你用浮点函数试试呀!
 楼主| 发表于 2006-7-13 11:10:00 | 显示全部楼层
怎么把float转换成int???
发表于 2006-7-13 12:01:00 | 显示全部楼层
float x;

int y;

x =12.345;

y =(int)x;
发表于 2006-7-13 12:08:00 | 显示全部楼层
以下是引用wanglejia在2006-7-13 10:57:00的发言:[BR]是啊,已经确认,800的三角函数有问题~~~

等待LEE解决


不如自己想个办法

用列表法吧,先把指针位置算好,和对应的时间对应起来列成一个数组,显示的时候查找数组就可以了,这样就避免了使用三角函数。

不过列个表挺累的,HOHO~~~
[em07][em07][em07]
 楼主| 发表于 2006-7-13 14:07:00 | 显示全部楼层
汗~~~30楼的果然强,这种方法都能想到,不过,如果用图片不是更好,每一秒都对应一张图........汗~~~~巨型程序
发表于 2006-7-13 14:14:00 | 显示全部楼层
保存指针的坐标就OK了,三个60*2的char数组而已~

其实还是以用原来的代码的,那个sin与cos只是为负数时有bug,做一个简单的角度变换把所有的角度都变成锐角就OK了.
发表于 2006-7-13 14:25:00 | 显示全部楼层
一天86400秒啊。就算12小时也43200秒啊。

应该存60个时针图,60个分针图,60个秒针图,然后叠加
发表于 2006-7-13 16:09:00 | 显示全部楼层
恩,以前想过这个问题

还是用图片做吧
 楼主| 发表于 2006-7-11 14:32:15 | 显示全部楼层 |阅读模式
以下内容为程序代码:
struct TIME
{
    int year;
    char month;
    char day;
    char hour;
    char minute;
    char second;
    char week;
};

int size = 30;
struct TIME theTime;
char dateBuf[20];
char week[][3]={"日","一","二","三","四","五","六"};

// 画表盘
void DrawFace(int x, int y)
{
    int i;
    Circle(x, y, size, 0, 0x41);
    for(i=0; i<12; i++)
    {
        Line(x+Cos(30*i)*(size*7/8)/1024,
             y+Sin(30*i)*(size*7/8)/1024,
             x+Cos(30*i)*(size)/1024,
             y+Sin(30*i)*(size)/1024,
             0x41);
    }
    Refresh();
}

// 画指针
void DrawFinger(int x, int y)
{
    GetTime(theTime);
    Circle(x, y, size*3/4, 1, 0x40);
    // 秒针
    Line(x,
         y,
         x+Sin(6*theTime.second)*(size*3/4)/1024,
         y-Cos(6*theTime.second)*(size*3/4)/1024,
         0x41);
    // 分针
    Line(x,
         y,
         x+Sin(6*theTime.minute)*(size*2/3)/1024,  
         y-Cos(6*theTime.minute)*(size*2/3)/1024,
         0x41);
    // 时针
    Line(x,
         y,
         x+Sin(30*theTime.hour+theTime.minute/2)*(size*2/5)/1024,  
         y-Cos(30*theTime.hour+theTime.minute/2)*(size*2/5)/1024,
         0x41);
    Refresh();
}

// 显示日期
void DrawDate(int x, int y)
{
    Block(x, y, x+strlen(dateBuf)*6, y+12, 0);
    sprintf(dateBuf, "%d年%d月%d日 星期%s",
            theTime.year,
            theTime.month,
            theTime.day,
            week[theTime.week]);
    TextOut(x, y, dateBuf, 1);
    Refresh();
}

void main()
{
    do{
        DrawFace(80, 32);
        DrawFinger(80, 32);
        DrawDate(30, 66);
    }while(!CheckKey(27));
},就是这段代码,模拟器上运行正常,而在800上则不正常,什么原因,高手可否回答一下???
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

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

GMT+8, 2025-5-2 06:17 , Processed in 0.012626 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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