本篇文章给大家谈谈MakeGameswithPython&Pygame(1),同时本文还将给你拓展'makeclean'仍然无法重新制作后,'make:Nothingtodofor'提出,MacOS、
本篇文章给大家谈谈Make Games with Python & Pygame (1),同时本文还将给你拓展'make clean' 仍然无法重新制作后,'make: Nothing to do for' 提出,MacOS、./configure & make & make install 知其所以然、./configure && make && make install、./configure && make && make install详解等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- Make Games with Python & Pygame (1)
- 'make clean' 仍然无法重新制作后,'make: Nothing to do for' 提出,MacOS
- ./configure & make & make install 知其所以然
- ./configure && make && make install
- ./configure && make && make install详解
Make Games with Python & Pygame (1)
看见这本书很有意思,利用Python和Pygame模块进行游戏开发,边学习边翻译边写心得。
http://download.csdn.net/detail/abclixu123/4582805 这是真本书的下载地址。
第二章介绍Pygame的一些基础知识。开始也是以经典的Hello World开始。所用的开发环境就是安装Python后自带的IDLE。
HelloWorld程序如下:
import pygame, sys
from pygame.locals import *
pygame.init()
DISPLAYSURF = pygame.display.set_mode((400,300))
pygame.display.set_caption(''Hello World'')
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
这个程序运行后就是一个简单的黑色窗口。
对这个程序有几点说明
- 需要包含Pygame模块,即import pygame
- 在进行任何具体的Pygame的操作之前,都要进行Pygame的初始化,即pygame.init()
- DISPLAYSURF = pygame.display.set_mode((400,300)) 这句创建pygame显示的主窗口,400宽,300高,如上图显示所示。
而且要注意的传递是个含有两个整数的元组变量,不是分开的两个整数。 - pygame.display.set_caption(''Hello World'') 这句就是设置窗体的名字
- 在一个循环中,我们处理事件消息,pygame.event.get()得到我们与之交互的事件
- 最后更新窗口(根据事件处理)
其实这个循环就很能说明一个游戏的处理机制了,在这个循环里要做三件事情
- 处理事件
- 更新游戏状态
- 将更新的游戏状态显示到屏幕上
文章接着简单介绍了像素坐标系,这个比较简单。(略)
接着提醒了下函数,方法,构造函数和模块中的函数的区别,牵涉到语言了(略)
Surface对象和窗口
Surface对象其实就代表了矩形的2D图像,Surface对象的像素可以通过调用Pygame的画图函数改变。窗口边框,标题栏,按钮这些都不是Surface对象的一部分。Surface对象是通过pygame.display.set_mode()函数返回的,被称作显示窗口。任何在这个对象里面画的东西都会被显示在窗口中当调用pygame.display.update()函数。
帧:通常游戏跑1秒30帧就足够了。
Colors
任何颜色都可以由颜色有红,绿,蓝三原色组合构成。在Pygame中,用含有三个整数的元组来代表颜色。如(R,G,B),比如这个元组的第一个值代表红色。0表示一点也没有红色,255表示这个颜色里面红色有最大值。通常称这个元组为RGB值。
可以这样定义一个颜色:
BLACK = (0,0,0)
下表是常见颜色值:
透明颜色
在每个颜色的最后可以跟一个值,被称做a值。它代表这个颜色的不透明程度。一般当你啊把一个像素点画进surface对象中,新的颜色会完全的替代先前的颜色。但是如果颜色有a值的话,你就是把这个颜色添加到先前的那个颜色值。比如绿色(0,255,0)现在如果我们添加了第四个整数a值,我们可以让其绿色看起来一半透明(0,255,0,128)。a值为255时表示完全不透明。也就是(0,255,0)与(0,255,0,255)看起来是一样的。a值为0说明颜色完全透明,此时是没有意义的,因为这个颜色完全透明而不可见。
为了作画时能用到透明颜色你必须创建一个surface对象通过convert_alpha()方法。下面的例子代码就是创建了一个surface对象使其透明色可以被显示
anotherSurface = DISPLAYSURFconvert_alpha()
anotherSurface这个对象可以被复制到DISPLAYSURF。重要的一点是不能使用透明颜色到不是通过调用convert_apha方法返回的Surface对象上,包括来自pygame.display.set_mode()返回的显示窗口对象。
pygame.Color对象
表示颜色有两种方法,一个使用三个整数或四个整数的元组,另外一个就是使用pygame.Color对象。可以通过调用pygame.Color()构造函数和传递3个或4个整数值来创建一个Color对象,然后用一个变量储存这个对象。就像下面这样。
myColor = pygame.Color(255,0,255,128)
在pygame里面任何画图函数都会让传递一个颜色参数值,可以通过元组或者Color对象来传递。所以我们有两种方法来创建一个颜色。
Rect对象
Pygame有两种方法表示矩形,就像表示颜色一样。第一种方法是使用4个整数值的元组。
这四个整数分别是:
左上角X坐标值
左上角Y坐标值
矩形的宽度(以像素点为单位)
矩形的高度(以像素点为单位)
第二种方法就是使用pygame.Rect对象。下面就是创建一个Rect对象的例子
myRect = pygame.Rect(10,20,200,300)
很方便的是,当我们创建好Rect对象后,关于这个矩形的其它一些参数就自动被计算好了。比如我们现在一个矩形X左上角坐标为10,而且有200像素宽度,那么我们可以通过Rect对象的right属性来获取X右上角坐标值,如myRect.right
下图是pygame.Rect对象提供的所有属性,这里假如Rect对象由myRect变量储存。
'make clean' 仍然无法重新制作后,'make: Nothing to do for' 提出,MacOS
如何解决''make clean'' 仍然无法重新制作后,''make: Nothing to do for'' 提出,MacOS
我当前的操作系统是 MacOS。我使用“zsh”作为我的默认 Shell。
我正在尝试编译一个名为“OpenCalphad”OpenCalphad 的软件。 (它是用 Fortran 编写的)。由于某些原因,我想重新编译它。所以我使用了 make clean
命令,然后使用了 make Makefile-MacOS
。但它显示 make: nothing to do for `Makefile-MacOS''。
谁能给我一些建议?非常感谢您的帮助!!
./configure & make & make install 知其所以然
最近一直在类 unix 系统上(Ubuntu 和 Mac OS)上调研第三方的一些开源库,要涉及到开源库的编译安装工作,接触最多的就是./configure & make & make install。
以前我们在 Windows 上进行开发的过程中,使用 Visual Studio 打开 sln 直接一个按钮就编译生成最终的可执行文件,具体的编译过程不得而知,而在类 unix 系统中这些过程都得自己来搞,麻烦是麻烦了些,但是能学到深层次的知识。
GNU 构建系统(GNU Build System)主要是指通过 autoconf、automake 和 libtool 这三个工具构建出来的软件结构体系,又名 Autotools。
GNU 构建系统是利用脚本和 make 程序在特定的平台上构建软件的过程。一般过程是./configure,make,make install 三部曲。这种方式成为一种习惯,被广泛使用。
一般 github 上的开源项目都提供了使用这套构建系统的入口,要么是使用 make 程序,要么是使用更高级点的 cmake。
下图(来自维基百科)展示了 GNU 构建体系编辑和使用的流程:浅蓝色矩形作为处理工具的输入,椭圆作为处理工具,最终的浅绿色矩形为最终的可执行文件输出。
最关键的一部就是生成 makefile 文件,之后调研 make & make install 只是常规的步骤。
其中 congure.ac、makefile.am 是库作者最好必须提供的。
在 ubuntu 上可以使用 sudo apt-get autoconf automake libtool 来安装 AutoTools。
接下来,我们来看两个开源库例子:
- gperftools:google 性能工具集合,包括 heap checker、heap profiler、tcmalloc 以及 cpu profiler。
里面有个 shell 脚本文件 autogen.h,用于产生 configure 脚本,进而使用 configure 脚本来生成 makefile 文件,autogen.h 内容如下:
仔细点看,不是使用的我们上面所说的 autoconf,而是 autoreconf,从最开始的一幅图可知,autoconf 接收 aclocal.m4 以及 configure.ac 作为输入,这事先需要使用 aclocal 工具来生成 aclocal.m4,是有个先后顺序的,如果 autoconf 接收的输入多了,先后顺序也就会增多,不方便管理。而此时 autoreconf 则显现出作用,它是一个辅助工具,可以将上述所述的先后顺序自动地以正确的顺序调用,而不用关心具体的细节,简直是方便了太多。
执行 autoconf(这里执行的是 autogen.sh 脚本)就生成了我们的 configure 脚本,直接调用./configure 就可以生成我们的 makefile 了,当然,如果需要定义一些细节,则可以在./configure 后添加选项参数(./configure -help 查看可以自定义哪些选项),最后就是 make&make install 了。
- thrift:apache 的 rpc 框架
提供的文件和上面的 gperftools 差不多,多了 CMakeLists.txt 告知我们可以使用 cmake 的方式来构建,但最终还是要生成 makefile 文件,这里有一个 shell 脚本文件 bootstrap.sh 需要重点看下:
可以看到,最后执行的 autoscan、aclocal、autoheader、autoconf、automake,说的还是最开始图中所说的那个流程,都能走到生成 makefile 的一步。
./configure & make & make install 三部曲,万变不离其宗!
上面通过梳理学习,了解了开源项目的大致文档结构,如果我们自己搞开源库,也可以这样来组织,可参考例解 autoconf 和 automake 生成 Makefile 文件。
./configure && make && make install
安装原码程序时,都要执行三步:1./configure
2 make
3 make install
他们是什么意思呀?
这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。
./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本
make是用来编译的,它从Makefile中读取指令,然后编译。
make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。
AUTOMAKE和AUTOCONF是非常有用的用来发布C程序的东西。如果你也写程序想使用AUTOMAKE和AUTOCONF,可以参考CNGNU.ORG上的相关文章。
http://www.gnu.org/software/automake/manual/html_node/Autotools-Introduction.html
./configure && make && make install详解
在Linux中利用源码包安装软件最重要的就是要仔细阅读安装包当中的README INSTALL两个说明文件,这两个文件会清楚的告诉你如何可以正确的完成这个软件的安装!
正常的编译安装/卸载:
关于卸载:
$ ./configure --prefix=/tmp/to_remove && make install
如果必须要用源码包安装,请在安装的时候指定--prefix安装目录,另外安装的时候请使用
make >& LOG_make &
make install >& LOG_install &
用于保存安装信息日志,这样需要卸载的时候方便查看哪些文件安装在了系统目录中,例如/usr/lib下的库文件。
常见的反安装target有: make uninstall/distclean/veryclean 等等。如果没有,
找一个临时目录重新安装一遍。比如
./configure --prefix=/tmp/to_remove && make install
然后遍历/tmp/to_remove里的文件,把你原来安装位置的文件都删除。
这样的坏处是有些文件夹还可能删除不了(分不清是系统的还是安装上的)
make 它从Makefile中读取指令,编译源码
make install 编译后的处理,比如把文件移动到指定目录
第一步:./configure
- 首先检查机器的一些配置和环境,系统的相关依赖。如果缺少相关依赖,脚本会停止执行,软件安装失败
- 根据之前检查环境和依赖的结果,生产Makefile文件(main job)
第二步:make
- make是Unix系统下的一个包。执行make命令需Makefile文件。make会根据Makefile文件中指令来安装软件
- Makefile文件中有许多标签,来表示不同的section。一般的,make会编译源代码并生成可执行文件,其实Makefile主要就是描述文件编译的相互依赖关系
第三步:make install
- 当执行make命令不加任何参数,程序就会按照Makefile的指令在相应的section间跳转并且执行相应的命令
- 加上install参数即执行make install时,程序只会执行install section处的命令。install section的指令会将make阶段生产的可执行文件拷贝到相应的地方,例如/usr/local/bin
- make clean 会删除上次make生产的obj文件以及可执行文件
关于Make Games with Python & Pygame (1)的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于'make clean' 仍然无法重新制作后,'make: Nothing to do for' 提出,MacOS、./configure & make & make install 知其所以然、./configure && make && make install、./configure && make && make install详解的相关信息,请在本站寻找。
本文标签: