• 【SHELL】贪吃蛇


    1. declare -i snake_length #-i将变量声明为整型
    2. snake_x=(10 11 12)
    3. snake_y=(5 5 5)
    4. snake_length=3
    5. move_direction="right"
    6. food=(7 14) #y, x
    7. MapHeight=16
    8. MapWidth=19
    9. Map=(1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9
    10. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9
    11. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9
    12. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9
    13. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9
    14. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9
    15. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9
    16. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9
    17. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9
    18. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9
    19. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9
    20. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9
    21. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9
    22. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9
    23. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9
    24. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9
    25. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9)
    26. main()
    27. {
    28. while true
    29. do
    30. clear
    31. echo "== w:向上 s:向下 a:向左 d:向右 =="
    32. show
    33. move
    34. sleep 1
    35. done
    36. }
    37. show()
    38. {
    39. for data in "${Map[@]}"; #显示所有的元素
    40. do
    41. case $data in
    42. [0]) printf " ";; #空白
    43. [1]) printf "■";; #墙
    44. [9]) printf "\n";; #墙
    45. esac
    46. done
    47. for ((i=0;i<${snake_length};i++))
    48. do
    49. tput cup ${snake_y[i]} ${snake_x[i]}
    50. echo "☆"
    51. done
    52. tput cup ${food[0]} ${food[1]}
    53. echo "◎"
    54. tput cup 20 0 #y, x
    55. }
    56. function ArrayMove()
    57. {
    58. for i in $(seq 0 $((snake_length-2)))
    59. do
    60. echo "i: $i"
    61. snake_y[i]=${snake_y[i+1]}
    62. snake_x[i]=${snake_x[i+1]}
    63. done
    64. }
    65. function FoodGenerate()
    66. {
    67. echo "Food Generate!"
    68. food[1]=$((${RANDOM} % ${MapHeight}))
    69. food[0]=$((${RANDOM} % ${MapWidth}))
    70. }
    71. function move()
    72. {
    73. read -n 1 -t 0.5 input
    74. case $input in
    75. "w")
    76. move_direction="up" #echo "up"
    77. ;;
    78. "a")
    79. move_direction="left" #echo "left"
    80. ;;
    81. "d")
    82. move_direction="right" #echo "right"
    83. ;;
    84. "s")
    85. move_direction="down" #echo "down"
    86. ;;
    87. esac
    88. ArrayMove
    89. if [ "$move_direction" = "right" ]; then
    90. ((snake_x[$((snake_length-1))]=snake_x[$((snake_length-1))]+1))
    91. elif [ "$move_direction" = "down" ]; then
    92. ((snake_y[$((snake_length-1))]=snake_y[$((snake_length-1))]+1))
    93. elif [ "$move_direction" = "up" ]; then
    94. ((snake_y[$((snake_length-1))]=snake_y[$((snake_length-1))]-1))
    95. elif [ "$move_direction" = "left" ]; then
    96. ((snake_x[$((snake_length-1))]=snake_x[$((snake_length-1))]-1))
    97. fi
    98. if [ ${snake_y[$((snake_length-1))]} -eq ${food[0]} -a ${snake_x[$((snake_length-1))]} -eq ${food[1]} ]; then
    99. if [ "$move_direction" = "down" ]; then
    100. snake_x[${snake_length}]=${snake_x[$((snake_length-1))]}
    101. snake_y[${snake_length}]=${snake_y[$((snake_length-1))]}+1
    102. fi
    103. ((++snake_length))
    104. echo "food eated..snake_length: ${snake_length}"
    105. FoodGenerate
    106. fi
    107. echo "${snake_y[2]} : ${food[1]} : ${snake_x[2]} : ${food[0]}"
    108. }
    109. main

  • 相关阅读:
    学习c#的第二十天
    Kotlin 开发Android app(十五):使用Broadcast收发广播
    基于PyQt5GUI的人脸识别系统设计与实现
    Unity_热更方案
    binary_cross_entropy和binary_cross_entropy_with_logits的区别
    定制开发肯德基自动化网站下单软件
    采用sFlow工具实现流量监控--实验
    基于多种设计模式重构代码(工厂、模板、策略)
    隐私计算FATE-离线预测
    【爬虫+情感判定+Top10高频词+词云图】"王心凌"热门弹幕python舆情分析
  • 原文地址:https://blog.csdn.net/r77683962/article/details/134517390