pygame简单动态图 & 动态图片的移动
2014-01-22 13:39
274 查看
之前在学pygame 时看了一些博客(来自http://eyehere.net/2011/python-pygame-novice-professional-plant-zombie-1/),觉得写得挺不错的,这篇博客写了
如何在pygame里***动态效果。其中,用了植物大战僵尸的向日葵作为例子。这里有一个点,就是,他是用sprite的,而我的呢,是不用sprite,之所以要这样做,就是要看一下行不行,以及效果怎么样,然后,就是要了解一下原理。
这里的素材来自http://www.easyicon.net/。我p了一张这样的图:
代码是用python2.7.6和相应版本的pygame 写的,直接上代码:
动态效果出来了,移动方向键,就可以看到机器人移动了。不过,这里是看不到动态效果的,代码在这里下载
http://download.csdn.net/detail/kamsau/6873565, 对了,这个链接里的代码有个bug ,要在前面添加
如何在pygame里***动态效果。其中,用了植物大战僵尸的向日葵作为例子。这里有一个点,就是,他是用sprite的,而我的呢,是不用sprite,之所以要这样做,就是要看一下行不行,以及效果怎么样,然后,就是要了解一下原理。
这里的素材来自http://www.easyicon.net/。我p了一张这样的图:
代码是用python2.7.6和相应版本的pygame 写的,直接上代码:
# -*- coding: cp936 -*- import os,sys,pygame from pygame.locals import * size=(600,580) #对话框大小 white=(255,255,255) #游戏主角是机器人android class Android(): def __init__(self,img,rect,speed): #full_img 是整张图,imgs 是full_img的surface #rect 是机器人的位置,speed则是移动速度 self.ful_img = img self.imgs = [self.ful_img.subsurface(Rect((i*64.5,0),(64.5,64))) for i in xrange(11)] self.rect = rect self.speed = speed self.num = 0 def update(self,screen,press_keys): #根据按下的方向键来移动机器人 if press_keys[K_LEFT]: self.rect.left -= self.speed if self.rect.left <= 55: self.rect.left = 55 if press_keys[K_RIGHT]: self.rect.left += self.speed if self.rect.right >= 545: self.rect.right = 545 if press_keys[K_UP]: self.rect.top -= self.speed if self.rect.top <= 2: self.rect.top = 2 if press_keys[K_DOWN]: self.rect.top += self.speed if self.rect.bottom >= 578: self.rect.bottom = 578 #num是surface的编号,根据编号来轮流显示surface self.num += 1 if self.num%11 == 0: self.num = 0 screen.blit(self.imgs[self.num],self.rect) return 0 def game(): #使窗口居中 os.environ['SDL_VIDEO_CENTERED'] = '1' speed_android = 50 dwTime = 6 r_android = Rect(250,200,64.5,64) pygame.init() clock = pygame.time.Clock() screen = pygame.display.set_mode(size, 0, 32) android=pygame.image.load('11_androids.png').convert_alpha() #定义一个Android Andr = Android(android,r_android,speed_android) pygame.display.set_caption("Test") while True: screen.fill(white) for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() press_keys=pygame.key.get_pressed() Andr.update(screen,press_keys) pygame.display.update() clock.tick(dwTime) if __name__ == "__main__": game()运行,结果如图:
动态效果出来了,移动方向键,就可以看到机器人移动了。不过,这里是看不到动态效果的,代码在这里下载
http://download.csdn.net/detail/kamsau/6873565, 对了,这个链接里的代码有个bug ,要在前面添加
import sys不用sprite也是可以的,不过,可能在需要大量图片的情况下,sprite 会更好。
相关文章推荐
- pygame简单动态图 & 动态图片的移动
- 机器人眼中的图片上是固定的==有物体在上面移动==二张图片的对比即活动识别物==特简单的机器人动态识别技术.
- winForm pictureBox拖动图片and动态new 窗体&移动Panel窗体头
- pygame系列_第一个程序_图片代替鼠标移动
- iPhone开发【十三】动画效果之最简单的动画——动态加载图片
- ACM: 简单动态规划题 poj 2955
- js 鼠标移动显示图片的简单实例
- css 实现的简单的图片…
- Android动态图片选择的一种简单实现方式
- Android:实现最简单的单指移动、双指缩放的图片组件
- Django中static & media的简单配置及图片上传实践
- 10.android :动态图片制作
- 布局(图片随文字移动)简单实现
- 随鼠标移动的图片动态效果
- PHP动态加载html文件之后<head>中内容全部移动到<body>中导致页面头部存在空白
- Control Study -> 当鼠标在图片上移动时,放大图像区域
- Redis之简单动态字符串&链表
- ASP 简单结合kindeditor实现多图上传,可以自由移动图片顺序,删除
- Control Study -> 当鼠标在图片上移动时,放大图像区域
- 简单东西-java动态更改JLabel背景图片