14短学期实验报告
2014短学期实验报告
专业软件工程(中外合作)
姓名吴逸川
学号 ********
班级 131
教师吕振洪
实训一光标漫游
1.问题
在25行80列的显示屏内,通过按键“→、←、↑、↓”来改变光标的位置,如按“→”键则光标往右侧走一列,按“↑”键则光标往上走一行的位置,最终通过“Esc”结束程序。
2.设计要点及算法
采用折返的方式:①光标在第1行,再按“↑”键时进到第25行;②光标在第1列,再按“←”键时
进到第80行;③光标在第25行,再按“↓”键时进到第1行;④光标在第80列,再按“→”键时时进到第1列。
3.源程序
#include
#include
const int CONSOLE_WIDTH = 80;
const int CONSOLE_HEIGHT = 25;
enum KEY {
ENTER = 13,
ESC = 27,
LEFT = 37,
UP = 38 ,
RIGHT = 39,
DOWN = 40
} ;
int main(void)
{
KeyValueStru key;
int posx = 1, posy = 1;
clrscr();
gotoxy( posx, posy );
do
{
key = kbhit();
switch ( key.VKey )
{
case LEFT:
{
posx == 1 ? posx = CONSOLE_WIDTH : posx = (posx - 1) % CONSOLE_WIDTH;
posy = posy % CONSOLE_HEIGHT;
break;
}
case UP:
{
posx = posx % CONSOLE_WIDTH;
posy == 1 ? posy = CONSOLE_HEIGHT : posy = (posy - 1) % CONSOLE_HEIGHT;
break;
}
case RIGHT:
{
posx = (posx + 1) % CONSOLE_WIDTH;
posy = posy % CONSOLE_HEIGHT;
break;
}
case DOWN:
{
posx = posx % CONSOLE_WIDTH;
posy = (posy + 1) % CONSOLE_HEIGHT;
break;
}
}
gotoxy( posx, posy );
} while ( key.VKey != ESC );
return 0;
}
4.改进的程序
程序粗框架
定义键常量;
定义键表(数组):menuKey[]={ESC,ENTER,LEFTCURSOR,…}
定义函数指针数组:void (*menufun[])()={EscKey,EnterKey,leftCursor,…} int main()
{;函数声明
;循环
;读键
;根据虚键值扫描数组menuKey,如存在,则执行menufun中的相应函数
}
void EscKey()
{
}
Void EnterKey()
{
}
#include
#include
const int CONSOLE_WIDTH = 80;
const int CONSOLE_HEIGHT = 25;
enum KEY {
ENTER = 13,
ALT = 18,
ESC = 27,
LEFT = 37,
UP = 38 ,
RIGHT = 39,
DOWN = 40
} ;
KeyValueStru key;
int posx = 1, posy = 1;
字符串常量1234的长度是多少int menuKey[] = {
ENTER, ESC, LEFT, UP, RIGHT, DOWN
} ;
void EnterKey ();
void EscKey ();
void LeftCursor ();
void UpCursor ();
void RightCursor ();
void DownCursor ();
void ( *menufun[] ) ()= {
EnterKey, EscKey, LeftCursor, UpCursor, RightCursor, DownCursor };

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。