📄 biorhythmcanvas.java
字号:
import java.util.Date;
import javax.microedition.lcdui.*;
class BiorhythmCanvas extends Canvas
{
Date today = new Date();
Date birthday = new Date( today.getTime() - 100 * msperday ); ;
Date leftday = new Date( today.getTime() - days/2 * msperday );
public static int days = 22;
public static long msperday = 24L*60*60*1000L;
public void setBirthday( Date birthday )
{
this.birthday = birthday;
if( birthday != null )
repaint();
}
public void paint(Graphics g)
{
if( birthday == null ) return;
int kx = getWidth() /days;
int h = getHeight() / 2;
g.setGrayScale(255);
g.fillRect(0, 0, getWidth(), getHeight());
g.setGrayScale(0);
g.drawLine(0, h, getWidth() , h);
int todayX = (int)((( today.getTime() - leftday.getTime() )/msperday) * kx);
g.drawLine(todayX, 0, todayX, h*2);
for( int i=0; i<=days; i++ )
{
g.drawLine( i*kx, h, i*kx, h+3 );
}
Font font = Font.getDefaultFont();
g.setColor( 0xFF0000 );
g.drawString("生理", todayX+3, 3,
Graphics.TOP|Graphics.LEFT);
drawCurve( phy, g );
g.setColor( 0x007700 );
g.drawString("情绪", todayX+3, 3+font.getHeight() ,
Graphics.TOP|Graphics.LEFT);
drawCurve( emt, g );
g.setColor( 0x0000FF );
g.drawString("智力", todayX+3, 3+2*font.getHeight() ,
Graphics.TOP|Graphics.LEFT);
drawCurve( intell, g );
}
public void keyPressed(int keyCode)
{
if( keyCode == KEY_NUM4 || getGameAction( keyCode ) == LEFT )
{
leftday = new Date( leftday.getTime() - msperday ) ;
repaint();
}
else if ( keyCode == KEY_NUM6 || getGameAction( keyCode ) == RIGHT )
{
leftday = new Date( leftday.getTime() + msperday ) ;
repaint();
}
}
private void drawCurve( short [] data, Graphics g )
{
int kx = getWidth() / days;
int h = getHeight() /2 ;
int diff = (int)((leftday.getTime() - birthday.getTime())/msperday);
for( int i=0; i<=days; i++ )
{
long val1 = data[ (diff+i) % data.length ];
long val2 = data[ (diff+i+1) % data.length ];
g.drawLine(
i * kx, (int)(h - val1 * h /1000 ),
(i+1)*kx, (int)(h - val2 * h/1000 )
);
}
}
private static final short phy[] = {
0, 270, 520, 731, 888, 979, 998, 942, 817, 631,
398, 136, -136, -398, -631, -817, -942, -998, -979, -888,
-731, -520, -270
};
private static final short emt[] = {
0, 223, 434, 623, 782, 901, 975, 1000, 975, 901,
782, 623, 434, 223, 0, -223, -434, -623, -782, -901,
-975, -1000, -975, -901, -782, -623, -434, -223
};
private static final short intell[] = {
0, 189, 372, 541, 690, 815, 910, 972, 999, 990,
945, 866, 756, 618, 458, 282, 95, -95, -282, -458,
-618, -756, -866, -945, -990, -999, -972, -910, -815, -690,
-541, -372, -189
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -