我开始学习vim并开始使用类似于1978年经典的Space Invaders的bash游戏进行shell脚本编写.我对ASCII艺术比较陌生,我想知道以编程方式定义太空飞船等内容或从文件中读取字符内容是否更好?如果是这样,你会推荐什么,你将如何以编程方式解决它?

#!/bin/bash

function getShip() {

declare -r FILENAME=/Users/demetriusford/space_ship

for index in $FILENAME; do

cat $index

done

}

文件内部:

* /\ *

!__/()\__!

/==: :==\

(/\/\)

解决方法:

尽管有可能你会赢得2013年“编程语言和程序之间最糟糕的不匹配”奖,但是会遇到像x86编写的会计软件包,或者基于COBOL的操作系统,或任何用Pascal编写的任何竞争对手:-) ,您可能会发现直接在bash脚本中编码该形状更容易.

似乎没有迫切需要将形状与代码本身分开.

对于启动器,这是一个使用tput(curses和terminfo数据库)在窗口底部为您的船设置动画的小脚本.

这不完全是魔兽世界,但它应该是一个很好的起点.首先,我们将设置永不改变的东西,发货和子弹字符串,以及各种屏幕坐标:

#!/bin/bash

bull1=' * * '

bull2=' '

ship1=' ^ /\ ^ '

ship2=' !__/()\__! '

ship3=' /==: :==\ '

ship4=' (/\/\) '

tput clear

((line1 = $(tput lines) - 6))

((line2 = line1 + 1))

((line3 = line2 + 1))

((line4 = line3 + 1))

((maxcol = $(tput cols) - 15))

然后我们将初始化相关变量并进入无限循环:

((bullline = 1))

((bullcol = 1))

((curcol = 1))

((coldir = 1))

while true ; do

在循环内部,我们只需通过消隐先前的值并编写新值来移动精灵.子弹位置也在本节中更新.请注意,我们不需要明确地将船空白,因为它被空格包围,无论如何都会使边缘字符空白:

tput cup $bullline $bullcol ; echo "$bull2"

if [[ $bullline -le 2 ]] ; then

((bullline = line1 - 1))

((bullcol = curcol))

else

((bullline = bullline - 2))

fi

tput cup $bullline $bullcol ; echo "$bull1"

tput cup $line1 $curcol ; echo "$ship1"

tput cup $line2 $curcol ; echo "$ship2"

tput cup $line3 $curcol ; echo "$ship3"

tput cup $line4 $curcol ; echo "$ship4"

然后我们只需更新船的变量,让它左右移动,最后延迟一点,以便动画顺畅:

((curcol = curcol + coldir))

if [[ $curcol -eq $maxcol ]] ; then

((coldir = -coldir))

else

if [[ $curcol -eq 1 ]] ; then

((coldir = -coldir))

fi

fi

sleep 0.1

done

鉴于平台的局限性,你最终得到的是一个看起来可以忍受的动画:

* *

^ /\ ^

!__/()\__!

/==: :==\

(/\/\)

标签:bash,shell,unix,linux

来源: https://codeday.me/bug/20190704/1372685.html

