用二维数组绘图swift 2.0
2015-12-13 08:34
411 查看
练习:在控制台(或屏幕)输出如下格子图
0.1如果图案以后不需再去改变的话,直接输出就行了!但是情况往往不是这样的。
0.2考虑到将来会改变,我们可以更方便的适应不同的情况;
新建个名字为:array,类型为:Character (字符)的二维数组;
给二维数组赋值,0…12=13例,count:10=10行,repeatedValue:” “=赋相同的值;如如果在网页:http://swiftstub.com/试 要加#号 如:repeatedValue:”#”因为空格它不输出
测试一下这个二维数组:
OK 没问题!下面绘横线,i=0从0开始;i<10到9结束;array[0][i]=”+”,0:行数;
图案没问题;打包成方法(函数)叫henxian;
表示–》ks:开始;js:结束;djh:第几行
竖线改改参数就行了
至此已经基本完成!
//+优化++优化++优化++优化++优化++优化++优化++优化++优化++优化++优化
为了方便修改或调用打包成函数:bk ,
只要求输入:tn**图案,hs行数,hg行高,ls例数,lg例高** 即可
/* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + */
0.1如果图案以后不需再去改变的话,直接输出就行了!但是情况往往不是这样的。
print(+ + + + + + + + + +)//1行 print(+ + + +)//2行 print(+ + + +)//3行 print(+ + + + + + + + + +)//4行 print(+ + + +)//5行 print(+ + + +)//6行 print(+ + + + + + + + + +)//7行 print(+ + + +)//8行 print(+ + + +)//9行 print(+ + + + + + + + + +)//10行 print(+ + + +)//11行 print(+ + + +)//12行 print(+ + + + + + + + + +)//13行
0.2考虑到将来会改变,我们可以更方便的适应不同的情况;
思路一分析: 第1行与4、7、10、13行都是一个样式(A),剩下的行也是相同的另一个样式(B),可以把两个样式做成函数,循环输出,将来如果要改变直接在样式上和循环上面修改就行了。 思路二分析: 从宏观的角度观察,图案是由横线和竖线绘成的格子,可以把它分成横线和竖线来绘制,但是控制台(或屏幕)是一行一行输出的,在输出完成第二行之后是不能回去修第一行的,怎么办呢!……用一个二维数组缓冲,之后一次性输出这个二维数组! 思路三分析: 从微观的角度分析,大的图案是由一个一个小的图案组成的,把每一个小图案当成一个小对象,设计每一个对象,然后组合这此小对象,将来要修改时,修改这此小对象就行了! 循环输出 思路一 在之前的字母金字塔 有做过例子,这里就用第二种思路先绘一个看看先吧!
新建个名字为:array,类型为:Character (字符)的二维数组;
var array=Array<Array<Character>>()
给二维数组赋值,0…12=13例,count:10=10行,repeatedValue:” “=赋相同的值;如如果在网页:http://swiftstub.com/试 要加#号 如:repeatedValue:”#”因为空格它不输出
for _ in 0...12 { array.append(Array(count:10 ,repeatedValue:" ")) }
测试一下这个二维数组:
array[0][0]="1" array[0][9]="2" array[12][0]="3" array[12][9]="4" for var i=0; i<array.count; i++ { for var j=0; j<array[i].count; j++ { print(array[i][j],terminator:" ") } print("") } /* 1 # # # # # # # # 2 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 3 # # # # # # # # 4 */
OK 没问题!下面绘横线,i=0从0开始;i<10到9结束;array[0][i]=”+”,0:行数;
for var i=0;i<10;i++ { array[0][i]="+" } /* + + + + + + + + + + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 3 # # # # # # # # 4 */
图案没问题;打包成方法(函数)叫henxian;
表示–》ks:开始;js:结束;djh:第几行
func henxian(ks:Int,js:Int,djh:Int){ for var i=ks;i<js;i++ { array[djh][i]=tn } } //循环调用函数henxian输出5行,每行间有2个间隔所以:i*3 for var i=0;i<5;i++ { henxian(0,js:10,djh:i*3) } /* + + + + + + + + + + # # # # # # # # # # # # # # # # # # # # + + + + + + + + + + # # # # # # # # # # # # # # # # # # # # + + + + + + + + + + # # # # # # # # # # # # # # # # # # # # + + + + + + + + + + # # # # # # # # # # # # # # # # # # # # + + + + + + + + + + */
竖线改改参数就行了
func shuxian(ks:Int,js:Int,djs:Int){ for var i=ks;i<js;i++ { array[i][djs]="+" } } for var i=0;i<4;i++ { shuxian(0,js:12,djs:i*3) } /* + + + + + + + + + + + # # + # # + # # + + # # + # # + # # + + + + + + + + + + + + # # + # # + # # + + # # + # # + # # + + + + + + + + + + + + # # + # # + # # + + # # + # # + # # + + + + + + + + + + + + # # + # # + # # + + # # + # # + # # + + + + + + + + + + + */
至此已经基本完成!
//+优化++优化++优化++优化++优化++优化++优化++优化++优化++优化++优化
为了方便修改或调用打包成函数:bk ,
只要求输入:tn**图案,hs行数,hg行高,ls例数,lg例高** 即可
func bk (tn:Character="+",hs:Int=4,hg:Int=2,ls:Int=3,lg:Int=2){ guard hs >= 0 && hg >= 0 && ls>=0 && lg>=0 else{ return print("你数学是体育老师教的吗?") } var array=Array<Array<Character>>() for _ in 0...(hs*hg)+hs { array.append(Array(count:(ls*lg)+ls+1 ,repeatedValue:" "))//如果在http://swiftstub.com/编译这里……Value:"#"))//加个# } func henxian(ks:Int,js:Int,djh:Int){ for var i=ks;i<js;i++ { array[djh][i]=tn } } func shuxian(ks:Int,js:Int,djs:Int){ for var i=ks;i<js;i++ { array[i][djs]=tn } } for var i=0;i<hs+1;i++ { henxian(0,js:((ls*lg)+ls)+1,djh:i*(hg+1)) } for var i=0;i<ls+1;i++ { shuxian(0,js:(hs*hg)+hs+1,djs:i*(lg+1)) } for var i=0; i<array.count; i++ { for var j=0; j<array[i].count; j++ { print(array[i][j],terminator:" ") } print("") } } bk()//填充字符,横数,横高,例数,例高;如果不填就是默认值!
相关文章推荐
- Apple Swift学习教程
- 介绍 Fedora 上的 Swift
- Lua中使用二维数组实例
- C#使用二维数组模拟斗地主
- C#二维数组基本用法实例
- javascript的日期对象、数组对象、二维数组使用说明
- PHP 如何获取二维数组中某个key的集合
- 改写函数实现PHP二维/三维数组转字符串
- java 二维数组矩阵乘法的实现方法
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift编程中的泛型解析
- Swift中定义二维数组的方法及遍历方法示例
- 举例理解C语言二维数组的指针指向问题
- C#和Java中二维数组区别分析
- php去除二维数组的重复项方法
- php对二维数组进行相关操作(排序、转换、去空白等)
- php对二维数组按指定键值key排序示例代码
- js二维数组定义和初始化的三种方法总结
- 秒学Swift开发语言