Python实现导弹自动追踪
点击上方 蓝字 关注我们!
Java,Python,C/C++,Linux,PHP,Go,C#,QT,大数据,算法,软件教程,前端,简历,毕业设计等分类,资源在不断更新中... 点击领取!








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 #导弹的初始发射位置velocity=800 #导弹速度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() #获取鼠标位置,鼠标就是需要打击的目标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) #弧度转角度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 #导弹的初始发射位置velocity=800 #导弹速度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() #获取鼠标位置,鼠标就是需要打击的目标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) #弧度转角度=(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)) #鼠标用一个红色*代替pygame.display.update()以上便是用Python模拟导弹自动追踪的代码实例。 如果文章对你有帮助,欢迎转发/点赞/收藏~
往期推荐

END
若觉得文章对你有帮助,随手转发分享,也是我们继续更新的动力。
长按二维码,扫扫关注哦
✬「C语言中文网」官方公众号,关注手机阅读教程 ✬
目前收集的资料包括: Java,Python,C/C++,Linux,PHP,go,C#,QT,git/svn,人工智能,大数据,单片机,算法,小程序,易语言,安卓,ios,PPT,软件教程,前端,软件测试,简历,毕业设计,公开课 等分类,资源在不断更新中...
评论

