没有合适的资源?快使用搜索试试~ 我知道了~
嵌入式操作系统--魔幻盒子.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 86 浏览量
2023-01-18
23:29:52
上传
评论 1
收藏 124KB DOCX 举报
温馨提示
试读
17页
嵌入式操作系统--魔幻盒子.docx
资源推荐
资源详情
资源评论
实训题目:魔幻盒子
1 系统设计
1.1 设计要求
1.1.1 设计任务
以 VM ware 虚拟机软件和 Red hat 9.0 操作系统为平台,使用 shell 脚本编写程序,
用 ASCII 码字符设计一个长、宽可变的四边形。要求使用 linux shell 编写程序脚本(Bash
风格),并提供友好的的交互界面。
1.1.2 性能指标要求
1、 基本要求
a) 四边形的绘图(40 点*30 点)
b) 边的 ASCII 字符可以在按下某按键的情况下可以修改(如从“-”-> “*”)
c) 四边形的四个角要求用不同的 ASCII 字符
d) 四边形的大小可变
e) 四边形中间输出自己的姓名与学号
f) 在按下某按键的情况下四边形的颜色可变
2、发挥部分
在按下某按键实现四边形的立体化。
1.2 设计思路及设计框图
1.2.1 设计思路
一开始选这个题目时,可以说是完全不懂。但是,通过这学期所学的嵌入式 Ubuntu
应用编程实战这本书以及按照老师给的要求去查资料,开始慢慢的了解实训所需要做的
大概是怎么一回事,在 linux 系统中,利用画图函数 draw_char 控制 ASCII 码字符画出
一个长宽可变,边框符号可变,颜色可变和输出自己学号姓名的四边形,同时这个四边
形实现立体化。
在画图开始时,先把之前所画的四边形清除,所以必须先进行清屏。接着按照要求
要使所画的四边形的初始大小为 40 点*30 点,所以给四边形的长和宽定义俩个初始量,
分别为 40 和 30,并且四边形的大小可变,就需要给四边形的长和宽俩个变量赋值,每
画一个四边形就需要重新给长和宽赋值。然后改变四边形的边的 ASCII 字符,只需要
给四条边定义四个不同的变量。而改变四边形的颜色,只需要调用哪个颜色的函数,然
后通过输入选择数字来改变四边形的颜色。为控制不同的变化,则需要设定不同的 case
语句或 if 语句来进行相应的变化。要想实现四边形的立体化,需要在之前画好的四边
形的基础上在画三条斜线,一条横线和一条竖线共五条线来实现四边形的立体化。
同时设置变量来实现四边形立体化后改变大小。
1.2.2 总体设计框图
清屏
定义四边形的初始位置,初始长和宽,初始
颜色和边的 ASCII 字符
While 循环
画四边形
判断能否立体化
1.
四边形的
大小
2.
四边行的
ASCII 子
字符
3.
四边形的
颜色
d.
立体化
e.
退出程序
改变四边
形立体化
后的颜色
2 各个模块程序的设计
2.1 初始化定义
clear #清屏
R=5 #定义起始横坐标
C=10 #定义起始纵坐标
H=30 #定义初始四边形的宽
W=40 #定义初始四边形的长
col=0 #定义初始四边形的颜色
HORZ="-" #定义初始四边形边 ASCII 字符
VERT="|"
D=0
let W=$W+$W #四边形长宽比为 1:1.9
draw_box $R $C $H $W $col $HORZ $VERT
2.2draw_box 画图函数
draw_box(){
BOX_HEIGHT=`expr $3 - 1`
BOX_WIDTH=`expr $4 - 1`
T_ROWS=`tput lines` #获取终端的宽 行列宽长
T_COLS=`tput cols` #获取终端的长
plot_char(){
echo -e "\E[${1};${2}H"$3 #启用转义序列,将光标移动到$1 和
$2 所定位处,输出$3
} #设置颜色的格式: \e[背景色;前景色;高亮 m
echo -ne "\E[3${5}m" #盒子的颜色不换行输出可带参数-e 打开反斜
对相应变量重新赋值并画图
杠 ESC 转义-E 取消
反斜杠 ESC 转义
count=1 #画第一条竖线
for (( r=$1; count<=$BOX_HEIGHT; r++)); do
plot_char $r $2 $VERT
let count=count+1
done
count=1 #画第二条竖线
c=`expr $2 + $BOX_WIDTH`
for (( r=$1; count<=$BOX_HEIGHT; r++)); do
plot_char $r $c $VERT
let count=count+1
done
count=1 #画第一条横线
for (( c=$2; count<=$BOX_WIDTH; c++)); do
plot_char $1 $c $HORZ
let count=count+1
done
count=1 #画第二条横线
r=`expr $1 + $BOX_HEIGHT`
for (( c=$2; count<=$BOX_WIDTH; c++)); do
plot_char $r $c $HORZ
let count=count+1
Done
2.3 立体化程序
draw_box(){
BOX_HEIGHT=`expr $3 - 1`
剩余16页未读,继续阅读
资源评论
- c19717725622023-11-05总算找到了想要的资源,搞定遇到的大问题,赞赞赞!
- 2301_802680322023-10-25内容与描述一致,超赞的资源,值得借鉴的内容很多,支持!
白茶丫
- 粉丝: 4w+
- 资源: 1734
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功