现在手游越来越重度,画面越来越炫,特效、图片资源越来越多,分类越来越复杂,靠单纯的美术传图给程序,再放到项目中,实在是吃力不讨好,时间长总会出错,头都大了。
特别现在UI界面或者小块功能性UI大都是CocoStudio或CocosBuilder拼好,无论美术拼或策划拼(当然也有程序自己拼的。。。),这些都被划成了游戏美术资源,如何高效、正确组织管理这些资源是个不大不小的问题,这时候如果能有个工具能统一处理下,每次打包或提交到git / svn时,那多爽!
对!而且还得是跨平台的!一会windows下一会mac下,不能跨平台多蛋疼~~
废话不多说,直接说好处,为毛选择Python:
1.处理文档资源够简单:因为它是个脚本语言,语法简洁还没那么严格,几乎可以只关心处理逻辑
2.写起来够爽:Python是用C写的,格式化输出几乎跟C一个鸟样,对于广大程序猿来说无论后来走上哪条语言的不归路,C总是那么亲切,毕竟那是第一次~~
3.修改灵活,立竿见影:就像批处理文件一样,你在或不在,代码始终在。木有目标文件,木有链接文件,木有库文件,就源文件跟着项目走,任何时候改打开直接一顿改,直接运行就O了
4.面向对象+支持图形+支持多线程:这是我大致看了两本书总结的可能将来有用的功能,目前用不到,但至少说明这哥们足够强大~
------------------------------------------------------不知道为什么这么火的火火分隔线-------------------------------------------------
一、环境
跨平台,下对应的,官网两个稳定版,一个2一个3,一般都是2,完事
二、查看帮助
1.用神奇的交互式编译器运行函数
help()
查看模块都有什么功能 如help("math") help("os.listdir")
dir()
用来列出变量或模块能使用的方法,如dir("arr")
三、永远先从变量说起
Python也是强类型语言,虽然不用定义时指定变量类型,可一但赋值就相当于指定了类型,再用时不同类型间就要类型转换了
基础类型:
整型、浮点型、字符串、列表(就是可变数组,似NSMutableArray)、元组(不可变数组,似NSArray)、字典
1.数字型
跟常用语言一样用,就是不写定义类型,编译器会自动根据赋值匹配数据类型
常用函数
round(num,digit)这个函数好,看似跟格式化输出一样,其实不一样,如下
"%.2f" %math.sqrt(2)
‘1.41'
abs()绝对值
float()
long()
pow(x,y)
math.sqrt()
math.ceil(num) 向上取整,但返回是浮点数
math.floor(num) 向下取整,返回是浮点数
2.字符串
定义:
str = "wow~a string"
标识
对于字符串用双引号和单引号一样,原来的Python程序员习惯用单引号’ ‘ ,C / C++程序员习惯用双引号 “ “
增 str = str + ",add a string" # "wow~a string,add a string"
删 string不玩删
查
str[1] # "o"
len("wow") # 3
str.find("a") # 4 说明:返回-1才是没找到,0也是找到,所以判断是要 >= 0,很容易忽略
str.isalpha()
str.isalnum()
str.isdigit()
str.split() #返回切分后的数组
改 这个比较多
str.replace("wow","ca") # "ca~a string,add a string"
str.upper()
str.lower()
str()
坑:
格式化字符串,更应该返过来说——“字符串的格式化”
为毛这样说,因为即使 “%f” %(1.2) ,返回的也是字符串
>>> "%09.2f" %(1.2)
‘000001.20'
3.列表(就是可变数组)
就像Objective-C中的NSMutableArray,可变的数组,可以随心所欲地用,常用方法:
定义
列表可吊了,直接一个[ ]就创建完毕
arr = ["a","b","c","d"]
增
序列相加
确实够灵活
>>> [1,2,3] + [4,5,6]
[1,2,3,4,5,6]
但要同类型,像下面就会报错
>>> [1,2,3] + "wo ca~"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list
>>>
append和extend的区别
arr.append(item)
>>> arr = [5,6]
>>> arr.append(7)
>>> arr
[5, 6, 7]
>>> arr.append([8,9])
>>> arr
[5, 6, 7, [8, 9]]
extend()
>>> arr
[5, 6, 7]
>>> arr.extend([8,9])
>>> arr
[5, 6, 7, 8, 9]
insert(pos,item)
删
del arr[pos]
pop()移除最后一个元素,并且返回该值
唯一的一个既能修改又返回元素值(不带None玩)的列表方法
虽然可以pop(pos),但这就跟del arr[pos]一个效果,看使用鸟~
remove(item)
查
cmp(x,y) 可数字可字符串,返回-1,0,1,这点果然是C的亲儿子
len() 计算长度
index(sth) 返回第一个匹配的索引
res = arr[2] # res = "c"
min(arr)
max(arr)
>>> min([1,2,3])
1
>>> min("ljwlef")
'e'
>>> max("ljwlef")
'w'
count(sth)
查sth有几个
改
arr[3] = "4" #arr = ["a","b","c","4"]
sort()升序排列(没研究用的什么泡排的)
分片(这个很高端)
>>> arr = [11,12,13,14,15]
>>> arr[0:3:1]
[11, 12, 13]
>>> arr[0:3:2]
[11, 13]
>>>
等同于for(i = 0;i < 3;i += 2)
4.字典
len(dict) 所有key的数量
del dict[key]
dict[key] 取某个key上的值
增删 # 不常用,用时再查
查
has_key(key) 返回 True / False
因为字典无序,所以没有列表的pop() / append()方法,
.clear()
.items()
.keys()
.values()
>>> dict
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4}
>>> dict.keys()
['a', 'c', 'b', 'e', 'd']
>>> dict.values()
[1, 3, 2, 5, 4]
>>> dict.items()
[('a', 1), ('c', 3), ('b', 2), ('e', 5), ('d', 4)]
>>>
改
好办,按读的直接赋值~
四、语句
这点CoffeeScript跟Python有一腿,都是用tab分段,有一点明显不一样的是,
Python的判断语句后面都要加一个冒号" : "
if "python".find("o") >= 0:
print "found~"
print "if end" #这句因为跟if平级,就不在判断内了
Python木有switch,有if
if ...
elif ...
else...
Python有while,木有传统的for,可以这样用for
for i in range(0,10,1): # 相当于 for(int i = 0,i < 10 ;i++)
...
五、函数
定义
def func(arg):
...
def func():
...
六、引用库
import os,math
======================= 不知道为毛这么火的分隔线 =======================
扯了这么多,看书用了两天,写这篇用了三天。。。。
基本用法就这么多鸟,写一般的程序足够用了,下篇写文件读写,走起!