Pygame에서 주어진 좌표로 개체의 점진적인 이동을 구현할 수 있습니까?

미하일 폴리 야코프

다음은 내가 시도한 샘플 코드입니다.

x[0] = 10
y[0]=10
x[1] = 40
y[1]=40
width=10
height=10
pygame.draw.rect(win,(0,0,255),(x[1],y[1],width,height))
pygame.draw.rect(win,(0,0,255),(x[0],y[0],width,height))
Rabbid76

응용 프로그램 루프에서 위치를 약간 변경해야합니다.

시작 위치 ( start), 끝 위치 ( end) 및 속도 ( speed)를 정의합니다.

start = 10, 10
end = 40, 40
speed = 1

현재 위치를 초기화합니다. 현재 위치 에서 애플리케이션 루프 의 끝 위치 ( dx, dy) 까지 벡터를 계산하고 목표 방향의 속도로 현재 위치를 변경합니다.

pos = start[:]
while run:
    # [...]

    dx = end[0] - pos[0]
    dy = end[1] - pos[1]
    dist = math.sqrt(dx*dx + dy*dy)
    if dist > speed:
        pos = pos[0] + dx*speed/dist, pos[1] + dy*speed/dist

참고 math.hypot계산 유클리드 거리(dx/dist, dy/dist)A는 단위 벡터 (단위 벡터 길이를 갖는 1).

pos모든 프레임 의 현재 위치 ( )에 개체를 그립니다 .

pygame.draw.rect(win,(0,0,255),(round(pos[0]), round(pos[1]), width, height))

직책 목록이있는 경우 :

x = [60, 140, 140, 60]
y = [60, 140, 60,  140]

다음 startend목록의 위치에서 설정해야합니다. 목록 색인 current_i을 사용하여 현재 시작 위치를 추적합니다. 개체가 현재 대상 위치 ( end)에 도달 한 경우 인덱스를 늘립니다 .
예를 참조하십시오.

import pygame
import math

pygame.init()
win = pygame.display.set_mode((500, 500))
clock = pygame.time.Clock()

x = [60, 140, 140, 60]
y = [60, 140, 60,  140]

width, height = 10, 10
speed = 1
current_i = 0
pos = x[current_i], y[current_i]

run = True
while run:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    start = x[current_i], y[current_i]
    end = x[current_i % len(x)], y[current_i % len(y)], 
    dx = end[0] - pos[0]
    dy = end[1] - pos[1]
    dist = math.hypot(dx, dy)
    if dist > speed:
        pos = pos[0] + dx*speed/dist, pos[1] + dy*speed/dist
    else:
        pos = end[:]
        current_i = current_i + 1 if current_i < len(x)-1 else 0

    win.fill(0)
    pygame.draw.rect(win,(0,0,255),(round(pos[0]), round(pos[1]), width, height))
    pygame.display.flip()

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

주어진 HashSet 구현에 의해 지원되는 MyHashMap을 구현할 수 있습니까?

분류에서Dev

함수에서 Substring에서 이진 검색을 구현하고 Comparator에서 두 개의 값을 어떻게 구현할 수 있습니까?

분류에서Dev

좌표 만 알고있을 때 Tkinter 캔버스에서 개체를 어떻게 이동할 수 있습니까?

분류에서Dev

R의 주어진 열에서 NA 인 행 이름을 어떻게 출력 할 수 있습니까?

분류에서Dev

정규식을 사용하여 Linux의 주어진 파일에 인터넷 웹 주소가있는 모든 줄을 어떻게 표시 할 수 있습니까?

분류에서Dev

주어진 IP 주소 2 개에서 IP 수를 쉽게 계산할 수있는 방법이 있습니까?

분류에서Dev

MapView에서 주어진 두 좌표 사이의 최단 경로를 어떻게 얻습니까?

분류에서Dev

주어진 그래프 G = (V, E)에 대해 어떻게 O (E + V) 시간으로 인접 목록 표현을 정렬 할 수 있습니까?

분류에서Dev

Visual Studio Online이 주어진 프로젝트에서 TFS와 동기화 할 수 있습니까?

분류에서Dev

$ project는 문서 JSON에서 주어진 필드의 모든 하위 필드를 상위 수준으로 이동할 수 있습니까?

분류에서Dev

주어진 개체를 Kotlin에서 숫자로 포맷 할 수 없습니다.

분류에서Dev

주어진 장소의 소수를 구할 수 있습니까?

분류에서Dev

iPhone 사진 편집 서랍을 어떻게 구현할 수 있습니까?

분류에서Dev

주어진 숫자 사이의 모든 숫자로 배열을 어떻게 확장 할 수 있습니까?

분류에서Dev

Azure AD 애플리케이션에 점진적 동의를 구현할 수 있나요?

분류에서Dev

주어진 값의 BST 조회에서이 특정 값을 몇 가지 방법으로 볼 수 있습니까?

분류에서Dev

WPF Bezier 곡선 제어점의 X 및 Y 좌표를 개별적으로 애니메이션 할 수 있습니까?

분류에서Dev

주어진 범위에서 대부분의 십진수로 끝나는 부동 소수점 값을 어떻게 찾습니까?

분류에서Dev

