python 歷遍子彈 Python遊戲子彈移動

2021-10-13 08:45:42 字數 2473 閱讀 7839

我看你船的旋轉有問題。在

如果建立旋轉的宇宙飛船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來判斷是哪種型別的節點,...