https://www.gravatar.com/avatar/8e10df0bad4c56b3464cd715f8d96c46?s=240&d=mp

Pygame第5章 让画面动起来

这一章描述如何以一种可以预测的方式在屏幕上移动对象,和如何使运动在其他人电脑里面一致。

理解帧率

我们需要知道计算机游戏中关于运动的第一件事情就是没有什么东西真正在移动。电脑屏幕或电视机展示给我们一系列图片,当两张图片间隔时间够短时,我们的大脑将这些图片混合在一起从而制造了流畅运动的假象。一张图片称为一帧,FPS(Frame Per Second)是每秒的帧数,也就是帧率。产生流畅运动需要的帧数,因人而异。

整理代码片段

根据pid获取进程名

void get_process_name_by_pid(int pid, char *name)
{
    char buf[256] = {0};
    char path[256] = {0};

    sprintf(buf, "/proc/%d/exe", pid);
    readlink(buf, path, sizeof(path));

    char *filename = basename(path);
    strcpy(name, filename);
}

C语言变长数组

C99标准才有的特性

void test_vla(const char *str)
{
    int len = strlen(str);

    char a[len + 1];
    memset(a, 0, sizeof(a));

    strcpy(a, str);

    printf("%s\n", a);
}

确保路径存在

bool besure_path(const char *pathname) {
    int len = strlen(pathname);

    char buffer[len + 1];
    memset(buffer, 0, sizeof(buffer));

    strcpy(buffer, pathname);

    for (int i = 0; i < len; ++i) {
        if (buffer[i] == '/') {
            buffer[i] = 0;

            if (access(buffer, F_OK) < 0) {
                if (mkdir(buffer, 0755) < 0) {
                    return false;
                }
            }

            buffer[i] = '/';
        }
    }

    return true;
}

计算一个数字二进制格式1的个数

int count_bit(int n) {
    int count = 0;

    while (n != 0) {
        ++count;
        n &= n - 1;
    }

    return count;
}

Pygame第4章 创建视觉

电脑游戏倾向于视觉上很自然,游戏开发者花费很多精力在处理图像和提升视觉效果来创建最令人愉快的体验上。

像素的威力

显示器里的一个独立的点称为一个图像单元或像素。如果一个显示器分辨率为1280x1024,则像素总数为1310720。一个屏幕上像素越多,则图片的质量越好。典型的家用电脑可以显示的颜色数量最高为16.7百万个。如果你想显示每一种颜色,你需要一个分辨率4096x4096的显示器。

Pygame第3章 Pygame介绍

安装Pygame

Ubuntu下安装Pygame:

sudo apt-get install python-pygame

装好后,查看Pygame版本:

>>> import pygame
>>> print pygame.ver

使用Pygame

Pygame有很多模块。每一个设备都有一个对应的模块。Pygame模块一览: