本帖最后由 秋声赋 于 2012-3-8 17:12 编辑
大家好,我是秋声赋,上次给大家介绍了关于XNA的一些3D知识,这次给大家介绍下XNA的粒子特效。(其实所有编程的粒子系统的原理都是这样。)
注意:本帖需要基本的几何知识和基本的图形编程知识。
首先简绍Sprite(精灵)。精灵是一个2D图形,在需要绘制的时候始终在屏幕的最前端。Sprite常被用来绘制一些纹理(只有纹理,与3D物体无关的),例如本例中粒子,子弹,2D游戏中的人物等等。注意:在绘制精灵的时候,我们的坐标系统和GDI一样,以屏幕左上角为原点,X轴向右递增,Y轴向下递增。
建立XNA工程后,系统便帮我们建立了一个SpriteBatch类的对象spriteBatch,我们就是利用这个对象来绘制精灵的。
关于spriteBatch,我们现在只了绘图函数。spriteBatch.Draw()有7个重载函数,具体可以到下面网址了解。http://hi.baidu.com/znacm/blog/item/60be0308d078b0286b60fbaf.html
SpriteBatch.Draw( Texture2D texture,Vector2 vector,
Color color)
是本例中经常用到的形式。Texture2D texture 表示精灵所用的纹理(贴图)Vector2 vector 表示精灵的位置(用二维向量表示)Color color 表示颜色遮罩,如果不透明就用Color.Black
以上是Sprite的简介。下面介绍一下XNA的基本流程。XNA和一般消息驱动的应用程序不同,表面上并没有消息循环,取而代之的是有2个函数的无限循环Update和Draw。
前者负责处理所有逻辑,检查输入,并更新所以应该更新的东西。后者负责整个区域的绘制。这一个循环就完成了一帧,每一秒完成循环的次数就是游戏的FPS。XNA中FPS是一般固定的(Windows下是60帧,WindowsPhone是30帧),也可以根据需要修改,或者取消FPS限制。
如果在固定的FPS下当2个函数都执行完了却还有空余时间,程序便会等待直到此次循环时间结束。
下面就来介绍粒子特效。也许大家对粒子特效没什么感觉,但他确实游戏特效中很重要的一个环节。例如爆炸,下雨,烟雾,子弹(弹幕)等待都是粒子特效。下面是本例中的雪花效果。
截图不怎么样,实际效果会很好看。本例本来是微软的粒子特效演示,我把其中所有的注释都翻译了过来,方便大家理解,并增加了一些我的理解。如果能仔细阅读这个程序,我相信你就能完整的掌握粒子特效的相关知识。粒子效果由以下2个部分构成:粒子和粒子系统。
一、粒子粒子是粒子系统最基本的单元。你可以想象一下一个物体,这个物体中,他的组成成分都是相似的,这 个相似的部分就是粒子,就像一场雪是由很多很多的雪花所组成的一样。由此我们可以想象一个(自然界)粒子应该具有的性质。位置 Vector2 Position大小(规模) float scale
速度 Vector2 Velocity
加速度 Vector2 Acceleration
自转速度 float rotation;
这些都是自然界中粒子所拥有的属性,在程序中我们还需要以下属性
生存周期 float lifetime粒子被创建以后所经历的时间 float timeSinceStart
由此我们就可以得到粒子类的构造函数public void Initialize(Vector2 position, Vector2 velocity, Vector2 acceleration,float lifetime, float scale, float rotationSpeed)
{
//设置所有的值
this.Position = position;
this.Velocity = velocity;
this.Acceleration = acceleration;
this.Lifetime = lifetime;
this.Scale = scale;
this.RotationSpeed = rotationSpeed;
//重置TimeSinceStart,因为当我们要重复利用粒子.
this.TimeSinceStart = 0.0f;
//设置一个旋转的角度(0-2π)
this.Rotation = ParticleHelpers.RandomBetween(0, MathHelper.TwoPi);
}
除了构造函数外,我们还需要另外2个函数来帮助我们使用粒子类判断是否粒子的活动函数 public bool Active()更新粒子状态函数 void Update(float)
以上就是粒子类的构成,详细解释请看代码中的注释。
二、粒子系统上面我们定义了粒子类,他代表了我们系统中的每一个粒子。为了把管理他们,我们就需要一个粒子系统。因为粒子系统有点复杂,代码也非常长,所以就不贴出来了,大家可以参看源代码中的ParticleSystem.cs文件了解。这里我就只介绍粒子系统的原理。首先要明确一点,我们的粒子是重复利用的,不然会造成很大的资源浪费。为了满足这个要求,除了所有粒子的集合外(我们用List *本站禁止HTML标签噢* 来储存),我们还需要一个 队列(Queue *本站禁止HTML标签噢* )来保存可以使用的自由粒子(处于非活动状态)。在新建粒子的函数(AddParticles)中,根据需要新建粒子的数量,先从自由粒子队列中取出粒子,如果不够用再新建粒子对象。这样能节省很多资源。当我们发现一个粒子的生命周期结束(或者其他自定义的条件),我们就把他放入自由粒子队列中以便我们继续利用它。为了方便修改特效,我们利用XML串行化(序列化)处理过得配置文件来保存特效相关的变量的信息,并利用ParticleSystemSettings类来读取其中的数据。这些数据一般是提供一个变化的范围,以便能让粒子系统生成满足要求但却不完全一样的粒子,这样美观度就会大大提高。当需要修改特效时,大多数不要修改源代码,而是直接修改配置文件就能得出新的特效,这对于引擎的易用性来说也很重要。粒子系统是整个粒子系统的核心部分,大部分的算法都在这里完成,如果想理解粒子效果实现的方法,还是请仔细看源代码,我已经做了很详细的注释,如果还有不懂的地方请在帖子里面说明,我会尽量帮你解答。
三、关于粒子特效的设置: 这里主要介绍通过修改配置文件来完成各种特效。首先介绍配置文件的组成:
public class ParticleSystemSettings{
// 设置粒子数目的范围
// 注意:这里是每一次产生效果的时候所产生粒子的数目
// 并不是粒子的总数目!!!
public int MinNumParticles;
public int MaxNumParticles;
// 粒子所用纹理效果的文件名(不要写后缀名)
public string TextureFilename = null;
// 这2个参数将会控制粒子运动的偏移角度.在XML文件中是用角度表示的,在实际运算中我们会转换成弧度
public float MinDirectionAngle = 0;
public float MaxDirectionAngle = 360;
// 这2个参数将会控制粒子创建时的速度大小
public float MinInitialSpeed;
public float MaxInitialSpeed;
// 设置加速度模式
public AccelerationMode AccelerationMode = AccelerationMode.None;
//当用EndVelocity模式的时候,将会利用下面的参数,即末速度.
//改变这个大小将会影响粒子的生存周期.
//如果设置为1,粒子将会一直保持原速度
//如果设置为0,粒子将会在消失前停止.
public float EndVelocity = 1f;
//当使用Scale模式时,将会用下面2个参数决定其加速度的大小
public float MinAccelerationScale = 0;
public float MaxAccelerationScale = 0;
// 当用Vector模式的时候,下面2个变量将会决定加速度的矢量值
public Vector2 MinAccelerationVector = Vector2.Zero;
public Vector2 MaxAccelerationVector = Vector2.Zero;
//这个参数控制有多少粒子(百分比)在创建出来的时候就会赋予初速度
public float EmitterVelocitySensitivity = 0;
// 这2个参数决定粒子的自转(自旋)速度,同样在XML文件里面是角度,计算的时候会转换成弧度
public float MinRotationSpeed = 0;
public float MaxRotationSpeed = 0;
// 这2个参数决定粒子的生存周期
public float MinLifetime;
public float MaxLifetime;
// 这2个参数决定粒子的大小
public float MinSize = 1;
public float MaxSize = 1;
// 控制重力对粒子的影响,这是一个矢量,我们除了在上面的加速度使用矢量外,也可以
// 在这里利用重力描述出一个风的效果,例如雪花往左边飘
public Vector2 Gravity = Vector2.Zero;
// 这个参数决定粒子的Alpha值(透明度).我们所给定的默认值适合大多数粒子效果
public Blend SourceBlend = Blend.One;
public Blend DestinationBlend = Blend.InverseSourceAlpha;
}
下面是关于上面提到的加速度模式的解释None: 粒子系统将不会使用加速度,即粒子将匀速运动Scalar: 标量加速度:系统会把速度(矢量)乘以一个介于最小标量加速度(MinAccelerationScale和最大标量加速度(MaxAccelerationScale)中随机产生的一个值然后再乘以一个随机的方向(由MinDirectionAngle和MaxDirectionAngle中随机).EndVelocity:标准物理学加速度:按公式Vt=V0+at计算速度 不会改变方向Vector:矢量加速度:系统会把速度乘以一个矢量。这个矢量由 MinAccelerationVector.X和MaxAccelerationVector.X 中间产生的随机数 做X坐标。MinAccelerationVector.Y和MaxAccelerationVector.Y 中间产生的随机数 做Y坐标。这个设置会改变方向自此我们的粒子特效系统就完成了。下面就行修改特效的代码了,我在代码中提供了3种特效,分别是:下雪,烟雾,爆炸。大家可以试试看,并研究每一个特效的参数。这是雪花的参数:<?xml version="1.0" encoding="utf-8"?>*本站禁止HTML标签噢*
<Asset Type="ParticlesSettings.ParticleSystemSettings">
*本站禁止HTML标签噢* 5</MinNumParticles>
*本站禁止HTML标签噢* 8</MaxNumParticles>
*本站禁止HTML标签噢* 11</TextureFilename>
*本站禁止HTML标签噢* -90</MinDirectionAngle>
*本站禁止HTML标签噢* 90</MaxDirectionAngle>
*本站禁止HTML标签噢* 10</MinInitialSpeed>
*本站禁止HTML标签噢* 50</MaxInitialSpeed>
*本站禁止HTML标签噢* None</AccelerationMode>
*本站禁止HTML标签噢* -45</MinRotationSpeed>
*本站禁止HTML标签噢* 45</MaxRotationSpeed>
*本站禁止HTML标签噢* 5</MinLifetime>
*本站禁止HTML标签噢* 10</MaxLifetime>
*本站禁止HTML标签噢* 0.1</MinSize>
*本站禁止HTML标签噢* .3</MaxSize>
*本站禁止HTML标签噢* 10 40</Gravity>
</Asset>
</XnaContent>
效果如下:
这次写的帖子可能没有太多的图片和例子,主要因为这是介绍一个特效的框架,他的特效参数并没有什么值得研究的。 但是一个帖子中很难把粒子系统的原理解释得很清楚,但是我提供了一个程序给大家参考,也写了很详细的注释,通过阅读整个程序我想你就能完全把握住粒子系统的原理和实现方法,如果有什么问题可以在下面回帖。系统学习的书籍在这:http://115.com/file/anmamcg7另外打下广告:[查看全文]Ruma游戏引擎招收各种NB人物。
Ruma引擎是基于XNA的游戏引擎,现在正在制作Windows版以后主要制作WindowsPhone版。
现在急需程序员(最好有.Net基础),当然有兴趣的话也可以加入我们!
QQ群:2715634
龙凯文python初体验教程注:本教程不需要任何编程基础,懂得计算机的基本操作和基本的数学原理就可以进行自学。第二弹地址: Python初体验教程之二 《基本表达式(上)》
================我==是==分==界==线================第一章:初识pythonPython中文名称为“大蟒蛇”,是近年来流行起来的一种编程语言。或许很多新手并不了解python,甚至以前没有听过有这样一门编程语言,因为这是一门新生代语言。国内大学里面基本没有相关课程,而且因为某些复杂的原因造成python官方站点在中国大陆境内无法访问,加之其中文资料非常少, 造成了python在国内并不流行的原因。但是使用python设计的软件大家一定用过,塞班,安卓,苹果的移动终端系统;windows,*nux,mac的PC系统上都充斥着python的身影。因为python是一个强大,可移植性强,简单,易学,开放的新型编程语言,并且python在其诞生的短短不到20年间,迅速成长为世界最流行的编程语言前五名。尽管有限制,但这不应该成为技术宅们不学习它的理由。没有学过编程的新手完全可以从python入手,让python为自己打开编程的大门。在这里笔者想提及一点,有人说python有在web方面的能力不强,容易沦为胶水语言的等等缺陷。而我想说的是:每一种编程语言都有其优缺点!!Google在其模块中添加了大量的python代码;
facebook的服务层代码是用python来完成的;debian和ubuntu的默认脚本是python;python的web应用很成熟(比如zope);python在window/linux等平台上都可以使用(可移植性强)。这些足见python的强大,只使用最简单的代码便可以完成复杂的任务唯python胜任!即便是最成熟的C++也同样有开发周期长,代码不安全等等的问题,只学会皮毛却出来当“专家”,在各个论坛误导新手:“XX语言XX功能不行,你还不如去学XX。”这是一种非常无知且不负责任的表现。笔者建议各位摒去浮躁,静下心来好好掌握一门语言,用心体会编程之美。
好了,废话不多说,我们进入正题。
首先我们需要下载python的编程环境安装包 (下载地址:http://www.python.org/ ), 但是python的官方站点在中国大陆境内是无法正常访问的,相信技术宅有很多方法可以突破这层简单的技术封锁,这里出于和谐原因我就不一一列举,聪明的同学一定能想办法解决。因为python的开放性,所以python有了各种各样的衍生版本,以及收费版本。比如Pythonwin,ActivePython,Wingware,Jython 等等,但作为新手的我们完全不用考虑这些衍生的版本,只需要下载免费的原始版本IDLE就可以了。因为python的可移植性极强,所以其官方网站提供了windows,linux,mac的三种不同平台下的版本,同学们按各自的需求下载。笔者将会在后面的内容的中以windows平台下的2.7版进行讲解。但是这里需要注意一点:python在3.0版本之后,编译器对代码有了较大改动,这也就是说有些函数与表达方式与之前版本会有所不同,譬如:在3.0之前的版本中,print是语句,意为在shell中打印数据计算结果。而在3.0及其以后的版本中print为函数。关于这一点,笔者会将需要注意的地方不断提及,小宅们不用担心。
Python 安装包一共才15.2M,短小精悍。相比VS动辄几百M甚至好几个G来说,是非常方便的。我们可以把安装包放进U盘,或者上传至网盘,到哪里都可以练练手,非常方便,十分有利于我们的学习。我们把安装包下载好了以后是这个样子,
接下来相信已经不需要我多说了。是双击以后的一路Next,如果需要修改路径什么的可以按照自己的喜好。安装完成以后按照“开始>程序>python>IDLE(python GUI)”就可以打开python的集成开发环境了,如下图:
这就是IDLE交互式python shell,我们下一章内容将围绕这个界面展开。
第一章为介绍章节,比较短。笔者后面会为大家带来详细教程。敬请期待。
==========我==是==分==界==线==========龙凯文python基础教程[查看全文]
本帖最后由 弱弱的AR酱 于 2013-8-4 05:05 编辑
人人网抹杀计划(Massatu.py) :正确的说,是人人网黑历史抹杀计划,现已基本完成并实施。
已有的功能:
备份所有状态及评论。删除所有状态。
备份所有留言。删除所有留言
备份所有日志及评论。
备份所有相册、相册评论、相册照片、照片评论。
未完成的功能:
删除所有日志。暂时没有时间破解验证码,而且日志可以批量删除,每次十个还是很快的。
删除所有相册。同没有时间破解验证码,而且这个验证码比日志验证码要更复杂。也不能批量删除。动动手吧……
备份所有分享:并不知道要以何种形式备份。或许直接删除?
备份的文件格式比较简陋,有很大的提升空间。但是必要的信息应该已经保存。(之后再进行处理也是可以的)
有时间再战验证码吧……还是很有意思的。
注意事项(重要,请先阅读全文):
代码在Python2.7.5实现,Win7-64bit运行成功,需要Beautiful Soup4库。
WARNING 任何人并不能对你使用此代码所可能造成的误删除等操作负责 PROCEED WITH CAUTION
由于第一次写python,纯新手,所以代码风格很差,看不懂/代码失效/Bug请谅解……
再一次请谅解……
由于程序基于网页分析,所以人人网随时可能的改版有可能会使程序失效。
可能有各种各样的后果,请谨慎使用。
或者干脆不使用,因为程序本身并没有技术含量。麻烦之处在于找url及PostData,通过抓包即可获得。
代码写成这个样子肯定是要被各种程序员喷的……所以首先表示歉意
使用方法:
安装Python2.7.5.
安装Beautiful Soup4. 当然其实可以不用这个东西,但是既然用了就……对此表示歉意,诚挚的。
下载保存代码。把第九行的params改成自己的邮箱和密码。
根据需要去掉文件结尾#Manual以下相应模块的注释,当然不要把比如#Status: #Albums什么的取消注释。建议一个模块一个模块运行。也可以只备份不删除,只要保留带delete字样的语句仍被注释即可。
理论上说,把程序所有print语句注释掉会提高速度,因为只是debug用。
PROCEED AT YOUR OWN RISK!
把黑历史删了,我们还是朋友!= =若是发现Bug或者什么的可以发信给我@_@
咱是小弱……_(:з」∠)_
这是网盘@_@
pan.baidu.com/share/link?shareid=581651487&uk=2785507388
[查看全文]
首先主要测试一下是不是能发帖且添加附件了
正题,周末无聊写了个Diectx11 的2d渲染框架,放了个人物上面 (sprite 动画)。
感兴趣的同学可以先把程序下载玩玩,代码随后整理好奉上。
PS: 木有病毒..... 仅供对游戏开发或变成感兴趣的同学参考,抱砖引玉,如有大神路过请多赐教
哦,对了 上下左右键控制,支持八方向。
[查看全文]
本帖最后由 狂奔的瘦子 于 2013-3-24 12:37 编辑
嘛...众所周知,java一直以来在switch的条件里只支持与整数兼容的类型(如char,byte,short,int和Character,Byte,Short,Integer)和枚举类型,这样导致开发的时候无比的蛋疼,尤其是遇到根据字符串不同进行选择的语句...大致就是要么把字符串通过各种手段转成int类型,要么就是用各种的if else if,多写了很多的代码......
不过现在解脱了...sun公司终于发现了众多程序员的怨念...在Java7里面让switch支持了String类型的表达式!!我们终于解放了有木有!!!为了根据字符串选择不用写那么多代码了有木有!!!!以后写代码完全可以这样了,如下:
[mw_shl_code=java,true]public class TestSwitch{
public void show(String name){
switch(name){
case "Whisper1166":
System.out.println(name + "是坏人");
break;
case "Mr_Alex":
System.out.println(name + "是笨笨");
break;
case "狂奔的瘦子":
System.out.println(name + "是聪明的大好人");
break;
}
}
}[/mw_shl_code]
有木有简单了不少!!!
同样的...在使用新的switch时要注意几点:
1.表达式的值不能为null,也就是说你的字符串不能是空对象!!但是可以是空字符串
2.在case语句中也不能有null
3.case子句中的值是不能重复的...包括Unicode转义字符,例如,男和\u7537这两个分别做成同一switch的子句值时,会编译错误
以上.就是java新特性中关于switch改变的介绍.....@Whisper1166 @Mr_Alex
[查看全文]
本帖最后由 蓝宇轩 于 2012-8-11 01:37 编辑
其实asp.net;还是很简单的;如果有着html基础的话那就再好不过了1.
如何用vs2010来创建web页面asp.net
的网页文件的格式是aspx,浏览器在载入的过程中还是把aspx识别成了html文件;他只认识html和js! 在载入的过程中,服务器会解析aspx并执行逻辑层的代码在转换成html页发送给浏览器;下面来我就献丑一回来写一个简单的例子:首先;打开vs2010;按如下图所做 先用website模式吧(简单些;毕竟是个入门)
注意:aspx页的左边是不是有一个+号点 开它就可以打开后台页面 后缀名是:aspx.cs;这就是逻辑层的代码;如下图网页文件的创建到此结束!
接下来是控件的应用;控件其实就是微软把一些代码封装好的,方便我们快速开发;可以拖入aspx页面;也就是所谓的"拖控件"
我们来拖二个控件吧!分别是TextBox(文本框)控件;和Button(按钮)控件;
↓原来是源页面;单击设计页面;进入设计页面;双击设计页面里的按钮(文本框右边)
进入后台(C#)↓事件就好多种;单击事件,改变时事件,单击后发生的事件等等~~不多说;有兴趣的可以度娘一下!
接着我们再里面写
[mw_shl_code=csharp,true]using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string re = TextBox1.Text;//声明一个字符串类型的变量名字随便取!把ID名叫"TextBox1"的"text"文本赋值给他;
//说白了就是把textbox控件的文本值给一个叫为"re"的字符串变量;
Response.Write(re);//输出"re"字符串变量的值! 每个控件,标签啊,什么的都是有着ID的,ID就相当于控件们的身份证;用来表示他们,这里面的TextBox1就是ID
//可以去aspx页面里可以看到;<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
}
}[/mw_shl_code]
ctrl+s保存!
在单击aspx文件的标签回到aspx页;
按住快捷键ctrl+F5;vs就会生成虚拟服务器,并打开默认浏览器 如下;
在文本框里输入随便的文字;再单击按钮 如下
先写到这里;我熬不住了;睡觉去了
学习本文请把C#的教程看一遍吧
对了;这是我的其他帖子
[设计完成品] [UI设计]咱随便画了个!可能不是太好;嘛~谁叫我是后台捏;只...
比较喜欢听的一首[flash=250,32]http://l.5sing.com/player.swf?songtype=bz&songid=1070425[/flash]
[查看全文]
新18位身份证号的结构是:六位数字地址码+八位数字出生日期码+三位数字顺序码+一位数字校验码
前17位都很好得到(前六位是地区行政编码,比如北京市是110000,其他请参考官方网站查询:www.stats.gov.cn/tjbz/index.htm 。八位出生日期要注意,比如你是1990年1月1日出生的,那么就是:19900101),关键也是此算法唯一的难点是最后一位校验码的计算。步骤如下:
1、将前17位数乘以不同的系数,系数对应表:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
2、将前17位数加上上面的每个数相乘的结果
3、将上面的结果对11取余(范围:0 1 2 3 4 5 6 7 8 9 10)
4、将上面的余数参照对应表:1 0 X 9 8 7 6 5 4 3 2
上面的算法是从网上摘抄下来的,也是传的比较广的一个,姑且我就以这个算法为蓝本用Java表示出来喽!
[mw_shl_code=java,true]private static int[] multiNum=new int[]{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
private static String[] resNum=new String[]{"1","0","X","9","8","7","6","5","4","3","2"};
/**
* 输入参数返回身份河蟹证号码的方法
* @param addrNo 地区行政编码(6位)
* @param birthDate //出生日期(8位)
* @param orderCode 顺序码(3位数,男奇女偶)
* @return 身份河蟹证号码
*/
public static String getIDnumber(String addrNo,String birthDate,String orderCode){
String orderNumber="";//存放顺序码
String num17=addrNo+birthDate+orderCode;//拼接出前17个数字
char[] num17Ch=num17.toCharArray();//将前17字符串转成字符数组
int num17Tmp=0;//存放第二步的结果
for(int i=0;i<multiNum.length;i++){//将第一步和第二部合并
int num17ChTmp=Integer.parseInt(num17Ch+"");
num17Tmp+=(num17ChTmp+num17ChTmp*multiNum);
}
int oddNumber=num17Tmp%11;//第三步(对11取余)
for(int i=0;i<resNum.length;i++){//第四步(余数对象获得对应顺序码)
if(oddNumber==i){
orderNumber=resNum[i-1];//根据原算法不需要-1,但亲测多一位无奈此处减去1
}
}
return num17+orderNumber;//返回前17位字符串+顺序码
}[/mw_shl_code]
调用这个静态方法,传入三个字符串即可得到一个18位身份河蟹证号了。
以上的算法亲测貌似有一点的偏差,不过确实能生成一个有效的18位身份河蟹证号,对付网络注册还是绰绰有余啦!不信大家自己拿回去试试喽!
[查看全文]
本帖最后由 丨端木丶荒冬 于 2012-4-1 14:07 编辑
嘛,从今天开始就要努力学习编程了。有兴趣的同学,觉得困难的同学跟我一起进步吧。
如果我这个文科生都能学会的话,相信你们一定不成问题。
http://woodpecker.org.cn/abyteofpython_cn/chinese/
上面是相关的教材,Swaroop, C. H. 著 沈洁元 译 官网是:www.byteofpython.info
很简单的一个教程,为了方便那些不愿意点进去的同学,我会把今天学习的东西复制到相应的教程里去。
这里是目录:
我们将在这个系列的教程或者称感言中完成
(ZT)程序员技术练级攻略 里提到的
启蒙入门
1、 学习一门脚本语言,例如Python/Ruby可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序。实践项目:
- 处理文本文件,或者csv (关键词 python csv, python open, python sys) 读一个本地文件,逐行处理(例如 word count,或者处理log)
- 遍历本地文件系统 (sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果
- 跟数据库打交道 (python sqlite),写一个小脚本统计数据库里条目数量
- 学会用各种print之类简单粗暴的方式进行调试
- 学会用Google (phrase, domain, use reader to follow tech blogs)为什么要学脚本语言,因为他们实在是太方便了,很多时候我们需要写点小工具或是脚本来帮我们解决问题,你就会发现正规的编程语言太难用了。
- Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等。
- Source Insight (或 ctag)
使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率。


