Отрицателни координати в pygame

Какъв би бил най-добрият начин за използване на отрицателни координати в pygame?

В момента имам повърхност, която е 1,5 пъти по-голяма от първоначалната повърхност, след което всичко, което трябва да бъде начертано, се измества нагоре с определена сума (за да се гарантира, че отрицателните координати стават положителни) и се изчертава.

Има ли по-лесен/алтернативен начин да направите това?


person filinep    schedule 19.07.2010    source източник


Отговори (3)


Едно просто решение е да напишете функция за линейно картографиране от световните координати до координатите на екрана на pygame

def coord(x,y):
    "Convert world coordinates to pixel coordinates."
    return 320+170*x, 400-170*y

и го използвайте, когато рисувате всички световни обекти. Погледнете тук за пълен пример.

person lgwest    schedule 12.02.2013

Няма начин да преместите началото на повърхността от 0,0.

Приложете свой собствен клас за рисуване, който трансформира всички координати, предадени в пространството на повърхността.

person Aaron Digulla    schedule 19.07.2010
comment
Това е основно това, което имам. Създадох функции adj_up и adj_down - person filinep; 19.07.2010

Ако е подобна на ситуация с RPG карта, където имате координати на света и координати на екрана: използвайте функция, която преобразува света в локален и обратно.

Но не бях сигурен, че търсите имотите на Rect?

rect.bottomright = (width, height) # bottom right at window corner

Ако искате да използвате централни координати за блит, срещу горния ляв е (0,0)

ship.rect.center = (20, 30) # don't need to translate by adding w/2 to topleft

Вижте също: Rect.move_ip()

person ninMonkey    schedule 21.04.2011