欢迎来到天天文库
浏览记录
ID:39890471
大小:56.00 KB
页数:14页
时间:2019-07-14
《用Shell编写的俄罗斯方块小游戏_Linux》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、#!/bin/bash#颜色定义cRed=1cGreen=2cYellow=3cBlue=4cFuchsia=5cCyan=6cWhite=7colorTable=($cRed$cGreen$cYellow$cBlue$cFuchsia$cCyan$cWhite)#位置和大小iLeft=3iTop=2((iTrayLeft=iLeft+2))((iTrayTop=iTop+1))((iTrayWidth=10))((iTrayHeight=15))#颜色设置cBorder=$cGreencScore=$cFuchsiacS
2、coreValue=$cCyan#控制信号#改游戏使用两个进程,一个用于接收输入,一个用于游戏流程和显示界面;#当前者接收到上下左右等按键时,通过向后者发送signal的方式通知后者。sigRotate=25sigLeft=26sigRight=27sigDown=28sigAllDown=29sigExit=30#七种不同的方块的定义#通过旋转,每种方块的显示的样式可能有几种box0=(00011011)box1=(0212223210111213)box2=(0001111201101120)box3=(0102101
3、100101121)box4=(01021121101112220111202100101112)box5=(01112122101112200001112102101112)box6=(01111221101112210110112101101112)#所有其中方块的定义都放到box变量中box=(${box0[@]}${box1[@]}${box2[@]}${box3[@]}${box4[@]}${box5[@]}${box6[@]})#各种方块旋转后可能的样式数目countBox=(1222444)#各种方块再box
4、数组中的偏移offsetBox=(013571115)#每提高一个速度级需要积累的分数iScoreEachLevel=50#begreaterthan7#运行时数据sig=0#接收到的signaliScore=0#总分iLevel=0#速度级boxNew=()#新下落的方块的位置定义cBoxNew=0#新下落的方块的颜色iBoxNewType=0#新下落的方块的种类iBoxNewRotate=0#新下落的方块的旋转角度boxCur=()#当前方块的位置定义cBoxCur=0#当前方块的颜色iBoxCurType=0#当前方
5、块的种类iBoxCurRotate=0#当前方块的旋转角度boxCurX=-1#当前方块的x坐标位置boxCurY=-1#当前方块的y坐标位置iMap=()#背景方块图表#初始化所有背景方块为-1,表示没有方块for((i=0;i6、SC=`echo-ne"33"`cSpace=`echo-ne"40"`#保存终端属性。在read-s读取终端键时,终端的属性会被暂时改变。#如果在read-s时程序被不幸杀掉,可能会导致终端混乱,#需要在程序退出时恢复终端属性。sTTY=`stty-g`#捕捉退出信号trap"MyExit;"INTTERMtrap"MyExitNoSub;"$sigExit#隐藏光标echo-ne"33[?25l"while[[1]]do#读取输入。注-s不回显,-n读到一个字符立即返回read-s-n1keyaKey[0]=${7、aKey[1]}aKey[1]=${aKey[2]}aKey[2]=$keysig=0#判断输入了何种键if[[$key==$cESC&&${aKey[1]}==$cESC]]then#ESC键MyExitelif[[${aKey[0]}==$cESC&&${aKey[1]}=="["]]thenif[[$key=="A"]];thensig=$sigRotate#<向上键>elif[[$key=="B"]];thensig=$sigDown#<向下键>elif[[$key=="D"]];thensig=$sigLeft#8、<向左键>elif[[$key=="C"]];thensig=$sigRight#<向右键>fielif[[$key=="W"9、10、$key=="w"]];thensig=$sigRotate#W,welif[[$key=="S"11、12、$key=="s"]];thensig=$sigDown#S,selif
6、SC=`echo-ne"33"`cSpace=`echo-ne"40"`#保存终端属性。在read-s读取终端键时,终端的属性会被暂时改变。#如果在read-s时程序被不幸杀掉,可能会导致终端混乱,#需要在程序退出时恢复终端属性。sTTY=`stty-g`#捕捉退出信号trap"MyExit;"INTTERMtrap"MyExitNoSub;"$sigExit#隐藏光标echo-ne"33[?25l"while[[1]]do#读取输入。注-s不回显,-n读到一个字符立即返回read-s-n1keyaKey[0]=${
7、aKey[1]}aKey[1]=${aKey[2]}aKey[2]=$keysig=0#判断输入了何种键if[[$key==$cESC&&${aKey[1]}==$cESC]]then#ESC键MyExitelif[[${aKey[0]}==$cESC&&${aKey[1]}=="["]]thenif[[$key=="A"]];thensig=$sigRotate#<向上键>elif[[$key=="B"]];thensig=$sigDown#<向下键>elif[[$key=="D"]];thensig=$sigLeft#
8、<向左键>elif[[$key=="C"]];thensig=$sigRight#<向右键>fielif[[$key=="W"
9、
10、$key=="w"]];thensig=$sigRotate#W,welif[[$key=="S"
11、
12、$key=="s"]];thensig=$sigDown#S,selif
此文档下载收益归作者所有