linux ascii游戏,linux – Bash ASCII实现相关推荐

  1. 熟悉linux指令游戏,Linux指令初探之闯关游戏Bandit(上)

    开学季,Evan会带领小萌新们一点点接触安全领域,今天要给大家讲的是和Linux有关的一款游戏Bandit,通过Bandit你会学到Linux的一些基础指令,这对今后的学习有很大的帮助,准备好了吗让我 ...

  2. linux+tux游戏,Linux吉祥物游戏SuperTux 0.5.0版发布 类《超级马里奥兄弟》

    Supertux是一款跨平台的类似Super Mario Bros(超级马里奥兄弟)的游戏,其比较大的特点是使用了Tux(即Linux系统的的吉祥物)替代马里奥做主角,控制方式非常类似超级马里奥,不过 ...

  3. Linux学习笔记8——bash基本概念

    一个操作系统的组成中,shell是与用户最接近的部分 shell:外壳,也是一种程序 GUI:Gnome,KDE,Xface CLI:sh,csh,ksh,bash,tcsh,zsh Linux中大多 ...

  4. linux中bash的功能主要有,Linux系统中的Bash功能的介绍

    今天小编要跟大家分享的文章是关于Linux系统中的Bash功能的介绍.一个完整计算机的体系结构包括:硬件与软件,而软件又分为系统软件与应用软件,负责对硬件仅需管理与操作的是系统软件的内核部分,用户是无 ...

  5. linux命令行使用for循环,小弟我使用过的Linux命令之for - Bash中的For循环

    我使用过的Linux命令之for - Bash中的For循环 我使用过的Linux命令之for - Bash中的For循环 本文链接:http://codingstandards.iteye.com/ ...

  6. Linux编程 3 (初识bash shell与man查看手册)

    一.初识bash shell 1.1 启动 shell   GNU bash shell 能提供对Linux系统的交互式访问.通常是在用户登录终端时启动,登录时系统启动shell依赖于用户账户的配置. ...

  7. linux 变量的继承,solaris移植到linux的大坑:bash和sh中环境变量继承的差异

    问题的引出 项目中脚本A .B,A调用B, 其中A中所有命令均使用绝对路径,B中直接使用 在solaris上工作正常,移植到linux中报错: /syscom/lm/linux//backupgen: ...

  8. linux开源游戏_2014年杰出的开源和Linux游戏

    linux开源游戏 您好,开放游戏迷! 在本周的版本中,我们回顾了2014年涵盖开源和Linux游戏的所有新闻和故事! 游戏硬件 2014年,我们在这个主题上进行了相当多的报道.我们从OpenPand ...

  9. Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别

    Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别 一.意思 #!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的she ...

  10. 街机游戏linux模拟器_适用于Linux的5种街机风格游戏

    街机游戏linux模拟器 传统上,游戏是Linux的弱点之一. 近年来,由于Steam,GOG和其他将商业游戏引入多个操作系统的努力,这种情况有所改变,但是这些游戏通常不是开源的. 当然,可以在开源操 ...

最新文章

  1. 教程 | 用AI生成猫的图片,撸猫人士必备
  2. html获取鼠标按键数,鼠标在IE、Firefox和Opera点击键所对应的数字代码
  3. oracle 创建一揽子协议,Oracle PO - 模块一揽子采购协议小结
  4. 在vscode中怎样debug调试go程序
  5. java如何将表添加到文本区_java – 在itext中向表中的单元格添加更多文本
  6. annotation:@Override出现The method of type must override asuperclass解决方案
  7. 数据结构和算法——八种常用的排序算法------基数排序
  8. VOIP Codec 三剑客之 ISAC/ILBC -- ISAC (2) Low Band Encode 模块
  9. 信号失真度测量装置(A 题)--2021 年全国大学生电子设计竞赛试题
  10. handbrake中文版下载 | HandBrake(大菠萝视频格式转换器)官方中文版V1.3.3视频格式转换器哪个最好用
  11. ios持续化集成-fastlane+jenkins+蒲公英+alfred+Webhook通知企业微信
  12. 分享113个HTML艺术时尚模板,总有一款适合您
  13. 鲁大师电动车智能化测评报告第十七期:电动车产品的同质化困局
  14. linux下查看系统内存使用情况的几个命令
  15. confirm的意思中文翻译_confirm是什么意思_confirm怎么读_confirm翻译_用法_发音_词组_同反义词_[法]确认_批准-新东方在线英语词典...
  16. Not Shading
  17. 安卓街机模拟器 MAME4droid 源码,只需要自己加入rom 可以发布到安卓市场了。
  18. 下列HTML标签是段落标签的是,HTML段落标签
  19. C4D室内模型导入Unity3d灯光快速烘焙【2020】
  20. Windows下检测电脑配置以及主板显卡接口的方法(比如是否是PCI-E接口及型号)

热门文章

  1. 【STC15】通过PWM波实现呼吸灯效果
  2. 哈夫曼编码c语言例题,关于哈夫曼编码试题的计算
  3. dbv mysql_mysql数据库版本控制dbv使用
  4. OracleDBV工具说明
  5. swfobject介绍
  6. 华硕aura完全卸载_更快,更信仰,华硕RTX 2070电竞显卡
  7. 【面试题】Java三大特性封装继承多态总结
  8. rabbitmq消息队列原理
  9. DNS 服务器配置02
  10. 并查集(UnionFind)算法