주어진 / 언제 구성 내부에서 시작하여 다음 반복으로 어떻게 이동할 수 있습니까?

분류에서Dev

주어진 길이의 표현 수

분류에서Dev

R에서 주어진 시점에 대한 기간을 어떻게 계산할 수 있습니까?

분류에서Dev

주어진 합계 또는 평균을 갖는 범위에서 N 개의 임의 정수를 생성하는 효율적인 방법이 있습니까?

분류에서Dev

Mercurial에 주어진 파일을 도입 한 개정판을 어떻게 쿼리 할 수 있습니까?

분류에서Dev

두 점 (x1, y1) (x2, y2)이 주어지면 주어진 점 사이의 선에 고르게 놓여있는 N 개의 다른 점을 어떻게 계산할 수 있습니까?

분류에서Dev

유니 코드 문자열의 십진수 표현을 어떻게 인쇄 할 수 있습니까?

분류에서Dev

주어진 수학 함수에서 주어진 간격에 몇 개의 0이 있는지 확인

분류에서Dev

자바 스크립트 정규식에서 미리보기 표현식에 주어진 패턴에서 캡처 그룹을 사용할 수 있습니까?

분류에서Dev

ABAP 객체에서 채워진 구조 / 테이블을 클래스 상수로 어떻게 정의 할 수 있습니까?

분류에서Dev

R의 X 및 Y 좌표. 주어진 지점에서 특정 반경에있는 데이터를 제거하는 확실한 방법이 있습니까?

Related 관련 기사

  1. 1

    주어진 HashSet 구현에 의해 지원되는 MyHashMap을 구현할 수 있습니까?

  2. 2

    함수에서 Substring에서 이진 검색을 구현하고 Comparator에서 두 개의 값을 어떻게 구현할 수 있습니까?

  3. 3

    좌표 만 알고있을 때 Tkinter 캔버스에서 개체를 어떻게 이동할 수 있습니까?

  4. 4

    R의 주어진 열에서 NA 인 행 이름을 어떻게 출력 할 수 있습니까?

  5. 5

    정규식을 사용하여 Linux의 주어진 파일에 인터넷 웹 주소가있는 모든 줄을 어떻게 표시 할 수 있습니까?

  6. 6

    주어진 IP 주소 2 개에서 IP 수를 쉽게 계산할 수있는 방법이 있습니까?

  7. 7

    MapView에서 주어진 두 좌표 사이의 최단 경로를 어떻게 얻습니까?

  8. 8

    주어진 그래프 G = (V, E)에 대해 어떻게 O (E + V) 시간으로 인접 목록 표현을 정렬 할 수 있습니까?

  9. 9

    Visual Studio Online이 주어진 프로젝트에서 TFS와 동기화 할 수 있습니까?

  10. 10

    $ project는 문서 JSON에서 주어진 필드의 모든 하위 필드를 상위 수준으로 이동할 수 있습니까?

  11. 11

    주어진 개체를 Kotlin에서 숫자로 포맷 할 수 없습니다.

  12. 12

    주어진 장소의 소수를 구할 수 있습니까?

  13. 13

    iPhone 사진 편집 서랍을 어떻게 구현할 수 있습니까?

  14. 14

    주어진 숫자 사이의 모든 숫자로 배열을 어떻게 확장 할 수 있습니까?

  15. 15

    Azure AD 애플리케이션에 점진적 동의를 구현할 수 있나요?

  16. 16

    주어진 값의 BST 조회에서이 특정 값을 몇 가지 방법으로 볼 수 있습니까?

  17. 17

    WPF Bezier 곡선 제어점의 X 및 Y 좌표를 개별적으로 애니메이션 할 수 있습니까?

  18. 18

    주어진 범위에서 대부분의 십진수로 끝나는 부동 소수점 값을 어떻게 찾습니까?

  19. 19

    주어진 / 언제 구성 내부에서 시작하여 다음 반복으로 어떻게 이동할 수 있습니까?

  20. 20

    주어진 길이의 표현 수

  21. 21

    R에서 주어진 시점에 대한 기간을 어떻게 계산할 수 있습니까?

  22. 22

    주어진 합계 또는 평균을 갖는 범위에서 N 개의 임의 정수를 생성하는 효율적인 방법이 있습니까?

  23. 23

    Mercurial에 주어진 파일을 도입 한 개정판을 어떻게 쿼리 할 수 있습니까?

  24. 24

    두 점 (x1, y1) (x2, y2)이 주어지면 주어진 점 사이의 선에 고르게 놓여있는 N 개의 다른 점을 어떻게 계산할 수 있습니까?

  25. 25

    유니 코드 문자열의 십진수 표현을 어떻게 인쇄 할 수 있습니까?

  26. 26

    주어진 수학 함수에서 주어진 간격에 몇 개의 0이 있는지 확인

  27. 27

    자바 스크립트 정규식에서 미리보기 표현식에 주어진 패턴에서 캡처 그룹을 사용할 수 있습니까?

  28. 28

    ABAP 객체에서 채워진 구조 / 테이블을 클래스 상수로 어떻게 정의 할 수 있습니까?

  29. 29

    R의 X 및 Y 좌표. 주어진 지점에서 특정 반경에있는 데이터를 제거하는 확실한 방법이 있습니까?

뜨겁다태그

보관