Python實現(xiàn)導(dǎo)彈自動追蹤






import pygame,sysfrom math import *pygame.init()screen=pygame.display.set_mode((800,700),0,32)missile=pygame.image.load('element/red_pointer.png').convert_alpha()x1,y1=100,600 #導(dǎo)彈的初始發(fā)射位置velocity=800 #導(dǎo)彈速度time=1/1000 #每個時間片的長度clock=pygame.time.Clock()old_angle=0while True:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()clock.tick(300)x,y=pygame.mouse.get_pos() #獲取鼠標(biāo)位置,鼠標(biāo)就是需要打擊的目標(biāo)distance=sqrt(pow(x1-x,2)+pow(y1-y,2)) #兩點距離公式section=velocity*time #每個時間片需要移動的距離sina=(y1-y)/distancecosa=(x-x1)/distanceangle=atan2(y-y1,x-x1) #兩點線段的弧度值x1,y1=(x1+section*cosa,y1-section*sina)d_angle = degrees(angle) #弧度轉(zhuǎn)角度screen.blit(missile, (x1-missile.get_width(), y1-missile.get_height()/2))dis_angle=d_angle-old_angle #dis_angle就是到下一個位置需要改變的角度old_angle=d_angle #更新初始角度pygame.display.update()

missiled = pygame.transform.rotate(missile, -(d_angle))screen.blit(missiled, (x1-missile.get_width(), y1-missile.get_height()/2))







screen.blit(missiled, (x1-width+(x1-C[0]),y1-height/2+(y1-C[1])))

import pygame,sysfrom math import *pygame.init()font1=pygame.font.SysFont('microsoftyaheimicrosoftyaheiui',23)textc=font1.render('*',True,(250,0,0))screen=pygame.display.set_mode((800,700),0,32)missile=pygame.image.load('element/rect1.png').convert_alpha()height=missile.get_height()width=missile.get_width()pygame.mouse.set_visible(0)=100,600 #導(dǎo)彈的初始發(fā)射位置velocity=800 #導(dǎo)彈速度time=1/1000 #每個時間片的長度clock=pygame.time.Clock()A=()B=()C=()while True:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()clock.tick(300)=pygame.mouse.get_pos() #獲取鼠標(biāo)位置,鼠標(biāo)就是需要打擊的目標(biāo)distance=sqrt(pow(x1-x,2)+pow(y1-y,2)) #兩點距離公式section=velocity*time #每個時間片需要移動的距離sina=(y1-y)/distancecosa=(x-x1)/distanceangle=atan2(y-y1,x-x1) #兩點間線段的弧度值fangle=degrees(angle) #弧度轉(zhuǎn)角度=(x1+section*cosa,y1-section*sina)missiled=pygame.transform.rotate(missile,-(fangle))if 0<=-fangle<=90:A=(width*cosa+x1-width,y1-height/2)B=(A[0]+height*sina,A[1]+height*cosa)if 90<-fangle<=180:A = (x1 - width, y1 - height/2+height*(-cosa))B = (x1 - width+height*sina, y1 - height/2)if -90<=-fangle<0:A = (x1 - width+missiled.get_width(), y1 - height/2+missiled.get_height()-height*cosa)B = (A[0]+height*sina, y1 - height/2+missiled.get_height())if -180<-fangle<-90:A = (x1-width-height*sina, y1 - height/2+missiled.get_height())B = (x1 - width,A[1]+height*cosa )C = ((A[0] + B[0]) / 2, (A[1] + B[1]) / 2)screen.fill((0,0,0))(x1-width+(x1-C[0]),y1-height/2+(y1-C[1])))(x,y)) #鼠標(biāo)用一個紅色*代替pygame.display.update()以上便是用Python模擬導(dǎo)彈自動追蹤的代碼實例。 如果文章對你有幫助,歡迎轉(zhuǎn)發(fā)/點贊/收藏~
_往期文章推薦_
模擬“嫦娥五號”探月小游戲
如需了解付費精品課程及教學(xué)答疑服務(wù) 請在Crossin的編程教室內(nèi)回復(fù): 666
評論
圖片
表情
