介绍
使用shell脚本怎么编写俄罗斯方块?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
代码:
# !/bin/bash ,, #,Tetris Game #,10.21.2003 xhchen<(电子邮件)xhchen@winbond.com.tw[/电子邮件]祝辞, ,, # APP declaration APP_NAME=? {0 # # * [/\ \]}“, APP_VERSION=?.0“, ,, ,, #颜色定义, 信誉=1, cGreen=2, cYellow=3, cBlue=4, cFuchsia=5, cCyan=6, cWhite=7, colorTable=(cRed cGreen 美元;cYellow 美元;cBlue 美元;cFuchsia 美元;cCyan 美元;cWhite美元), ,, #位置和大小, iLeft=3, iTop=2, 时间=((iTrayLeft iLeft +, 2)), 时间=((iTrayTop iTop +, 1)), ((=iTrayWidth 10)), ((=iTrayHeight 15)), ,, #颜色设置, cBorder=$ cGreen cScore=$ cFuchsia cScoreValue=https://www.yisu.com/zixun/cCyan美元 #控制信号 #改游戏使用两个进程,一个用于接收输入,一个用于游戏流程和显示界面; #当前者接收到上下左右等按键时,通过向后者发送信号的方式通知后者。 sigRotate=25 sigLeft=26 sigRight=27 sigDown=28 sigAllDown=29 sigExit=30 #七中不同的方块的定义 #通过旋转,每种方块的显示的样式可能有几种 box0=0 0 0 1 1 0 1 (1) box1=(0 2 1 2 2 2 3 2 1 0 1 1 1 2 1 3) box2=(0 0 0 1 1 1 1 2 0 1 1 0 1 1 2 0) box3=(0 1 0 2 1 0 1 1 0 0 1 0 1 1 2 1) box4=(0 1 0 2 1 1 2 1 1 0 1 1 1 2 2 2 0 1 1 1 2 0 2 1 0 0 1 0 1 1 1 2) box5=(0 1 1 1 2 1 2 2 1 0 1 1 1 2 2 0 0 0 0 1 1 1 2 1 0 2 1 0 1 1 1 2) box6=(0 1 1 1 1 2 2 1 1 0 1 1 1 2 2 1 0 1 1 0 1 1 2 1 0 1 1 0 1 1 1 2) #所有其中方块的定义都放到箱变量中 盒=($ {box0 [@]} $ {box1 [@]} $ {box2 [@]} $ {box3 [@]} $ {box4 [@]} $ {box5 [@]} $ {box6 [@]}) #各种方块旋转后可能的样式数目 countBox=(1 2 2 2 4 4 4) #各种方块再箱数组中的偏移 offsetBox=(0 1 3 5 7 11 15) #每提高一个速度级需要积累的分数 iScoreEachLevel=50 #大于7 #运行时数据 sig=0 #接收到的信号 iScore=0 #总分 iLevel=0 #速度级 boxNew=() #新下落的方块的位置定义 cBoxNew=0 #新下落的方块的颜色 iBoxNewType=0 #新下落的方块的种类 iBoxNewRotate=0 #新下落的方块的旋转角度 boxCur=() #当前方块的位置定义 cBoxCur=0 #当前方块的颜色 iBoxCurType=0 #当前方块的种类 iBoxCurRotate=0 #当前方块的旋转角度 boxCurX=1 #当前方块的x坐标位置 boxCurY=1 #当前方块的y坐标位置 iMap=() #背景方块图表 #初始化所有背景方块为1,表示没有方块 ((我=0;我elif [[$ key==" B "]];然后团体=$ sigDown # <向下键> elif [[$ key==" D "]];然后团体=$ sigLeft # <向左键> elif [[$ key==" C "]];然后团体=$ sigRight # <向右键> fi elif [[$ key==癢”| | $ key==" W "]];然后团体=$ sigRotate # W W elif [[$ key==癝”| | $ key==" S "));然后团体=$ sigDown # S, S elif [[$ key==癆”| | $ key=="一个"]];然后团体=$ sigLeft #,一个 elif [[$ key==" D " | | $ key==" D "]];然后团体=$ sigRight # D, D elif [[[$ key]”==癧]”)];然后团体=$ sigAllDown #空格键 elif [[$ key==癚”| | $ key=="问"]]# Q Q 然后 MyExit fi 如果[[$团体!=0]] 然后 #向另一进程发送消息 杀- sig pidDisplayer美元 fi 完成 } #退出前的恢复 MyExitNoSub()函数 { 当地y #恢复终端属性 stty stty美元 ((y=iTop + iTrayHeight + 4)) #显示光标 回声033 - e " \ [? 25 033 h \ [$ {y}; 0 h” 退出 } MyExit()函数 { #通知显示进程需要退出 杀死——sigExit pidDisplayer美元 MyExitNoSub } #处理显示和游戏流程的主函数 RunAsDisplayer()函数 { 当地sigThis InitDraw #挂载各种信号的处理函数 陷阱”团体=$ sigRotate;“sigRotate美元 陷阱”团体=$ sigLeft;“sigLeft美元 陷阱”团体=$ sigRight;“sigRight美元 陷阱”团体=$ sigDown;“sigDown美元 陷阱”团体=$ sigAllDown;“sigAllDown美元 陷阱”ShowExit;“sigExit美元 而: 做 #根据当前的速度级iLevel不同,设定相应的循环的次数 ((我=0;我 使用shell脚本怎么编写俄罗斯方块