프로그래밍 질문 있습니다 ( glow script )

조회수 950회

안녕하세요. 최근 학교에서 파이썬을 배우고 있는 학생입니다.

수업시간에

투명한 상자안에 랜덤한 위치로 공을 만드는

box(size = vec(42,42,42), opacity = 0.4)
import random
for i in range(100) :
rate(10)
x = random.randint(-20,20)
y = random.randint(-20,20)
z = random.randint(-20,20)
r = random.randint(0,100) / 100
g = random.randint(0,100) / 100
b = random.randint(0,100) / 100
sphere(pos = vec(x,y,z), color = vec(r,g,b), opacity = r)

이런 예제와

자유낙하 운동을 표현하는

a = sphere(color = vec(1,0.4,0.6),make_trail = True, pos = vec(0,10,0))
a.v = vec(2,5,0)
box(size = vec(40,1,20), color = vec(0.2,0.9,0.4))
while True : # 조건이 참(True)일 동안 반복!
    rate(100) # 1초에 100번 반복
    a.pos = a.pos + 0.01 * a.v
    if a.pos.y <= 1.5 :
        a.v.y = -a.v.y
    else :
        a.v.y = a.v.y + 0.01 * -9.8

이런 예제를 배웠는데, 이 둘을 합쳐 투명한 상자안에서 여러 구들이 운동하면서 벽에 닿으면 튕기는? 그런걸 만들어보고 싶은데 제가 초심자다보니 어떤 식으로 코드를 짤지 감이 안옵니다. 도와주실 능력자 분을 찾습니다. 또한 눈높이 설명까지 해주신다면 더할나위 없이 감사하겠습니다..

  • 진짜 아무생각 없이 막 던져보는 얘기긴 한데요... 벽에 닿는 순간 자유낙하의 방향을 계산해서 방향만 바꿔서 계속 자유낙하하도록 처리하면 되지 않을까요? 엽토군 2021.6.14 12:15

1 답변

  • import random
    import time
    Obj = []
    
    class C():
        def __init__(self, name):
            self.number = random.randint(0,100)
            self.name = name
            self.act = 1
    
        def move(self):
            self.number = random.randint(0,100)
            print(f'{self.name} .. {self.number}')
    
    def all_move(object):
        for i in object:
            i.move()
        print('\n')
    
    def make_object(num):
        for i in num:
            t = C(i)
            Obj.append(t)
    
    r = ['one','two','three','four']
    make_object(r)
    
    while(True):
        all_move(Obj)
        time.sleep(0.5)
    

    이런식으로 "구체"를 객체화 시키면 어떨까용

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)