设为首页 加入收藏

TOP

Shell脚本练习(九)
2023-07-23 13:39:42 】 浏览:149
Tags:Shell
t[$i + 1]})) echo -ne "\033[${y};${x}H[]" done echo -ne "\033[0m" } #显示新方块 CreateBox() { if (( ${#boxCur[@]} == 0 )); then #当前方块不存在 (( iBoxCurType = RANDOM % iSumType )) (( iBoxCurStyle = RANDOM % ${boxStyle[$iBoxCurType]} )) (( iBoxCurColor = RANDOM % $iSumColor + 1 )) else #当前方块已存在, 将下一个方块赋给当前方块 iBoxCurType=$iBoxNextType; iBoxCurStyle=$iBoxNextStyle; iBoxCurColor=$iBoxNextColor fi #当前方块数组 boxCur=( `eva l 'echo ${box'$iBoxCurType'_'$iBoxCurStyle'[@]}'` ) #初始化方块起始坐标 boxCurY=boxCur[8]; boxCurX=boxCur[9]; DrawCurBox 1 #绘制当前方块 if ! BoxMove $boxCurY $boxCurX then kill -$sigExit $PPID ShowExit fi PrepareNextBox } #绘制边框 DrawBorder() { clear local i y x1 x2 #显示边框 echo -ne "\033[1m\033[3${cBorder}m\033[4${cBorder}m" ((x1 = marginLeft + 1)) #左边框x坐标 ((x2 = x1 + 2 + mapWidth * 2)) #右边框x坐标 for ((i = 0; i < mapHeight; i++)) do ((y = i + marginTop + 2)) echo -ne "\033[${y};${x1}H||" #绘制左边框 echo -ne "\033[${y};${x2}H||" #绘制右边框 done ((x1 = marginTop + mapHeight + 2)) for ((i = 0; i < mapWidth + 2; i++)) do ((y = i * 2 + marginLeft + 1)) echo -ne "\033[${mapTop};${y}H==" #绘制上边框 echo -ne "\033[${x1};${y}H==" #绘制下边框 done echo -ne "\033[0m" #显示"Score"和"Level"字样 echo -ne "\033[1m" ((y = marginLeft + mapWidth * 2 + 7)) ((x1 = marginTop + 10)) echo -ne "\033[3${cScore}m\033[${x1};${y}HScore" ((x1 = marginTop + 11)) echo -ne "\033[3${cScoreva lue}m\033[${x1};${y}H${iScore}" ((x1 = marginTop + 13)) echo -ne "\033[3${cScore}m\033[${x1};${y}HLevel" ((x1 = marginTop + 14)) echo -ne "\033[3${cScoreva lue}m\033[${x1};${y}H${iLevel}" echo -ne "\033[0m" } InitDraw() { clear #清屏 DrawBorder #绘制边框 CreateBox #创建方块 } #退出时显示GameOVer! ShowExit() { local y ((y = mapHeight + mapTop + 3)) echo -e "\033[${y};1HGameOver!\033[0m" exit } #游戏主程序在这儿开始. if [[ "$1" == "--version" ]]; then echo "$APP_NAME $APP_VERSION" elif [[ "$1" == "--show" ]]; then #当发现具有参数--show时,运行显示函数 RunAsDisplayer else bash $0 --show& #以参数--show将本程序再运行一遍 RunAsKeyReceiver $! #以上一行产生的进程的进程号作为参数 fi keytest.sh #!/bin/bash GetKey() { aKey=(0 0 0) #定义一个数组来保存3个按键 cESC=`echo -ne "\033"` cSpace=`echo -ne "\040"` while : do read -s -n 1 key #读取一个字符,将读取到的字符保存在key中 #echo $key #echo XXX aKey[0]=${aKey[1]} #第一个按键 aKey[1]=${aKey[2]} #第二个按键 aKey[2]=$key #第三个按键 if [[ $key == $cESC && ${aKey[1]} == $cESC ]] then MyExit elif [[ ${aKey[0]} == $cESC && ${aKey[1]} == "[" ]] then if [[ $key == "A" ]]; then echo KEYUP elif [[ $key == "B" ]]; then echo KEYDOWN elif [[ $key == "D" ]]; then echo KEYLEFT elif [[ $key == "C" ]]; then echo KEYRIGHT fi fi done } GetKey draw.sh #!/bin/bash #位置与大小 marginLeft=8 #边框左边距 marginTop=6 #边框上边距 ((mapLeft=marginLeft+2)) #棋盘左边距 ((mapTop=$marginTop+1)) #棋盘上边距 mapWidth=10 #棋盘宽度 mapHeight=15 #棋盘高度 #方块定义,7大类19种样式 #前8位为方块坐标,后2位为方块刚出现的时候的位置 box0_0=(0 0 0 1 1 0 1 1 0 4) box1_0=(0 1 1 1 2 1 3 1 0 3) box1_1=(1 0 1 1 1 2 1 3 -1 3) box2_0=(0 0 1 0 1 1 2 1 0 4) box2_1=(0 1 0 2 1 0 1 1 0 3) box3_0=(0 1 1 0 1 1 2 0 0 4) box3_1=(0 0 0 1 1 1 1 2 0 4) box4_0=(0 2 1 0 1 1 1 2 0 3) box4_1=(0 1 1 1 2 1 2 2 0 3) box4_2
首页 上一页 6 7 8 9 下一页 尾页 9/9/9
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MIT 6.828 Homework: Xv6 System .. 下一篇用bpftrace窃取Mysql账号密码

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目