?? ball.c
字號:
/****************************************************************************************
* 文件名:BALL.C
* 功能:GUI測試及演示程序。
* 作者:黃紹斌
* 日期:2003.09.09
****************************************************************************************/
#include "config.h"
#define LCM_LEDCON 0x00400000
/****************************************************************************
* 名稱:DelayNS()
* 功能:長軟件延時
* 入口參數:dly 延時參數,值越大,延時越久
* 出口參數:無
****************************************************************************/
void DelayNS(uint32 dly)
{ uint32 i;
for(; dly>0; dly--)
for(i=0; i<5000; i++);
}
/***********************************************************************
* 名稱:MoveBall()
* 功能:將三個小球在屏幕上不斷的滾動,實現動畫操作。
* 入口參數:無
* 出口參數:無
***********************************************************************/
void MoveBall(void)
{ WINDOWS mywindows;
uint8 x0, y0;
uint8 x0_bak, y0_bak;
int8 x0_ver, y0_ver;
uint8 x1, y1;
uint8 x1_bak, y1_bak;
int8 x1_ver, y1_ver;
uint8 x2, y2;
uint8 x2_bak, y2_bak;
int8 x2_ver, y2_ver;
// 顯示窗口
mywindows.x = 0; // 窗口位置 x
mywindows.y = 0; // 窗口位置 y
mywindows.with = 240; // 窗口寬度
mywindows.hight = 128; // 窗口高度
mywindows.title = (uint8 *) "Hello World! -- HSB "; // 窗口標題
mywindows.state = (uint8 *) "Use the GUI for windows."; // 窗口狀態欄顯示字符
GUI_WindowsDraw(&mywindows); // 顯示窗口mywindows
// 初始化3個球的起始位置及運動方向
x0 = x0_bak= 125;
y0 = y0_bak = 45;
x0_ver = 1;
y0_ver = 1;
x1 = x1_bak = 35;
y1 = y1_bak = 60;
x1_ver = -1;
y1_ver = 1;
x2 = x2_bak = 200;
y2 = y2_bak = 80;
x2_ver = 1;
y2_ver = -1;
while(1)
{ GUI_Circle(x0, y0, 20, 1); // 繪畫新的圓
GUI_Circle(x0_bak, y0_bak, 20, 0); // 擦除原位置上的圓
x0_bak = x0; // 保存當前圓的圓心坐標,以便擦除
y0_bak = y0;
GUI_Circle(x1, y1, 20, 1); // 繪畫新的圓
GUI_Circle(x1_bak, y1_bak, 20, 0); // 擦除原位置上的圓
x1_bak = x1; // 保存當前圓的圓心坐標,以便擦除
y1_bak = y1;
GUI_Circle(x2, y2, 20, 1); // 繪畫新的圓
GUI_Circle(x2_bak, y2_bak, 20, 0); // 擦除原位置上的圓
x2_bak = x2; // 保存當前圓的圓心坐標,以便擦除
y2_bak = y2;
DelayNS(1); // 延時
x0 += x0_ver*2; // 圓運動計算
y0 += y0_ver*2;
if(x0<=22) // 移到了最左邊嗎?若是,則向右運動(x_ver=1)
{ x0_ver = 1;
}
if(x0>=217) // 移到了最右邊嗎?若是,則向左運動(x_ver=-1)
{ x0_ver = -1;
}
if(y0<=34) // 移到了最下邊嗎?若是,則向上運動(y_ver=1)
{ y0_ver = 1;
}
if(y0>=95) // 移到了最上邊嗎?若是,則向下動動(y_ver=-1)
{ y0_ver = -1;
}
x1 += x1_ver*2; // 圓運動計算
y1 += y1_ver*2;
if(x1<=22) // 移到了最左邊嗎?若是,則向右運動(x_ver=1)
{ x1_ver = 1;
}
if(x1>=217) // 移到了最右邊嗎?若是,則向左運動(x_ver=-1)
{ x1_ver = -1;
}
if(y1<=34) // 移到了最下邊嗎?若是,則向上運動(y_ver=1)
{ y1_ver = 1;
}
if(y1>=95) // 移到了最上邊嗎?若是,則向下動動(y_ver=-1)
{ y1_ver = -1;
}
x2 += x2_ver*2; // 圓運動計算
y2 += y2_ver*2;
if(x2<=22) // 移到了最左邊嗎?若是,則向右運動(x_ver=1)
{ x2_ver = 1;
}
if(x2>=217) // 移到了最右邊嗎?若是,則向左運動(x_ver=-1)
{ x2_ver = -1;
}
if(y2<=34) // 移到了最下邊嗎?若是,則向上運動(y_ver=1)
{ y2_ver = 1;
}
if(y2>=95) // 移到了最上邊嗎?若是,則向下動動(y_ver=-1)
{ y2_ver = -1;
}
}
}
/***********************************************************************
* 名稱:main()
* 功能:主程序,用于GUI測試及演示。
***********************************************************************/
int main(void)
{ PINSEL1 = 0x00000000;
IO1DIR = LCM_LEDCON;
IO1SET = LCM_LEDCON;
GUI_Initialize(); // 初始化LCM
GUI_SetColor(1, 0); // 設置前景色及背景色
MoveBall();
return(0);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -