|

楼主 |
发表于 2007-11-29 20:29:56
|
显示全部楼层
我看的是bash
下面拷一部分代码如下:
function RandomBox()
{
local i j t
#更新当前移动的方块
iBoxCurType=$
iBoxCurRotate=$
cBoxCur=$
for ((j = 0; j < $; j++))
do
boxCur[$j]=$
done
#显示当前移动的方块
if (( $ == 8 ))
then
#计算当前方块该从顶端哪一行"冒"出来
for ((j = 0, t = 4; j < 8; j += 2))
do
if (($ < t)); then t=$; fi
done
((boxCurY = -t))
for ((j = 1, i = -4, t = 20; j < 8; j += 2))
do
if (($ > i)); then i=$; fi
if (($ < t)); then t=$; fi
done
((boxCurX = (iTrayWidth - 1 - i - t) / 2))
#显示当前移动的方块
echo -ne `DrawCurBox 1`
#如果方块一出来就没处放,Game over!
if ! BoxMove $boxCurY $boxCurX
then
kill -$sigExit $
ShowExit
fi
fi
#清除右边预显示的方块
for ((j = 0; j < 4; j++))
do
((i = iTop + 1 + j))
((t = iLeft + 2 * iTrayWidth + 7))
echo -ne "[$;$H "
done
#随机产生新的方块
((iBoxNewType = RANDOM % $))
((iBoxNewRotate = RANDOM % $))
for ((j = 0, i = ($ + $iBoxNewRotate) * 8; j < 8; j++, i++))
do
boxNew[$j]=$;
done
((cBoxNew = ${colorTable[RANDOM % $]}))
#显示右边预显示的方块
echo -ne "[1m[7m[3$m[4$m"
for ((j = 0; j < 8; j += 2))
do
((i = iTop + 1 + $))
((t = iLeft + 2 * iTrayWidth + 7 + 2 * ${boxNew[$j + 1]}))
echo -ne "[$;$H[]"
done
echo -ne "[0m"
} |
|