用python和pygame游戏编程入门-向量类的使用,python向量运算,
用python和pygame游戏编程入门-向量类的使用,python向量运算,
上一节中我们学习并明白了什么是向量,向量之间如何进行计算。现在已经有人为我们写好了一个可以直接使用的向量类-》在Python3.x下可用的向量类源码
将代码保存到本地,并命名为Vec2d.py
有了这个类,我们就来编写一个简单得测试程序,看看效果:
from Vec2d import *A = Vec2d(10.0, 20.0)B = Vec2d(30.0, 35.0)C=Vec2d(-10, 5)AB = A+Bprint(AB.normalized())print ("Vector AB is", AB)print ("AB * 2 is", AB * 2)print ("AB / 2 is", AB / 2)print ("AB + (–10, 5) is", (AB +C))'''运行结果:Vector AB is Vec2d(40.0, 55.0)AB * 2 is Vec2d(80.0, 110.0)AB / 2 is Vec2d(20.0, 27.5)AB + (–10, 5) is Vec2d(30.0, 60.0)'''
那么向量道底有什么用,我们来看一个实战的例子,这个程序实现的效果是鱼不停的在鼠标周围游动,若即若离,在没有到达鼠标时,加速运动,超过以后则减速。因而鱼会在鼠标附近晃动。
background_image_filename = './img/Underwater.png'sprite_image_filename = './img/fish-b.png'import pygamefrom pygame.locals import *from sys import exitfrom Vec2d import * pygame.init() screen = pygame.display.set_mode((640, 480), 0, 32) background = pygame.image.load(background_image_filename).convert()sprite = pygame.image.load(sprite_image_filename).convert_alpha() clock = pygame.time.Clock() position = Vec2d(100.0, 100.0)heading = Vec2d(0,0) while True: for event in pygame.event.get(): if event.type == QUIT: exit() screen.blit(background, (0,0)) screen.blit(sprite, position) time_passed = clock.tick() time_passed_seconds = time_passed / 1000.0 # 参数前面加*意味着把列表或元组展开 destination = Vec2d( *pygame.mouse.get_pos() ) - Vec2d( *sprite.get_size() )/2 # 计算鱼儿当前位置到鼠标位置的向量 vector_to_mouse = destination - position # 向量规格化 vector_to_mouse.normalized() # 这个heading可以看做是鱼的速度,但是由于这样的运算,鱼的速度就不断改变了 # 在没有到达鼠标时,加速运动,超过以后则减速。因而鱼会在鼠标附近晃动。 heading = heading + (vector_to_mouse * 0.001) position += heading * time_passed_seconds pygame.display.update()
虽然这个例子里的计算有些让人看不明白,但是很明显heading的计算是关键,如此复杂的运动,使用向量居然两句话就搞定了。
本站内容未经许可,禁止任何网站及个人进行转载。
相关内容
- 推荐一款Python开源库,技术人必备的造数据神器!,
- 快速指南:如何创建基于Python的爬虫,python为什么叫爬
- Python大神用的贼溜,9个实用技巧分享给你,拉关系套近
- 用python和pygame游戏编程入门-认识向量,python怎么运行p
- 8个必备的Python GUI库,python常用库有哪些
- 适合Python入门的8款强大工具!,c语言入门自学
- 用Python进行多元线性回归分析(附代码),多元线性回
- 6个案例手把手教你用Python和OpenCV进行图像处理,男生手
- 这个Python知识点,90% 的人都得挂~,python的基本知识点
- 领导给了一堆无序杂乱的数据,我写了个Python自动化脚
评论关闭