為什麼這篇PyGame座標鄉民發文收入到精華區:因為在PyGame座標這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者monomorium (好人攝影師)看板Python標題[問題] Pygame中Rect物件的旋...
小弟不才 雖知道改變座標值即可
卻一時想不到如何計算座標的改變量
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