Форум сайта python.su
0
Мучаю PyGame и себя. Не могу понять как работает функция pygame.transform.rotate. Инструкцию прочитал
pygame.transform.rotate
rotate an image
pygame.transform.rotate(Surface, angle): return Surface
Unfiltered counterclockwise rotation. The angle argument represents degrees and can be any floating point value. Negative angle amounts will rotate clockwise.
Unless rotating by 90 degree increments, the image will be padded larger to hold the new size. If the image has pixel alphas, the padded area will be transparent. Otherwise pygame will pick a color that matches the Surface colorkey or the topleft pixel value.
Прикреплённый файлы:
enigma.jpg (22,1 KБ)
Офлайн
1
Тоже долго мучался с этим методом - место вращения получалось искривление пространства ))
Само вращение нужно совершать с копией спрайта. Вообщем смотри
import pygame pygame.init() pygame.key.set_repeat(1, 1) display = pygame.display.set_mode((640, 480)) org_spriteImg = pygame.image.load(u'1.jpeg').convert_alpha() spriteImg = org_spriteImg spriteRect = org_spriteImg.get_rect() spriteRect.center = (320, 240) angle = 0 run = 1 while run: display.fill((255, 255, 255)) display.blit(spriteImg, spriteRect) pygame.display.flip() for event in pygame.event.get(): if event.type == pygame.QUIT: run = 0 if event.type == pygame.KEYDOWN: if event.key == pygame.K_1: run = 0 if event.key == pygame.K_UP: spriteRect = spriteRect.move(0, -1) elif event.key == pygame.K_DOWN: spriteRect = spriteRect.move(0, 1) if event.key == pygame.K_LEFT: angle += 1 spriteImg = pygame.transform.rotate(org_spriteImg, angle) elif event.key == pygame.K_RIGHT: angle -= 1 spriteImg = pygame.transform.rotate(org_spriteImg, angle)
elif event.key == pygame.K_RIGHT: angle -= 1 spriteImg = pygame.transform.rotate(org_spriteImg, angle) spriteRect = spriteImg.get_rect() spriteRect.center = (320, 240)
Отредактировано Frog-king (Дек. 8, 2012 15:03:52)
Офлайн
0
Там каким лучше метдом пользоваться , FroG-King? Вращение вокруг центра? И почему в инструкции написано что функция
screen.blit выводит на определеную координату левый-верхний угол rectangla , но я проверял в программе выводит центр прямоугольника.
Относительно чего происходит вращение я так и не понял , чесно. И это ужасно . Все так программисты работа
ют? Вводишь данные - получаешь результат. Что делают эти фреймйорки - не понятно.
Офлайн
1
Мне кажется ты запутался.
По поводу blit - причём здесь blit я не понял. И как ты проверял тоже интересно (кинь как проверял)
Вообщем я не совсем правильно в прошлый раз выразился
Но можно вращать и вокруг центра приблизительно так ( только координаты центра нужно хранить)
import pygame pygame.init() pygame.key.set_repeat(1, 1) display = pygame.display.set_mode((640, 480)) org_spriteImg = pygame.image.load(u'1.png').convert_alpha() spriteImg = org_spriteImg spriteRect = org_spriteImg.get_rect() spriteRect.center = (320, 240) angle = 0 def rotate(alfa): global spriteImg, spriteRect, angle angle += alfa spriteImg = pygame.transform.rotate(org_spriteImg, angle) spriteRect = spriteImg.get_rect() spriteRect.center = (320, 240) run = 1 while run: display.fill((255, 255, 255)) display.blit(spriteImg, spriteRect) pygame.display.flip() for event in pygame.event.get(): if event.type == pygame.QUIT: run = 0 if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: rotate(1) elif event.key == pygame.K_RIGHT: rotate(-1)
Отредактировано Frog-king (Дек. 8, 2012 16:04:27)
Офлайн
1
вот картинка для тебя
Прикреплённый файлы:
1.png (2,7 KБ)
Офлайн
0
Спасибо ,Frof-King , что отвечаешь .Читаю книгу “beginning-game-development-with-python-and-pygame-from-novice-to-professional” , но технический английский мне пока тяжеловат.
Прикреплённый файлы:
pyAngle.png (2,7 KБ)
Офлайн
1
Да у меня с английским тоже не лады но когда читал - интуитивно понятно было. )))
Вообще не совсем понимаю зачем ты так замарачиваешься, по мне так не важно как он там крутится, главное как крутить правильно. Скажи зачем тебе эта правда ? Попробуй, покрути, напиши сам и все будет pygame! ))
В этой книжке по поводу rotate тоже немного есть.
+ картинка - По моему вот так ( это по моему как по правде не знаю) )))
(заданный, простите за безграмотность
Отредактировано Frog-king (Дек. 8, 2012 23:37:34)
Прикреплённый файлы:
1.png (4,4 KБ)
Офлайн
0
Да у меня мания, постоянно хочу докопаться до самых основ. И понимаю что-бы писать игры не так уж и важно как видеокарта рендит изображение на монитор , но … вообщем мания, постоянно чувство что-то потерял. Вопрос такой - эта
функция
org_spriteImg = pygame.image.load(u'1.png').convert_alpha()
'pygame.Surface' object has no attribute 'convert_alha
Отредактировано rocket (Дек. 9, 2012 00:20:15)
Офлайн
1
'convert_alhaМожет опечатка ? А может забыл поставить скобочки convert_alpha()
Офлайн
0
rocketПопробуйте так:
У меня не выходит convert_alpha ,ни просто convert ,пишет
Офлайн