用shell写一段贪吃蛇游戏代码
时间: 2024-01-29 11:04:24 浏览: 77
这是一份用Bash编写的简单贪吃蛇游戏代码,需要在终端中运行:
```
#!/bin/bash
# 游戏区域大小
WIDTH=30
HEIGHT=20
# 初始化贪吃蛇位置
snake_x=$((WIDTH/2))
snake_y=$((HEIGHT/2))
# 初始化贪吃蛇方向(1:向右;2:向下;3:向左;4:向上)
direction=1
# 初始化食物位置
food_x=$((RANDOM%WIDTH))
food_y=$((RANDOM%HEIGHT))
# 初始化得分
score=0
# 游戏主循环
while true; do
# 绘制游戏区域
clear
echo "Score: $score"
for ((i=0; i<HEIGHT; i++)); do
for ((j=0; j<WIDTH; j++)); do
if [ $i -eq $snake_y ] && [ $j -eq $snake_x ]; then
echo -n "O"
elif [ $i -eq $food_y ] && [ $j -eq $food_x ]; then
echo -n "*"
elif [ $j -eq 0 ] || [ $j -eq $((WIDTH-1)) ] || [ $i -eq 0 ] || [ $i -eq $((HEIGHT-1)) ]; then
echo -n "#"
else
echo -n " "
fi
done
echo ""
done
# 检测键盘输入
read -n1 -t0.05 key
case $key in
w) direction=4;;
d) direction=1;;
s) direction=2;;
a) direction=3;;
esac
# 更新贪吃蛇位置
case $direction in
1) snake_x=$((snake_x+1));;
2) snake_y=$((snake_y+1));;
3) snake_x=$((snake_x-1));;
4) snake_y=$((snake_y-1));;
esac
# 检测是否吃到食物
if [ $snake_x -eq $food_x ] && [ $snake_y -eq $food_y ]; then
score=$((score+1))
food_x=$((RANDOM%WIDTH))
food_y=$((RANDOM%HEIGHT))
fi
# 检测游戏结束条件
if [ $snake_x -eq 0 ] || [ $snake_x -eq $((WIDTH-1)) ] || [ $snake_y -eq 0 ] || [ $snake_y -eq $((HEIGHT-1)) ]; then
break
fi
# 暂停一段时间
sleep 0.1
done
# 游戏结束
clear
echo "Game over! Your score is $score."
```
运行上述代码即可在终端中玩贪吃蛇游戏。
阅读全文