zoukankan      html  css  js  c++  java
  • shell版俄罗斯方块二:界面绘制 分类: shell版俄罗斯方块 2015-07-27 09:14 116人阅读 评论(0) 收藏

    <span style="font-size:24px;">1、这里有一个很重要的命令:echo,用这个命令改变输出的颜色及光标的位置,具体可以参看我另一篇转载的博客
    2、定义方块的表达方式,所有方块都是由4个单位块组成,4个单位块的不同位置就组成了不同方块,且每一方块都有不同的形式。
       box数组,前8个是单位块的坐标,后两个是出现的第一个方块的位置。
    3、
    </span>
    #!/bin/bash
    
    #Program
    #	This program trys to draw border
    #History
    #   Walker first 2015-07-27
    
    marginLeft=4;
    marginTop=5;
    mapWidth=10;
    mapHeight=20;
    ((mapLeft=${marginLeft}+2))
    ((mapTop=${marginTop}+1))
    
    box0_0=(0 0 0 1 1 0 1 1 0 4) #方块数组
    
    box1_0=(0 1 1 1 2 1 3 1 0 3)
    box1_1=(1 0 1 1 1 2 1 3 -1 3)
    
    box2_0=(0 0 1 0 1 1 2 1 0 4)
    box2_1=(0 1 0 2 1 0 1 1 0 3)
    
    box3_0=(0 1 1 0 1 1 2 0 0 4)
    box3_1=(0 0 0 1 1 1 1 2 0 4)
    
    box4_0=(0 2 1 0 1 1 1 2 0 3)
    box4_1=(0 1 1 1 2 1 2 2 0 3)
    box4_2=(1 0 1 1 1 2 2 0 -1 3)
    box4_3=(0 0 0 1 1 1 2 1 0 4)
    
    box5_0=(0 0 1 0 1 1 1 2 0 3)
    box5_1=(0 1 0 2 1 1 2 1 0 3)
    box5_2=(1 0 1 1 1 2 2 2 -1 3)
    box5_3=(0 1 1 1 2 0 2 1 0 4)
    
    box6_0=(0 1 1 0 1 1 1 2 0 3)
    box6_1=(0 1 1 1 1 2 2 1 0 3)
    box6_2=(1 0 1 1 1 2 2 1 -1 3)
    box6_3=(0 1 1 0 1 1 2 1 0 4)
    
    
    DrawBorder()//绘制边框函数
    {
    	local i y x1 x2#局部变量的定义,local的使用
    	echo -ne "33[1m33[32m33[42m"#1m表示高亮表示,32表示前景色,42表示背景色,3开头的颜色是前景色,4开头的是背景色
    	((x1=marginLeft+1))
    	((x2=x1+2+mapWidth*2))
    #	echo $x1
    #	echo $x2
    	for((i=0;i<mapHeight;i++))
    	do
    		((y=i+marginTop+1))#绘制左右边框
    		echo -ne "33[${y};${x1}H||"
    		echo -ne "33[${y};${x2}H||"
    	done
    
    	((x1=marginTop+mapHeight+1))
    	for((i=0;i<mapWidth+2;i++))
    	do
    		((y=i*2+marginLeft+1))//#绘制上下边框
    		echo -ne "33[${marginTop};${y}H=="
    		echo -ne "33[${x1};${y}H=="
    	done
    	echo -ne "33[0m"//取消高这显示
    }
    
    DrawBox()#方块绘制函数
    {
    	local i x y xPos yPos
    	yPos=${box0_0[8]}#保存首次出现的位置
    	xPos=${box0_0[9]}
    	echo -ne "33[1m33[35m33[45m"
    	for((i=0;i<8;i+=2))#绘制方块,每次绘制一个单位块
    	do
    		(( y = ${mapTop} + ${box0_0[$i]} + ${yPos} ))
    		(( x = ${mapLeft} + 1 + 2*(${box0_0[$i+1]} + ${xPos})))
    		echo -ne "33[${y};${x}H[]"
    	done
    	echo -ne "33[0m"
    }
    
    clear#清屏
    DrawBorder
    DrawBox
    
    ((overPos=${marginTop}+${mapHeight}+4))
    echo -ne "33[${overPos};1H"#重定位光标位置



  • 相关阅读:
    Qt之QFileSystemWatcher
    office2007-安装程序找不到office.zh-cn*.文件
    Maven父子项目配置-多模块(multi-modules)结构
    Maven项目打包,Jar包不更新的问题
    开发Spring Shell应用程序
    Spring Shell参考文档
    Spring Shell介绍
    maven项目打包时生成dependency-reduced-pom.xml
    使用VBA批量转换Excel格式,由.xls转换成.xlsx
    修改MyEclipse取消默认工作空间
  • 原文地址:https://www.cnblogs.com/zclzqbx/p/4687037.html
Copyright © 2011-2022 走看看