import pygame
from pygame.locals import *
Pygame学习笔记0:简介
学习Pygame也有一段时间了,现在整理一下笔记作为备忘。
介绍
pygame是主要构筑在SDL库基础上的一组Python模块的集合,它使我们能够用Python语言来创建功能完整的游戏和多媒体程序。pygame是高度括平台可移植的,在任何SDL支持的平台上都可以运行(几乎可以在任何平台和操作系统上运行)。
注:SDL(Simple DirectMedia Layer)是一个跨平台的多媒体库,可以用来访问底层的音频、键盘、鼠标、摇杆、3D硬件(通过OpenGL)以及2D视频缓冲。它被用在MPEG播放软件、模拟器和很多流行的游戏中,包括获得大奖的Linux版的”Civilization: Call To Power”。
pygame是自由、免费的,以GNU LGPL 2.1协议发布。这协议基本上就让你可以在你的任何项目中使用pygame。你可以用它来创建开源、自由、免费、共享或者商业游戏。但是如果你要增加和改变pygame本身的功能,你必须以一种LGPL兼容的协议来发布这种修改。
而examples子目录中的程序属于公共域软件。
安装
要学习Pygame需要先安装Python和Pygame。
Python下载地址:http://python.org/download/
Pygame下载地址:http://www.pygame.org/download.shtml
我用的是Python 2.6.6和Pygame 1.9.1release
Pygame有很多的模块,下面是各模块一览:
模块名 功能
pygame.cdrom 访问光驱
pygame.cursors 加载光标
pygame.display 访问显示设备
pygame.draw 绘制形状、线和点
pygame.event 管理事件
pygame.font 使用字体
pygame.image 加载和存储图片
pygame.joystick 使用游戏手柄或者 类似的东西
pygame.key 读取键盘按键
pygame.mixer 声音
pygame.mouse 鼠标
pygame.movie 播放视频
pygame.music 播放音频
pygame.overlay 访问高级视频叠加
pygame 就是我们在学的这个东西了……
pygame.rect 管理矩形区域
pygame.sndarray 操作声音数据
pygame.sprite 操作移动图像
pygame.surface 管理图像和屏幕
pygame.surfarray 管理点阵图像数据
pygame.time 管理时间和帧信息
pygame.transform 缩放和移动图像
注:有些模块可能在某些平台上可能不存在。
PyGTK for Win32集成安装包
这个是国外的一强人制作的,支持Python2.5~2.7。
该安装包包含如下内容:
PyGTK 2.17.0 with numpy support
PyGobject 2.21.5
PyCairo 1.8.10
PyGtkspell, PyGTKhtml2, PyGDL 2.25.3
PyGDA 2.29.1
PyGST (Python Gstreamer) 0.10.20
PyWebkitGTK 1.18
PyClutter 1.3.2 with gst and gtk binding
PyGTKGlExt 1.1.0
PyGoocanvas 0.14.1
PyGTKSourceview 2.10.0
PyGTKImageview 1.2.0
PyRSVG 2.30
PyScintilla 1.99
PMing 4.4
Python Poppler 0.12 GPL
VIPSCC 7.24
安装之前请卸载之前的版本。
2011-07-02
pygtk_aio-2011_win32_installer_py25-27-rev5.exe
md5:32c0558754ae06e14d5db466037ce174
下载地址: http://u.115.com/file/aqzkqxd3
2011-03-30
pygtk_aio-2011_win32_installer_py25-27-rev4.exe
md5:eb80322f7da800196cb77d79d7e7d6a2
下载地址:http://u.115.com/file/clgslsma
pygtk_aio-2011_win32_installer-rev2.exe
下载地址:http://u.115.com/file/aqzknhvq
原作者博客:http://opensourcepack.blogspot.com/2011/01/conservative-all-in-one-pygtk-installer.html
NERD_commenter——VIM批量注释与反注释插件
这是对程序员非常实用的一款插件,支持多种语言的补全,还支持单行注释,批量注释,等各种命令映射。
使用方法,先下载该插件:http://www.vim.org/scripts/script.php?script_id=1218
将NERD_commenter.vim文件放到~/.vim/plugin目录下,将NERD_commenter.txt文件放到~/.vim/doc目录下。
然后使用<leader>cc快捷键进行注释选中的行,<leader>cu进行反注释。
其中<leader>是键盘映射,默认情况下是反斜杆“”,则上述快捷键分别为:cc和cu。你可以使用命令自定义,例如命令:let mapleader=”,”将<leader>定义为”,”键。
还有不懂的使用:help NERDCommenter命令查看帮助。
PHP导出Excel
PHPExcel是一个用PHP写的开源的相当强大的 MS Office Excel 文档生成类库。
下面给出一个例子,有编程基础应该可以根据这个例子举一反三。
首先,先下载PHPExcel( http://www.phpexcel.net )。国外的网站速度比较慢的话可以到这里下载:http://u.115.com/file/clgk4q5t
下载解压后,将Classes目录里的内容上传到你的服务器上。然后新建一个文件saveas_excel.php,与Classes目录里的文件处于同一目录中。
saveas_excel.php内容如下:
1 |
|
如果有不懂的请自己看DocumentationAPI目录中的文档。
PHP对XML的读写实例
新建两个文件,文件名分别为:photo_list.php、photo_list.xml,放在同一目录下。
photo_list.xml文件内容:
1 |
|
photo_list.php文件内容:
1 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
PHP GET方法ajax实例
首先新建两个文件,文件名分别为:mail.html、mail.php,放在同一目录下。
mail.html文件内容如下:
1 <html>
2 <head>
3 <meta http-equiv="content-type" content="text/html;charset=utf-8">
4 </head>
5 <body>
6 <form action="" method="post" name="form1" id="form1">
7 <table border="1" width="100%">
8 <tr><td height="30">
9 请选择:
10 <select name="Card_Choice" id="Card_Choice" onChange="valideMail(this)">
11
12 <option id="s1" value="无">无</option>
13
14 <option id="s2" value="123">123</option>
15
16 <option id="s3" value="abc">abc</option>
17
18 <option id="s4" value="34dfd@">34dfd@</option>
19
20 </select><span id="show"></span>
21
22 </td></tr>
23
24 </table>
25
26 </form>
27
28 </body>
29
30 </html>
31
32 <script language="javascript">
33
34 var xmlHttp;
35
36 function valideMail(obj) {
37
38 //var email = document.getElementById("eMail");
39
40 var url = "mail.php?email=" + obj.value;
41
42 if (window.ActiveXObject) {
43
44 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
45
46 } else if (window.XMLHttpRequest) {
47
48 xmlHttp = new XMLHttpRequest();
49
50 }
51
52 xmlHttp.onreadystatechange = callBack;
53
54 xmlHttp.open(‘GET’, url, true);
55
56 xmlHttp.send(null);
57
58 }
59
60 function callBack() {
61
62 if (xmlHttp.readyState == 4) {
63
64 if (xmlHttp.status == 200) {
65
66 document.getElementById("show").innerHTML = "show:" + xmlHttp.responseText;
67
68 }
69
70 }
71
72 }
73
74 </script>
mail.php文件内容如下:
1 <?php
2
3 $email = $_GET["email"];
4
5 if ($email == "") {
6
7 $email = "rrrrrrrrrrrrrrrrrr !";
8
9 }
10
11 echo ($email);
12
13 exit(0);
14
15 ?>
PHP POST方法ajax实例
首先新建两个文件,文件名分别为:ajax_post.html、ajax_output_post.php,放在同一目录下。
ajax_post.html内容如下:
1 <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head>
2
3 <script language="javascript">
4
5 function saveUserInfo() {
6
7 //获取接受返回信息层
8
9 var msg = document.getElementById("msg");
10
11 //获取表单对象和用户信息值
12
13 var f = document.user_info; var userName = f.user_name.value; var userAge = f.user_age.value; var userSex = f.user_sex.value;
14
15 //接收表单的URL地址
16
17 var url = "ajax_output_post.php";
18
19 //需要POST的值,把每个变量都通过&来联接
20
21 var postStr = "user_name="+ userName +"&user_age="+ userAge +"&user_sex="+ userSex;
22
23 //实例化Ajax //var ajax = InitAjax();
24
25 // var ajax = false;
26
27 //开始初始化XMLHttpRequest对象
28
29 if(window.XMLHttpRequest) {
30
31 //Mozilla 浏览器
32
33 ajax = new XMLHttpRequest();
34
35 if (ajax.overrideMimeType) {
36
37 //设置MiME类别
38
39 ajax.overrideMimeType("text/xml"); }
40
41 } else if (window.ActiveXObject) {
42
43 // IE浏览器
44
45 try { ajax = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!ajax) {
46
47 // 异常,创建对象实例失败
48
49 window.alert("不能创建XMLHttpRequest对象实例."); return false; }
50
51 //通过Post方式打开连接
52
53 ajax.open("POST", url, true);
54
55 //定义传输的文件HTTP头信息
56
57 ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
58
59 //发送POST数据
60
61 ajax.send(postStr);
62
63 //获取执行状态
64
65 ajax.onreadystatechange = function() {
66
67 //如果执行状态成功,那么就把返回信息写到指定的层里
68
69 if (ajax.readyState == 4 && ajax.status == 200) { msg.innerHTML = ajax.responseText; } }
70
71 }
72
73 </script>
74
75 <body > ?<form name="user_info" method="post" action=""> 姓名:<input type="text" name="user_name" /><br /> 年龄:<input type="text" name="user_age" /><br /> 性别:<input type="text" name="user_sex" /><br />
76
77 <input type="button" value="提交表单" onClick="saveUserInfo()"> </form><div id="msg"> </div> </body>
ajax_output_post.php内容如下:
1 <?
2
3 echo ’姓名:‘.$_POST[‘user_name‘].‘<br>‘;
4
5 echo ’年龄:‘.$_POST[‘user_age‘].‘<br>‘;
6
7 echo ’性别:‘.$_POST[‘user_sex‘].‘<br>‘;
8
9 ?>
再推荐一款不错的编辑器——UliPad
Ulipad 是一个基于 wxPython 开发的面向程序员提供的灵活编辑器。
支持 Perl, Python, PHP, Ruby, Javascript等多种语言。支持语法高亮、自动填充、代码折叠的功能,方便编写代码。更不错的是它是跨平台的,支持Windows, Mac和Linux。如图:

一些开发手册下载
最近收集整理了一些可能会用得上的开发手册,顺便分享一下。
shell编程手册.pdf http://u.115.com/file/f5b4066e87
php_manual_zh.chm(php中文手册) http://u.115.com/file/f5e120322a
W3C_Javascript参考手册_2010-07-19.chm http://u.115.com/file/f553fd50e3
Linux_c库函数参考手册.pdf http://u.115.com/file/f54fee1a8
C语言标准库函数查询手册.pdf http://u.115.com/file/f52f739afa
gtk函数手册.rar http://u.115.com/file/f576f4ba8d
gtk_2.0中文指南.rar http://u.115.com/file/f534036897
GTK+_API.gz http://u.115.com/file/f518d8b95b
python-3.1.2-docs-html.tar.bz2(python-3.1.2官方手册) http://u.115.com/file/f59bee52a2
python-2.6.6-docs-html.tar.bz2(python-2.6.6官方手册) http://u.115.com/file/f54da60b40
pygtk_2.24.0-docs-html.tar(pygtk_2.24.官方手册) http://u.115.com/file/f5f02cfa2d
pygtk_2.14.0-docs-html.tar(pygtk_2.14.官方手册) http://u.115.com/file/f58acb5b52