python製做galgame引擎(二)

  上一篇主要涉及的實際上是我我的的一些初期目標,以及解決方式。雖然提了提Parser類的實現,可是代碼畢竟不是主要討論的對象。並且很明顯的,上一篇幾乎與galgame製做無關……python

  這一篇主要討論的實現,中心目標是實現一個「能顯示背景圖片,播放背景音樂,如同galgame般顯示文本」的試驗程序。稱之爲試驗程序的主要緣由是:它的代碼可能很亂,命名也是隨意命名的,無視耦合……這部分代碼只用來顯示相關代碼是否正常運行------不過提及來,大多數人都是這樣作的?git

  上一篇忘了說,這個項目已經完成的部分我已經上傳至github(最近應該沒問題了吧?),有興趣的歡迎圍觀和clone,branch也是大大歡迎的。地址是這個:項目地址github

  關於git已經github的使用,有須要的話,請看一下這篇博客 git教學,或者看看官方的文檔。測試

  很少說了,接下來是正文部分。字體

   

  上一篇中,經過Parser類,能夠獲得三個變量,分別是背景圖片的名字,背景音樂的名字,和劇情文本的內容,可是我不許備引用這三個變量。緣由是,文件讀入的文字,會受操做系統的文字編碼影響。固然通常來講是沒問題的,可是如果編寫跨平臺的程序時,就會很麻煩。最終完成的程序是可以跨平臺運行的,文字編碼這部分固然使得我非常困擾,這部分說長不長,說短不短,我留到最後來講說。編碼

  後面的內容涉及了許多pygame的內容,官方文檔很棒,eyehere的系列文章也至關棒,沒接觸過pygame的建議都去看看。eyeherespa

  下面這幾個變量已是所要處理的所有內容了……至關簡單,名字是隨意寫的。操作系統

backgound = 'test.jpg'.net

bgm = 'sanae.wav'code

text = u'博主正在下一盤大棋……'

   

  完成上文那個簡單目標的代碼以下

# -*- coding: utf-8 -*-
import pygame
from pygame.locals import *
from sys import exit

background = 'test.jpg'
bgm = 'sanae.wav'
text = u'博主正在下一盤大棋……'

##如下三行幾乎是定式,至少我都有用
pygame.init()
screen = pygame.display.set_mode((800,600),0,32)
clock = pygame.time.Clock()

##標題欄上的名字,或許你習慣寫成遊戲的名字?
pygame.display.set_caption('Sanae')

##這個是把圖片轉成surface,surface是pygame中一個很重要的概念
background = pygame.image.load(background).convert()

##讀入bgm
pygame.mixer.music.load(bgm)

##載入字體,我這裏用的是hksn,你能夠隨便下,雅黑很不錯。記住是要能顯示中文的
font = pygame.font.Font("hksn.ttf",20)
##把text內容轉成surface,True那個是字體平滑仍是什麼的,最後那個是顏色
text_surface = font.render(text,True,(0,0,255))

##初始化一個供綁定的TextRect
TextRect = pygame.Surface((200,200))
##白色填充
TextRect.fill((0xFF,0xFF,0xFF))
##把文本內容綁定到TextRect上去
TextRect.blit(text_surface,(0,0))

##播放背景音樂
pygame.mixer.music.play(-1,0,0)

##遊戲主循環
while True:
    for event in pygame.event.get():
        exit()
    
    ##限定幀爲5,事實上,galgame的幀數一般都很低很低,我估計1都行
    clock.tick(5)
    
    ##下面把背景圖片和文字綁定到遊戲屏幕上去,注意順序
    screen.blit(background,(0,0))
    screen.blit(TextRec,(0,0))
    pygame.display.update()

 

  就這樣,如今一個能播放音樂,能展現一幅圖片,還能醜醜地顯示文字的小玩意就作好了。固然始終要明白:這只是爲了測試相關功能實現的試驗程序而已,真正的程序可不能這麼水。可是你要知道,真正程序的核心,也就這樣……很簡單?

  這篇內容很少,我原本想接着寫下去的,可是考慮到下面的代碼不少,估計篇幅很長,乾脆拆成兩篇,閱讀更省力~~下一篇的主要是封裝,以及異常。

相關文章
相關標籤/搜索