这次开始是真正的游戏编程,以前都是基础的基础啊。
电脑游戏总是倾向于图像化的,尽量的要看得到听得到(现在的技术基本还局限于这两个感官),游戏开发者会花无数的力气在图像上,提升图像效果是游戏开发永恒的话题。这几次主要讲述游戏中的视觉。
像素的威力
凑近显示器,你能看到图像是由一个一个点构成,这就是像素。至于屏幕分辨率的意义,也就不用多说了吧,一个1280×1024的显示器,有着1310720个像素,一般的32为RGB系统,每个像素可以显示16.7百万种颜色(可以看我的另一篇一张白纸可以承载多少重的文章),我们可以写一个小程序来显示这么多的颜色~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import pygame pygame.init() screen = pygame.display.set_mode((640, 480)) all_colors = pygame.Surface((4096,4096), depth=24) for r in xrange(256): print r+1, "out of 256" x = (r&15)*256 y = (r>>4)*256 for g in xrange(256): for b in xrange(256): all_colors.set_at((x+g, y+b), (r, g, b)) pygame.image.save(all_colors, "allcolors.bmp") |
运行可能有些慢,你应该等生成bmp图像文件,打开看看效果吧(其实就是我刚刚提到的博文里的图片)。
色彩的威力
色彩是一个很有趣的话题,比如把蓝色和黄色混合产生绿色,事实上你可以用红黄蓝混合出所有的颜色(光学三原色),电脑屏幕上的三原色是红绿蓝(RGB),要想更深刻的理解这个东西,你得学习一下(就看看李涛的PhotoShop讲座吧,VeryCD上有下的,讲的还是很清楚的)~
稍有点经验的图像设计者应该看到RGB的数值就能想象出大概的颜色,我们来用一个Python脚本加强这个认识。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
#!/usr/bin/env python import pygame from pygame.locals import * from sys import exit pygame.init() screen = pygame.display.set_mode((640, 480), 0, 32) def create_scales(height): red_scale_surface = pygame.surface.Surface((640, height)) green_scale_surface = pygame.surface.Surface((640, height)) blue_scale_surface = pygame.surface.Surface((640, height)) for x in range(640): c = int((x/640.)*255.) red = (c, 0, 0) green = (0, c, 0) blue = (0, 0, c) line_rect = Rect(x, 0, 1, height) pygame.draw.rect(red_scale_surface, red, line_rect) pygame.draw.rect(green_scale_surface, green, line_rect) pygame.draw.rect(blue_scale_surface, blue, line_rect) return red_scale_surface, green_scale_surface, blue_scale_surface red_scale, green_scale, blue_scale = create_scales(80) color = [127, 127, 127] while True: for event in pygame.event.get(): if event.type == QUIT: ss="crayon-st">if event.type == QUIT: >
像素的威力凑近显示器,你能看到图像是由一个一个点构成,这就是像素。至于屏幕分辨率的意义,也就不用多说了吧,一个1280×1024的显示器,有着1310720个像素,一般的32为RGB系统,每个像素可以显示16.7百万种颜色(可以看我的另一篇一张白纸可以承载多少重的文章),我们可以写一个小程序来显示这么多的颜色~
运行可能有些慢,你应该等生成bmp图像文件,打开看看效果吧(其实就是我刚刚提到的博文里的图片)。 色彩的威力色彩是一个很有趣的话题,比如把蓝色和黄色混合产生绿色,事实上你可以用红黄蓝混合出所有的颜色(光学三原色),电脑屏幕上的三原色是红绿蓝(RGB),要想更深刻的理解这个东西,你得学习一下(就看看李涛的PhotoShop讲座吧,VeryCD上有下的,讲的还是很清楚的)~ 稍有点经验的图像设计者应该看到RGB的数值就能想象出大概的颜色,我们来用一个Python脚本加强这个认识。
|