linux经典shell五子棋小游戏
时间: 2023-08-05 08:38:32 浏览: 618
好的,这是一个经典的Shell小游戏,你可以在Linux终端中玩五子棋。你可以按照以下步骤来进行游戏:
1. 创建一个空文件,例如"gobang.sh"。
2. 将以下代码复制并粘贴到文件中:
```
#!/bin/bash
# 五子棋游戏
# 初始化棋盘
function init_board() {
for ((i=0;i<15;i++))
do
for ((j=0;j<15;j++))
do
board[$i,$j]=0
done
done
}
# 绘制棋盘
function draw_board() {
echo -e "\033[1;33m 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14\033[0m"
for ((i=0;i<15;i++))
do
echo -e "\033[1;33m$i\033[0m\c"
for ((j=0;j<15;j++))
do
if [ ${board[$i,$j]} -eq 0 ]; then
echo -e "\033[1;37m+\033[0m\c"
elif [ ${board[$i,$j]} -eq 1 ]; then
echo -e "\033[1;31m@\033[0m\c"
else
echo -e "\033[1;32m@\033[0m\c"
fi
if [ $j -eq 14 ]; then
echo ""
else
echo -e "\033[1;37m|\033[0m\c"
fi
done
done
}
# 判断是否胜利
function check_win() {
# 横向
for ((i=0;i<15;i++))
do
for ((j=0;j<11;j++))
do
if [ ${board[$i,$j]} -ne 0 -a ${board[$i,$j]} -eq ${board[$i,$j+1]} -a ${board[$i,$j+1]} -eq ${board[$i,$j+2]} -a ${board[$i,$j+2]} -eq ${board[$i,$j+3]} -a ${board[$i,$j+3]} -eq ${board[$i,$j+4]} ]; then
if [ ${board[$i,$j]} -eq 1 ]; then
echo "红方胜利!"
else
echo "绿方胜利!"
fi
exit 0
fi
done
done
# 纵向
for ((i=0;i<11;i++))
do
for ((j=0;j<15;j++))
do
if [ ${board[$i,$j]} -ne 0 -a ${board[$i,$j]} -eq ${board[$i+1,$j]} -a ${board[$i+1,$j]} -eq ${board[$i+2,$j]} -a ${board[$i+2,$j]} -eq ${board[$i+3,$j]} -a ${board[$i+3,$j]} -eq ${board[$i+4,$j]} ]; then
if [ ${board[$i,$j]} -eq 1 ]; then
echo "红方胜利!"
else
echo "绿方胜利!"
fi
exit 0
fi
done
done
# 斜向
for ((i=0;i<11;i++))
do
for ((j=0;j<11;j++))
do
if [ ${board[$i,$j]} -ne 0 -a ${board[$i,$j]} -eq ${board[$i+1,$j+1]} -a ${board[$i+1,$j+1]} -eq ${board[$i+2,$j+2]} -a ${board[$i+2,$j+2]} -eq ${board[$i+3,$j+3]} -a ${board[$i+3,$j+3]} -eq ${board[$i+4,$j+4]} ]; then
if [ ${board[$i,$j]} -eq 1 ]; then
echo "红方胜利!"
else
echo "绿方胜利!"
fi
exit 0
fi
done
done
for ((i=0;i<11;i++))
do
for ((j=14;j>=4;j--))
do
if [ ${board[$i,$j]} -ne 0 -a ${board[$i,$j]} -eq ${board[$i+1,$j-1]} -a ${board[$i+1,$j-1]} -eq ${board[$i+2,$j-2]} -a ${board[$i+2,$j-2]} -eq ${board[$i+3,$j-3]} -a ${board[$i+3,$j-3]} -eq ${board[$i+4,$j-4]} ]; then
if [ ${board[$i,$j]} -eq 1 ]; then
echo "红方胜利!"
else
echo "绿方胜利!"
fi
exit 0
fi
done
done
}
# 主函数
function main() {
init_board
draw_board
echo "游戏开始!"
echo "红方先手,绿方后手。"
turn=1
while true
do
if [ $turn -eq 1 ]; then
echo "红方下棋:"
else
echo "绿方下棋:"
fi
read -p "请输入棋子坐标(x,y):" x y
if [[ ! $x =~ ^[0-9]+$ ]] || [[ ! $y =~ ^[0-9]+$ ]]; then
echo "输入不合法!"
continue
fi
if [ $x -lt 0 -o $x -gt 14 -o $y -lt 0 -o $y -gt 14 ]; then
echo "坐标超出范围!"
continue
fi
if [ ${board[$x,$y]} -ne 0 ]; then
echo "该位置已经有棋子了!"
continue
fi
if [ $turn -eq 1 ]; then
board[$x,$y]=1
turn=2
else
board[$x,$y]=2
turn=1
fi
draw_board
check_win
done
}
main
```
3. 给文件添加执行权限:
```
chmod +x gobang.sh
```
4. 运行游戏:
```
./gobang.sh
```
5. 按照提示下棋即可。红方为"@ ",绿方为"@"。当有一方连成五子线时,游戏结束。
祝你玩得愉快!
阅读全文