一、Pygame庫 Pygame是一個利用SDL庫寫的游戲庫,SDL庫全名:Simple DirectMedia Layer,據說是SamLantinga寫的大牛寫的為了讓Loki(公司)更好的向linux上移植Windows的游戲,後來倒閉了 SDL是使用C寫的,Pygame是Python中的一個 ...
一、Pygame庫
Pygame是一個利用SDL庫寫的游戲庫,SDL庫全名:Simple DirectMedia Layer,據說是SamLantinga寫的大牛寫的為了讓Loki(公司)更好的向linux上移植Windows的游戲,後來倒閉了
SDL是使用C寫的,Pygame是Python中的一個常用的庫
接下來記錄使用Pycharm編寫Python3.7的個人版超級瑪麗游戲,Pygame更適合於製作2D游戲開發
二、放上代碼和暫定的游戲界面
1 import pygame ,sys 2 3 pygame.init() #初始化pygame,為使用硬體做準備 4 size = width,height = 1000,750 #設置整個界面的大小 5 speed = [1,1] 6 BLACK = 2,100,30 7 8 9 screen = pygame.display.set_mode((size)) #創建一個視窗 10 pygame.display.set_caption(" 三川之水") #設置視窗標題 11 12 pygame.mixer.music.load("music/home.mp3") #載入背景音樂 13 pygame.mixer.music.set_volume(1.0) #設置播放的音量,音量的範圍為0.0-1.0 14 pygame.mixer.music.play(-1) 15 '''第一個參數為播放次數,如果是-1表示迴圈播放,省略表示只播放1次。 16 第二個參數和第三個參數分別表示播放的起始和結束位置。 17 ''' 18 19 background = pygame.image.load("image/background.png").convert() #載入和存儲圖片 20 ball = pygame.image.load(r"image/ball.png") 21 ballrect = ball.get_rect() #獲取圖片的輪廓大小 22 23 fps = 180 24 myclock = pygame.time.Clock() #控制游戲的幀速率 25 26 27 28 while True: #大迴圈 29 for event in pygame.event.get(): #獲取電腦事件 30 if __name__ == '__main__': 31 if event.type == pygame.QUIT: #若點擊退出鍵 32 sys.exit() #退出游戲見面 33 elif event.type == pygame.KEYDOWN: #檢測鍵盤是否按下 34 if event.key == pygame.K_LEFT: #按左鍵 35 #speed[0] = speed[0] if speed[0] == 0 else (abs(speed[0]) - 1)* int (speed[0]/abs(speed[0])) 36 if speed[0] >= 0: 37 speed[0] = speed[0] - 1 38 elif speed[0] == 0: 39 speed[0] = -speed[0] 40 else: 41 speed[0] = speed[0] - 1 42 elif event.key == pygame.K_RIGHT: #按右鍵 43 speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1 44 elif event.key == pygame.K_UP: #按上建 45 speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1 46 elif event.key == pygame.K_DOWN: #按下鍵 47 speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1) * int(speed[1] / abs(speed[1])) 48 49 ballrect = ballrect.move(speed[0],speed[1]) #小球移動 50 if ballrect.left < 0 or ballrect.right > width: #檢測邊界,超過則反向運動 51 speed[0] = -speed[0] 52 if ballrect.top < 0 or ballrect.bottom > height: 53 speed[1] = -speed[1] 54 55 screen.blit(background,(0,0)) #繪製背景 56 screen.blit(ball,ballrect) #繪製小球 57 pygame.display.update() #刷新下一個畫面 58 myclock.tick(fps)View Code