竹内纱里奈和大战黑人_欧美成人黄色小视频_91福利影视_欧美在线观看视频网站_h色网站免费观看_97综合

極客小將

您現(xiàn)在的位置是:首頁 » python編程資訊

資訊內(nèi)容

用python和pygame游戲編程入門-向量類的使用

極客小將2020-10-28-
上一節(jié)中我們學(xué)習(xí)并明白了什么是向量,向量之間如何進(jìn)行計(jì)算。現(xiàn)在已經(jīng)有人為我們寫好了一個(gè)可以直接使用的向量類-》在Python3.x下可用的向量類源碼

用python和pygame游戲編程入門-向量類的使用

上一節(jié)中我們學(xué)習(xí)并明白了什么是向量,向量之間如何進(jìn)行計(jì)算。現(xiàn)在已經(jīng)有人為我們寫好了一個(gè)可以直接使用的向量類-》在Python3.x下可用的向量類源碼

將代碼保存到本地,并命名為Vec2d.py

有了這個(gè)類,我們就來編寫一個(gè)簡(jiǎn)單得測(cè)試程序,看看效果:

from Vec2d import *
A = Vec2d(10.0, 20.0)
B = Vec2d(30.0, 35.0)
C=Vec2d(-10, 5)
AB = A+B
print(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))
'''
運(yùn)行結(jié)果:
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)
'''

那么向量道底有什么用,我們來看一個(gè)實(shí)戰(zhàn)的例子,這個(gè)程序?qū)崿F(xiàn)的效果是魚不停的在鼠標(biāo)周圍游動(dòng),若即若離,在沒有到達(dá)鼠標(biāo)時(shí),加速運(yùn)動(dòng),超過以后則減速。因而魚會(huì)在鼠標(biāo)附近晃動(dòng)。

background_image_filename = './img/Underwater.png'
sprite_image_filename = './img/fish-b.png'

import pygame
from pygame.locals import *
from sys import exit
from 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
 
    # 參數(shù)前面加*意味著把列表或元組展開
    destination = Vec2d( *pygame.mouse.get_pos() ) - Vec2d( *sprite.get_size() )/2
    # 計(jì)算魚兒當(dāng)前位置到鼠標(biāo)位置的向量
    vector_to_mouse = destination - position
    # 向量規(guī)格化
    vector_to_mouse.normalized()

    # 這個(gè)heading可以看做是魚的速度,但是由于這樣的運(yùn)算,魚的速度就不斷改變了
    # 在沒有到達(dá)鼠標(biāo)時(shí),加速運(yùn)動(dòng),超過以后則減速。因而魚會(huì)在鼠標(biāo)附近晃動(dòng)。
    heading = heading + (vector_to_mouse * 0.001)    
 
    position += heading * time_passed_seconds
    pygame.display.update()

雖然這個(gè)例子里的計(jì)算有些讓人看不明白,但是很明顯heading的計(jì)算是關(guān)鍵,如此復(fù)雜的運(yùn)動(dòng),使用向量居然兩句話就搞定了。


本站部分內(nèi)容轉(zhuǎn)載自網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系管理員及時(shí)刪除。

預(yù)約試聽課

已有385人預(yù)約都是免費(fèi)的,你也試試吧...

主站蜘蛛池模板: 精品久久久久久久久久久院品网 | 国产一区日韩 | 国产精品久久久久免费 | 高清二区 | 国产精品欧美精品 | 国产一区二区三区视频在线 | 国产一区精品 | 久久国产精 | 日韩高清在线一区 | 久久久久国产精品 | 色区综合| 黄色片在线看 | 日韩精品一区二区三区中文在线 | 国产综合第一页 | 日本欧美三级 | 国产精品福利片 | 国产高清在线不卡 | 久久久观看 | 一级淫片免费 | 欧美伦乱| 久久九九久久九九 | 欧美一二三四 | 国产一在线 | 欧美综合自拍 | 亚洲一区二区久久久 | 可以免费看av的网站 | 美女视频黄的免费 | 五月天婷婷社区 | 精品久久久久久久人人人人传媒 | 在线视频99 | 亚洲一区二区三区在线电影 | 欧美三级成人 | 国产成人在线电影 | 少妇一区二区三区 | 国产资源福利 | a√毛片 | 欧美激情综合五月色丁香小说 | 性xxxx| av资源在线免费观看 | 欧美日韩国产高清视频 | 国产精品一区二区久久 |