iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 25
1
自我挑戰組

不要太認真學 Python! 之 我又重新報名了系列 第 25

不要太認真學 Python! - Day 28

  • 分享至 

  • xImage
  •  

[前情提要]

昨天也是成功的讓「小淘氣」可以動了。
玩遊戲沒有音樂很像怪怪的,所以我決定在 pygame 中加入音樂。

https://ithelp.ithome.com.tw/upload/images/20190929/20120423m1E312OEsJ.jpg


好的,今天一樣先上程式碼:

import pygame
import random

pygame.init()

black = (0, 0, 0)
green = (91,231,196)
  
gameNaughtybox = pygame.display.set_mode((600,600))
def game_intro(main_BG):
    BG = [pygame.image.load("pipo-battlebg007b.png")]
    main_BG.Surface.blit("BG", ('0,0'))

character =[pygame.image.load("Angel.png")]

pygame.display.set_caption("Naughty Box")

gameNaughtybox.fill(black)

BGM = [pygame.mixer.music.load("NES - CIRCUS CHARLIE-B(stage1_stage5).mp3")]
pygame.mixer.music.play()

x = 50
y = 50
width =60
height = 60
vel = 8

isJump = False
jumpCount = 15

run = True
while run:
    pygame.time.delay(20)
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False 

    keys = pygame.key.get_pressed()
    
    if keys [pygame.K_LEFT] and x > vel:
        x -= vel
    if keys [pygame.K_RIGHT] and x < 600 - width - vel:
        x += vel
    if not (isJump):
        if keys [pygame.K_UP] and y > vel:
            y -= vel
        if keys [pygame.K_DOWN] and y < 600 - height - vel:
            y += vel
        if keys [pygame.K_SPACE]:
            isJump = True
    else:
        if jumpCount >= -10:
            neg = 1
            if jumpCount < 0:
                neg = -1
            y -= (jumpCount ** 2) * 0.5 * neg
            jumpCount -= 1
        else:
            isJump = False
            jumpCount = 10

    gameNaughtybox.fill((0,0,0))
    
    pygame.draw.rect(gameNaughtybox, (247,80,0), (x, y, width, height))
    pygame.display.update()
    
    
pygame.quit()

其實我覺得加入音樂這個步驟不難,但是還是要對「儲存、置入」有一點概念才比較容易懂。

1. 前置作業最重要:找尋、整理、建立資料夾!!!

https://ithelp.ithome.com.tw/upload/images/20190929/20120423IgN4uPWG5S.jpg

別懷疑!!!真的是要先整理和建立資料夾。

以我使用 Jupyter notebook 為例,每一次打的程式碼都會變成一個文件。
這也是要跟新手提醒的,在每儲存一次文件的時候,都要把它整理分類,這樣在日後作業的時候會比較方便。

至於要去哪裡整理呢?
就是在 Jupyter notebook 首頁可以整理資料夾,如下圖所示,我把和這次的參賽有關的程式碼都放在「iThome」的資料夾裡。
https://ithelp.ithome.com.tw/upload/images/20190929/20120423PcAmN1TeCN.png

資料夾中還可以再建立資料夾,因此建議新手因為初期練習比較不熟悉的話,就一個專案就放一個資料夾。

在建立好資料夾,也把該用的程式碼丟進去以後,就可以開始找音樂啦!!!

★ 一次提醒完畢 ★

https://ithelp.ithome.com.tw/upload/images/20190929/201204232cS2wLsxrM.jpg

如果玩過 Adobe 系列軟體的人就會知道,通常都會把所有專案素材都放在同一個資料夾裡,方便程式抓取素材。

Pygame 也不例外,如果有任何想要上傳的圖檔或音檔,都要放在同一個創建的資料夾中。

如果音樂找好了,但又找不到資料夾路徑,所以不知道要怎麼放回資料夾的人,別怕!!

很簡單!!

只要到利用電腦原本的「搜尋功能」搜尋檔名,尋找你想要存放素材的資料夾名稱,就可以找到你的資料夾啦!!!

2.上程式碼:「load」、「play」

看到這兩個關鍵字就不難知道要執行甚麼指令了!

BGM = [pygame.mixer.music.load("NES - CIRCUS CHARLIE-B(stage1_stage5).mp3")] 

pygame.mixer.music.play()

在此之前要先認識 pygame.mixer.music 這個關鍵詞組,舉凡 pygame 裡要下遊戲指令,就要用到這個詞組,然後在後面加上 .+指令

在這個遊戲裡我們只要下「load」、「play」兩個指令就好。

上方程式碼第一行是關鍵字是「load」,就是上載。
也就是說,想要播放音樂前,要先把遊戲載入系統裡,有點像「import」的概念。
但是,import是載入模組,load是上載素材。

第二行關鍵字就是「play」,也就是播放。
音樂上載完成後,接著就是要播放。
所以呢,就要選擇播放的時機,我目前是先將它從遊戲一開始就開始播放。
這是最簡單的方式,另外,因為我覺得音量還可以,目前沒有要調整它。
不過如果有人想要調整的話,可以試試看 .set_volume 調整音量。

接下來就是進入測試階段!!!

小淘氣也有背景音樂囉!

成功!!!

我覺得這真的和資料夾的建置很有關係,因為有過 Adobe 系列的儲存經驗,所以這裡很容易上手。可是對於沒有經驗的新手來說,我覺得可能會需要費一點心思去摸索和整理資料夾。

接下來,我想要把方塊變成真的「角色人物」,然後遊戲背景可能也不會是黑色,這我還在考慮。但是應該會給遊戲一點簡單的劇情。

從上面短短一句話,就可以我有多麼不切實際了吧!!!)掩面

https://ithelp.ithome.com.tw/upload/images/20190929/201204231Kbi5i9oSK.jpg

不過,有夢最美,築夢踏實啊!

還有,感謝老天,明天颱風假!!!)跪拜
這樣我就可以努力研究了,希望我的遊戲能成功!!!

https://ithelp.ithome.com.tw/upload/images/20190929/2012042318DLMooBVl.jpg

今天愉快收工!!!


[同場加映]
差點忘記放上這個影片了!!!
我真的覺得很好聽欸!!!
而且真的是很實用的基礎內容。
有機會要來把全部歌詞打出來)狀態顯示腦袋不太正常

Yes


不要太認真學 Python! - Day 27


上一篇
不要太認真學 Python! - Day 27
下一篇
不要太認真學 Python! - Day 29
系列文
不要太認真學 Python! 之 我又重新報名了31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言