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

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

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

这,可以吗?

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

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

阅读全文 »

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

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

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

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

阅读全文 »

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

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

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

如果你喜欢通过一些完整的游戏例子学习pygame,建议你看看

阅读全文 »

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

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

分区

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

阅读全文 »

前言:

之前有朋友跟我讨论过一个问题,他问在java中,i=1;i=i++;之后的结果时什么,我一开始认为是2,但当他说答案是1的时候,我不得不想一个合理的解释,我想,可能是因为临时变量,当i赋值给i后,自增更改了临时变量,所以i值并没有改变。当我在为我的解释表示满意时,他们说在c语言下的答案是2,好吧,我只能说是编译器的实现不同,当然这个答案太没说服力了,所以寻找答案的任务就开始了。

我先在《c++ primer》上看见这样的解释:“++i的效率要比i++的效率高,因为i++必须要有一个临时变量来存放i本身的值“,那么我之前只说对了临时变量,但原因是临时变量先用来存放i的值,然后i本身自增,之后,临时变量赋值给左边,这时,i的值又被 自己之前的值覆盖了,所以又变成1,但这只是个推测,再说c语言中为什么是2?所以不得不反编译了。。。

阅读全文 »

引语–为什么是“我们应该如何学习编程”,因为大家都在学习编程,我在这里只想先说说自己的想法和观点,我不是个高手,也没参加过什么培训,但是有一份对编程的热情,渐渐的我总结了自己的经验,如果你搜如何学习编程,你可能会搜到一堆的什么练习了,看源码了,多动手,看好书,写博客,之类的,这些东西我就不说了,说说自己的想法吧

走弯路?

不知道其他的程序员是不是跟我一样,在学习了一段时间,在总结的时候,总会觉得自己走了许多的弯路,如果当初早点怎么怎么就好了,一开始我常常有这种想法,但是事后仔细想想,我觉得走弯路是有,但没我们我们想象的那么严重罢了。

先来看一个笑话吧:

阅读全文 »

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

思考,这个题,如果仔细观察,不难发现是斐波那契数列,也就是从一月开始,兔子的个数是1,1,2,3,5,8.....的形式增长的,所以我决定先写一个斐波那契函数,我使用递归的方式来写,非常简单:

1
2
3
4
5
6
7
int fibo(int n)
{
if(n == 1||n ==2)
return 1;
else
return fibo(n-1) + fibo(n-2);
}

下面是整个程序:

阅读全文 »