作者monomorium (好人摄影师)
看板Python
标题[问题] Pygame中Rect物件的旋转问题
时间Wed Sep 24 23:11:28 2008
小弟不才 虽知道改变座标值即可
却一时想不到如何计算座标的改变量
import pygame
from pygame.locals import *
from sys import exit
from random import randint
screen_size = (800, 600)
title = "Rect Test"
black = (0, 0, 0)
blue = (0, 0, 255)
points = [(200, 200), (500, 200), (500, 400), (200, 400)]
pos = []
moves = []
keys = []
def run():
pygame.init()
screen = pygame.display.set_mode(screen_size, 0, 32)
pygame.display.set_caption(title)
while True:
for event in pygame.event.get():
if event.type == QUIT:
exit()
if event.type == MOUSEMOTION:
pos.append(event.pos)
moves.append(event.rel)
if event.type == KEYDOWN:
keys.append(event.key)
screen.fill(black)
mouse_pos = pygame.mouse.get_pos()
tank = pygame.draw.polygon(screen, blue, points)
min_x = min(points[0][0], points[1][0], points[2][0], points[3][0])
max_x = max(points[0][0], points[1][0], points[2][0], points[3][0])
min_y = min(points[0][1], points[1][1], points[2][1], points[3][1])
max_y = max(points[0][1], points[1][1], points[2][1], points[3][1])
if pygame.mouse.get_pressed()[0]:
if min_x <= mouse_pos[0] <= max_x and min_y <= mouse_pos[1] <= max_y:
for i in range(4):
x = points[i][0] + moves[-1][0]
y = points[i][1] + moves[-1][1]
points[i] = (x, y)
pygame.event.post(pygame.event.wait())
if pygame.key.get_pressed()[K_LSHIFT]:
if min_x <= mouse_pos[0] <= max_x and min_y <= mouse_pos[1] <= max_y:
x0 = points[0][0]
y0 = points[0][1] + 1
points[0] = (x0, y0)
x1 = points[1][0] - 1
y1 = points[1][1]
points[1] = (x1, y1)
x2 = points[2][0]
y2 = points[2][1] - 1
points[2] = (x2, y2)
x3 = points[3][0] + 1
y3 = points[3][1]
points[3] = (x3, y3)
pygame.display.update()
if __name__ == "__main__":
run()
小弟的这段程式码是会旋转没错 但是会越转越大
版上的前辈可否指教如何大小不变的旋转
或是提供网路上的一些例子
虽说这对小弟而言 有很好 没有也没关系
仍是感激前辈的赐教 谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.169.130.101
2F:推 ewn:一般算旋转座标都用三角函数算吧,你这样加一加怪怪的 09/25 01:53