Python Pygame 物理引擎 对一个小球施力

本文介绍了如何使用Python库pygame创建一个简单的游戏,其中包含一个可移动的球体,通过鼠标点击施加力并计算其运动。代码展示了速度和加速度向量的处理以及基本的游戏循环和事件处理。
摘要由CSDN通过智能技术生成
import pygame


pygame.init()
screen = pygame.display.set_mode((1280,720))
clock = pygame.time.Clock()
running = True


class Ball:
    def __init__(self,p,v,m) -> None:
        self.p = p
        self.m = m
        self.v = v
        self.a = [0,0]
 

    def force(self, li):
        self.a[0] = li[0] / self.m
        self.a[1] = li[1] / self.m

        self.v[0] += self.a[0]
        self.v[1] += self.a[1]

    def update(self):
        self.p[0] = self.p[0] + self.v[0]
        self.p[1] = self.p[1] + self.v[1]

    


    def draw(self,surface:pygame.Surface):
        pygame.draw.circle(surface,"red",(self.p[0],self.p[1]),8)



ball = Ball(
                p = [640,360],
                v = [0,0],
                m = 100
            )



while running:
    clock.tick(120)



    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        
        if event.type == pygame.MOUSEBUTTONDOWN:
            j=pygame.mouse.get_pos() 

            xx = j[0] - ball.p[0]
            yy = j[1] - ball.p[1]
            li = [50*(xx/(xx**2+yy**2)**0.5),50*(yy/(xx**2+yy**2)**0.5)]
            
            ball.force(li)


    ball.update()
    screen.fill('black')
    ball.draw(screen)

    pygame.display.update()

pygame.quit()

把速度分为x 轴和y 轴上的速度的矢量和,加速度也一样。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值