小飛機(jī)(二)

繼續(xù)上次的話題顽染,上次我們做了封面漾岳,這次我們先要精細(xì)化封面轰绵。也就是繪制點(diǎn)文字到上面,順便加個(gè)背景音樂尼荆。

我們先做一個(gè)繪制文字的方法左腔,然后用這個(gè)方法繪制。方法是這樣的

'''
draw_text: 繪制文字的方法
    surf:(pygame里面每個(gè)畫面都當(dāng)作surface捅儒,譬如之前的main_pic,screen這些)液样,
        這里是待傳入要繪制的畫面
    text: 要繪制的文本
    size: 要繪制的尺寸
    x,y:  要繪制的位置
'''
def draw_text(surf, text, size, x, y):
    # 字體設(shè)置
    font = pygame.font.Font(pygame.font.match_font('FangSong'), size)  
    # 將要繪制的文本處理成surface,參數(shù):文本巧还,抗鋸齒(bool)鞭莽,顏色
    text_surface = font.render(text, True, (255, 255, 255)) 
    # 獲取文字畫面的尺寸
    text_rect = text_surface.get_rect()
    # 確定位置
    text_rect.midtop = (x, y) 
    # 將文字畫面繪制到傳入的畫面上
    surf.blit(text_surface, text_rect)

有了這個(gè)方法,我們就可以在封面上繪制文字了麸祷,需要注意的是如果要繪制中文的話澎怒,字體的格式就要是支持中文的。譬如我們用到的FangSong阶牍。
然后我們繪制兩行文字:

draw_text(screen, "按 [ENTER] 鍵開始游戲", 30, WIDTH/2, HEIGHT/2)
draw_text(screen, "或按 [Q] 鍵退出游戲", 30, WIDTH/2, (HEIGHT/2)+40)

這樣以后運(yùn)行一次喷面,效果是下面這樣的:


繪制文字后.png

接下來,我們不著急去實(shí)現(xiàn)這兩行文字的具體功能走孽,在我們聲音的素材庫里面惧辈,有封面的聲音,我們可以先把聲音加上融求,做到繪聲繪色咬像。
這里要用到的是mixer算撮,是一個(gè)用來處理聲音的模塊生宛,其含義為“混音器”,可以用來制造聲音和播放聲音

# 初始化聲音模塊
pygame.mixer.init() 

然后加載播放音樂

# 加載目錄聲音
pygame.mixer.music.load(path.join(sound_folder, "menu.ogg"))
# 設(shè)置為循環(huán)播放并進(jìn)行播放
pygame.mixer.music.play(-1)

然后試著運(yùn)行就會(huì)發(fā)現(xiàn)聲音出現(xiàn)了肮柜,有點(diǎn)大陷舅,也可以設(shè)置的小一點(diǎn)。
我們現(xiàn)在去處理那兩行的文字的內(nèi)容
同樣是基于昨天的話題审洞,我們認(rèn)識(shí)到要捕獲事件然后去處理莱睁,所以我們要處理[Enter]和[Q]兩個(gè)事件,就把它放在之前的循環(huán)里面

while running:
    # 刷新屏幕
    pygame.display.update()
    # 得到并遍歷程序的事件
    for event in pygame.event.get():
        # 如果是退出事件芒澜,結(jié)束循環(huán)
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RETURN:
                print("進(jìn)入下一個(gè)界面")
                break
            elif event.key == pygame.K_q:
                pygame.quit()
                quit()

這里要考量一個(gè)問題仰剿,就是打印“進(jìn)入下一個(gè)界面”具體要怎么去實(shí)現(xiàn),我們可以在打印后面加上

# 用黑色填充界面痴晦,用以清屏
screen.fill((0, 0, 0))
# 繪制文字
draw_text(screen, "GET READY!", 40, WIDTH / 2, HEIGHT / 2)

這樣看似在回車以后可以進(jìn)入下一個(gè)頁面南吮,可這兩個(gè)語句在for里面,也在if里面誊酌,也就是說enter和q依舊是有效的部凑,我們?cè)囍磓鍵露乏,依舊退出了游戲,所以說這兩個(gè)語句應(yīng)該是沒問題的涂邀,但是添加的位置有問題瘟仿。

我們這樣去想,我們要什么是在剛才的while循環(huán)里面一直有效的1.畫面刷新比勉,2.右上角的x鍵的退出劳较。但是Enter和q就不是。但是他們屬于事件驅(qū)動(dòng)敷搪,如果不是enter和q或退出兴想,它也是持久在那個(gè)畫面的,所以我們很自然的想到可以再添加一個(gè)循環(huán)赡勘,將退出條件設(shè)置一下就好嫂便。那么我們的代碼就變成:

while True:
    # poll和之前的get還是有區(qū)別的,它會(huì)根據(jù)當(dāng)前的實(shí)際事件立即返回闸与,
    # #如果沒有事件毙替,就會(huì)返回NoEvent
    event = pygame.event.poll()
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_RETURN:
            print("進(jìn)入下一個(gè)界面")
            break
        elif event.key == pygame.K_q:
            pygame.quit()
            quit()
    elif event.type == pygame.QUIT:
        pygame.quit()
        quit()

