我看你船的旋轉有問題。在
如果建立旋轉的宇宙飛船display_s,那麼得到的影象大小與space_ship大小不同,因此必須得到display_s矩形,並將宇宙飛船center指定給display_s中心。在display_s_rect = display_s.get_rect( center=spaceship_rect.center)
現在您必須使用display_s_rect來顯示display_s
^$順便說一句:
blit()期望在螢幕上放置blited影象左上角的位置。在
與screen.blit(display_s, (space_ship_rect.centerx, space_ship_rect.centery))
display_s的左上角將放在(space_ship_rect.centerx, space_ship_rect.centery)中,但我認為您應該將display_s放在(space_ship_rect.centerx, space_ship_rect.centery)的中間
將中心值(如前所述)分配給(space_ship_rect.centerx, space_ship_rect.centery),但在blit()中使用(space_ship_rect.x, space_ship_rect.y)。在
您可以使用space_ship_rect代替(space_ship_rect.x, space_ship_rect.y)中的blit(),得到相同的結果。在
我想你在blit()中的mousec位置也有同樣的問題。在
獲取mousec矩形,將滑鼠位置指定給矩形中心,然後使用矩形x,y作為blit。在mousec_rect = mousec.get_rect( center = pygame.mouse.get_pos() )
screen.blit(mousec, mousec_rect)
你的主迴圈後,我的修改-現在船是旋轉,因為它應該display_s = space_ship # default value at start when ship wasn't rotate
while true:
clock.tick(60)
screen.blit(bk, (0, 0))
for event in pygame.event.get():
if event.type == quit:
pygame.quit()
sys.exit()
elif event.type == mousebuttondown and event.button == 3:
pressed_down = 1
elif event.type == mousebuttonup:
pressed_down = 0
if pressed_down == 1:
x, y = pygame.mouse.get_pos()
x1, y1 = x - space_ship_rect.x, y - space_ship_rect.y
angle = math.atan2(y1, x1)
dx = speed*math.cos(angle)
dy = speed*math.sin(angle)
movex = space_ship_rect.centerx = space_ship_rect.centerx + dx#ship x
movey = space_ship_rect.centery = space_ship_rect.centery + dy#ship y
if event.type == mousemotion:
x1, y1 = pygame.mouse.get_pos()
x2, y2 = space_ship_rect.centerx, space_ship_rect.centery
dx, dy = x2 - x1, y2 - y1
rads = math.atan2(dx, dy)
degs = math.degrees(rads)
display_s = pygame.transform.rotate(space_ship, (degs))#rotation of ship
display_s_rect = display_s.get_rect(center = space_ship_rect.center)
if event.type == mousebuttondown and event.button == 1:
pass
screen.blit(display_s, display_s_rect)
#screen.blit(display_s, space_ship_rect)
pos = pygame.mouse.get_pos()
mousec_rect = mousec.get_rect(centerx=pos[0], centery=pos[1])
screen.blit(mousec, mousec_rect )
pygame.display.update()
python walk歷遍目錄
import osimport fnmatch defis file match filename,patterns for pattern in patterns iffnmatch.fnmatch filename,pattern return true return false def fin...
已知二叉樹的後序歷遍和中序歷遍,求前序歷遍
給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三行給出其中序遍歷序列。數字間以空格分隔。輸出格式 在一行中輸出該樹的層序遍歷的序列。數字間以1個空格分隔,行...
原生js元素歷遍
父元素 parentnode 沒有相容性問題 offsetparent 獲取的是首個獲得 絕對定位或者相對定位 的 元素 最終會找到html 子元素 1 childnodes 屬性。標準的,它返回指定元素的子元素集合,包括html節點,所有屬性 文字。可以通過nodetype來判斷是哪種型別的節點,...