Pulpcode

捕获,搅碎,拼接,吞咽

0%

为什么要嵌入python?

这个问题问的好,一般静态语言与脚本语言(不仅仅是python),相互搭配,有两种方式,一种是用c语言写好模块,然后用python去整合,也被称之为扩展python,这样的好处是即有python的灵活性,又有c语言的效率,

还有一种就是c语言嵌入python,这样我们就有了一个python解释器了,在游戏编程中常用这种方法,如果你是用静态语言编程,那么修改一些属性,就意为着重新编译,如果程序很大的话,编译是一间令人很烦的事,编译起来非常慢,一种好的设计是把一些属性写在一个初始化文件中,然后在程序中去解析这个属性文件,不过这样还是不够灵活,更加灵活的方式,就是干脆嵌入python(游戏编程中常用lua),这样,游戏更有创造性,更容易扩展。

一个”错误的”例子

下面先把C代码写出来,(当然,直接编译肯定是错的,因为我们还有许多东西没设置)

阅读全文 »

在《程序设计实践》(英文名《The Practice of Programming》)的书中,第三章分别用C语言,C++,AWK和Perl分别实现了马耳可夫链算法,来通过输入的文本,“随机”的生成一些有用的文本。

这里我使用python编写一个

阅读全文 »

之前的用用2d画个3d图形),我说到过跟长方体有关的两个算法,(一个通过中心坐标长宽高求八个顶点,一个通过八个顶点求十二条边) ,但是那两个算法实在是太丑陋了,对于向我这种有强迫症的人简直不能忍受,所以我现在先把它们的算法用python描述出来,接着试着把它们变得更精巧,俗话说,代码就像女生的超短裙,越短越好…(虽然不知道是谁说的,但肯定是个男人)

算法1

通过一个中心坐标cen,和长方体的长宽高lwh,求出长房体的八个顶点 其实如果(x,y,z) = cen, (l,w,h) = lwh 我们的算法就是要求出x加减l,y加减w,z加减h然后在做一个组合,不过要注意位置不能变,所以一共有八个结果,这就是我们要求的八个顶点, 我的算法就是模仿八皇后,不过不需要回溯,递归到合适的值,把值保存起来。

阅读全文 »

今天本来是在用pygame写一个演示程序,经常会用到一些rgb值,比如:

1
2
3
4
5
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
# ........
# other colors
# .......

其实每个颜色就是一个元组,如果我把它们全写在一个叫mycolor.py的文件中,那我就可以在别的python代码中直接使用,很方便。可惜网上并没有现成的东西….

自己动手吧,开工。当然不能一个一个手工输入啦,要不白学程序了。
我在网上找到了如下的数据:

阅读全文 »

嗯,我需要我的程序能够在屏幕上显示一个长方体,实际上,它还能随机旋转,像是一个动画演示程序

画3D图形,我需要一个3D图形库吗?像是opengl什么的…

不,我们只需要一些简单的2d图形api,能画线就行,当然还要些高中的数学知识。

这,可以吗?

你有没有想过这个问题,你的显示器是二维的,它为什么能玩3D游戏?(比如wow)

答案是投影,程序构建了一个虚拟的3D世界,然后把它投影到你的二维显示器上,绘制出来。想像这个虚拟的3d世界就像一个鱼缸,你的显示器是一个平面,鱼缸的正面与你显示器重合,鱼缸中会发生许多事情,而你能看到的仅仅是被投影到显示器的部分 。

阅读全文 »

pygame是一个用来写游戏的python模块,虽然不能算一个游戏引擎,没有像关卡编辑器,地图编辑器,骨骼动画,等等,这些高级工具,(所以如果你真有一个好点子,用pygame还是比较麻烦的),

但是,如果你是一个游戏开发的入门者,想学习跟游戏有关的基础知识,那么pygame还是非常适合的,游戏开发的基本概念这里都有模块可用.而且用起来非常方便(这当然归功于python)

我比较喜欢用pygame来做一些演示程序,比如当我要给老师展示一个算法演示程序之类的, 我就会用pygame,即方便,又漂亮(比用GUI漂亮多了)

如果你喜欢通过一些完整的游戏例子学习pygame,建议你看看<Making Games with python&pygame>

阅读全文 »

好吧,你可以在网上搜到一大堆的快速排序的代码,包括一些相似的博客(说明+代码实现),所以我想写一篇关于自己所理解的快速排序。

本文假设你明白什么是快速排序= =!

分区

快速排序会以一个数列的某个元素为基准,把一个数列分成两部分,小于这个基准的为一部分,大于等于的作为一部分,然后分别为这两部分递归求解,这是书上,和教程上的说法,这样的描述很容易让人误解,我觉得算上这个基准应该是三部分,基准并没有参加进一步递归,如果你不看别人的代码,第一次通过定义试图写一个快速排序,很容易把基准加入到第二个部分,导致无穷递归,所以我常对快速排序这样描述,快速排序每次分区后,都会确定一个基准的位置(这个位置是它应有的)

阅读全文 »