# 用黑色填充界面,用以清屏
screen.fill((0, 0, 0))
# 繪制文字
draw_text(screen, "GET READY!", 40, WIDTH / 2, HEIGHT / 2)

我們看下回車之后的效果践樱,是下面這樣的厂画,當(dāng)然這個(gè)其實(shí)沒什么必要,也純粹是個(gè)過渡效果拷邢,加上我們的素材里面剛好有這段語音袱院,所以做了。


Get Ready.png

像之前一樣添加一下語音

# 另一種加載音樂的方式瞭稼,這樣返回的對(duì)象帶有play,stop...這類的方法
ready=pygame.mixer.Sound(path.join(sound_folder,'getready.ogg'))
#播放聲音
ready.play()

然后我們?cè)诘却欢螘r(shí)間后忽洛,自動(dòng)開始正式的游戲。代碼是這樣的:

# ready界面的更新
pygame.display.update()

# 等待2000毫秒
pygame.time.wait(2000)
# 停止之前的音樂
pygame.mixer.music.stop()

# 加載游戲界面的背景圖片
background = pygame.image.load(path.join(img_dir, 'starfield.png')).convert()
background_rect = background.get_rect()
# 繪制背景圖片
screen.blit(background, background_rect)
# 加載游戲音樂
pygame.mixer.music.load(path.join(sound_folder, 'tgfcoder-FrozenJam-SeamlessLoop.ogg'))
# 循環(huán)播放游戲音樂
pygame.mixer.music.play(-1)

效果是下面這樣的(當(dāng)然聲音是不能這樣展示的):


游戲正式畫面.png

然后后續(xù)我們就會(huì)在這個(gè)畫面上面添加各種元素环肘,效果欲虚。當(dāng)然在這個(gè)過程中間,會(huì)夾雜一些對(duì)代碼的整理悔雹,因?yàn)檫@是一個(gè)很重要的過程复哆,也是一個(gè)很不錯(cuò)的習(xí)慣。
代碼放在:https://pan.baidu.com/s/1YB7bhJndyfAlzC67t5AC7g

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腌零,一起剝皮案震驚了整個(gè)濱河市梯找,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌益涧,老刑警劉巖锈锤,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡牙咏,警方通過查閱死者的電腦和手機(jī)臼隔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妄壶,“玉大人摔握,你說我怎么就攤上這事《〖模” “怎么了氨淌?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)伊磺。 經(jīng)常有香客問我盛正,道長(zhǎng),這世上最難降的妖魔是什么屑埋? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任豪筝,我火速辦了婚禮,結(jié)果婚禮上摘能,老公的妹妹穿的比我還像新娘续崖。我一直安慰自己,他們只是感情好团搞,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布严望。 她就那樣靜靜地躺著,像睡著了一般逻恐。 火紅的嫁衣襯著肌膚如雪像吻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天复隆,我揣著相機(jī)與錄音拨匆,去河邊找鬼。 笑死昏名,一個(gè)胖子當(dāng)著我的面吹牛涮雷,可吹牛的內(nèi)容都是我干的阵面。 我是一名探鬼主播轻局,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼样刷!你這毒婦竟也來了仑扑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤置鼻,失蹤者是張志新(化名)和其女友劉穎镇饮,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體箕母,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡储藐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年俱济,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钙勃。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛛碌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辖源,到底是詐尸還是另有隱情蔚携,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布克饶,位于F島的核電站酝蜒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏矾湃。R本人自食惡果不足惜亡脑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望邀跃。 院中可真熱鬧远豺,春花似錦、人聲如沸坞嘀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丽涩。三九已至棺滞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間矢渊,已是汗流浹背继准。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留矮男,地道東北人移必。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像毡鉴,于是被迫代替她去往敵國和親崔泵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 發(fā)信站: 虎踞龍?bào)碨BBS (Tue Aug 25 08:39:52 2009), 站內(nèi) 初到美國的時(shí)候猪瞬,在一位同...
    無言的ID閱讀 236評(píng)論 0 0
  • 哲理組詩 1.關(guān)系 人在吃魚 蚊子在吃人 人吃的是魚的肉 蚊子喝的是人的血 魚活著的時(shí)候 它吃蚊子的幼蟲 現(xiàn)在憎瘸,魚...
    留云俠客閱讀 381評(píng)論 2 2
  • 人生,是一場(chǎng)修行陈瘦。有人修成正果幌甘,有人墜入深淵。為何會(huì)有這樣截然不同的結(jié)果,細(xì)細(xì)想來锅风,應(yīng)該是選擇不一樣酥诽。人生有這么多...
    YY171201閱讀 209評(píng)論 0 1
  • 時(shí)間真是一個(gè)無情的家伙,自顧自的走皱埠,它可曾回頭看過盆均,它可以回頭看嗎?我不知道漱逸,但我想回頭看看泪姨,回憶回憶那些久違的事...
    孔小七閱讀 477評(píng)論 0 1
  • 初中的日子 是煎熬的,為了平衡各科的成績(jī)饰抒,總是拿起這個(gè)放下那個(gè)無法全面發(fā)展而頭疼不已 肮砾;初中的日子也是有趣的,即便...
    遠(yuǎn)路的她閱讀 319評(píng)論 0 2