看板 Python 關於我們 聯絡資訊
小弟不才 雖知道改變座標值即可 卻一時想不到如何計算座標的改變量 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
zhouer:幫你放到 nopaste 上,http://rafb.net/p/gYQdHd44.html 09/25 00:40
ewn:一般算旋轉座標都用三角函數算吧,你這樣加一加怪怪的 09/25 01:53