[Python的奇妙开发]用tkinter实现Galgame引擎的建立(一)
Galgame開發(fā)之前的準(zhǔn)備
前排提示:學(xué)習(xí)這個之前,你可以先去學(xué)習(xí)一下tkinter
(ACG圈的朋友可以選擇跳過這里…)
- 以下使用的是百度百科對Galgame的解釋:
Galgame(日文假名:ギャルゲーム,平文式羅馬字:Gyaru Gēmu,又稱美少女游戲)是一種玩家可以與動畫美少女進行互動的電子游戲,其受眾主體是男性,galgame的游戲類型大多數(shù)是vng(視覺小說)但是也有交互式的galgame。
美少女游戲是特屬于日本文化的現(xiàn)象;在美國或歐洲的電玩工業(yè)中,少有類似的游戲類型存在。美少女游戲占據(jù)相當(dāng)大的日本市場,是日本個人電腦電子游戲的大宗;不過,由于確實存在的文化差異,只有小部分此類游戲被翻譯成為其他語言(主要是英文和中文)版本。
- 程序開發(fā)后的樣圖:
以下是我們開發(fā)的Galgame的樣式圖(UI與劇本都可以自行修改的):
對于游戲運行的實際畫面(樣品),你可以前往:https://www.bilibili.com/video/av90715146去觀看
開源程序放在這里的:https://download.csdn.net/download/tc9527_/12180013
本文章就是通過開發(fā)這些來實現(xiàn)Galgame的建立,這是之前寫的可能有些Bug…
關(guān)于程序的數(shù)據(jù)
Galgame的數(shù)據(jù)
Galgame有三大要素:
立繪: 包含人物立繪與場景立繪;
音樂:音效與背景音樂
劇本:人物的對白與諸多的旁白描寫
程序?qū)τ跀?shù)據(jù)的存儲路徑放置:
控件的配色
- 控件不配色的后果
由于tkinter不支持單個控件的透明,所以我們只能為控件配置與背景相稱的顏色,好比Label的bg參數(shù)為yellow類型,但是我得背景顏色是blue,就會出現(xiàn)類似的情況:
我們可以使用PIL來獲取Label所在位置的像素的RGB(需要純色背景!)
對于數(shù)據(jù)的獲取
相信大部分的小伙伴對于原畫與音樂這一方面還不是太擅長,所以在這里推薦一些 網(wǎng)站,可以創(chuàng)建角色:
AI捏臉: https://artbreeder.com/_可以實現(xiàn)人物的組合與捏臉,不需要美工技巧.
(需要科學(xué)上網(wǎng).)
背景(開放版權(quán)_運行商用_詳見網(wǎng)站說明)_ 可以下載一些背景充當(dāng)游戲背景.
音樂制作:https://learningmusic.ableton.com/
游戲數(shù)據(jù): 建立
程序使用了tkinter 的 resizable 方法來不允許窗口隨意更改大小,所以我們對于程序背景采取了強制的px大小,這里是我采用的像素大小
背景: 960*542 px
人物頭像:139146 px**
根據(jù)這個大小我們可以來建立窗口.(當(dāng)然你也可以不拘束于我的px大小,你可以將其改為1920*1080都可以.)
如果你是在網(wǎng)上搬運下來的圖片,有苦于圖片大小不一致,可以在Windows自帶畫圖程序中修改分辨率,當(dāng)然你也可以用PIL來實現(xiàn)全屏后實時的分辨率轉(zhuǎn)換(這款游戲就沒有這么做了,因為這么作會使我得圖片有一定的失真)
from PIL import Image im = Image.open('你的圖片地址') im.save(r'/home/uftp/jia/'+city+'.jpg',dpi=(300.0,300.0))構(gòu)建galgame的靈魂:劇本
對于劇本的保存,我們使用了json來保存,并且使用了列表來存儲劇本,以下便是列表的格式:
# 文件: begin.json [[{ "imgae":"客廳", # 規(guī)定背景圖片,會默認(rèn)在其后面添加.png"music":"歡快的", # 規(guī)定背景音樂,會默認(rèn)在其后添加.wav"title":"第一章" # 游戲的章節(jié)標(biāo)題},[["人物名稱","對白"], # 人物與對白["人物名稱","對白"],["無","對白"], # 這個一般用于內(nèi)心獨白["音樂","悲傷的"], # 切換音樂,這個也可以用于聲優(yōu)的配音["人物",[['開始','begin'],['結(jié)束','傷心']]] # 選擇分支,[['開始','開心'],['結(jié)束','傷心']]中,以#['開始','begin']為例子 開始 為選擇時展示的文本,開心指的是,選擇該分支時所進行的劇本名稱,后綴是json]] ]# 傷心.json [[{"image":"街道","title":"第二章第一節(jié)","music":"快樂的"},[ ["人物",'對白'],["人物名稱","對白"],["人物名稱","對白"],["人物名稱","對白"],['end','end_1',':普通結(jié)局'] # 結(jié)尾展示 ['end','音樂','結(jié)局顯示文本']]] ], [] '''展示end字幕''' end = ''' 配音: XXX - XXX XXX - XXX XXX - XXX''' import json with open("end.json",'w') as f:json.dump(end,f)程序的建立
導(dǎo)包
在開始編程之前,我們先來看看今天需要導(dǎo)入一些什么包或者庫
-
首先是 tkinter,用于實現(xiàn)窗口對象的建立與UI的美化
-
還有就是 tkinter.font 的Font雖然也是屬于tkinter但是我還是不得不提一下,這個包是 對tkinter的文本的設(shè)置,下列是他的簡單代碼
- json 用于序列化與反序列化的IO操作(說白了就是數(shù)據(jù)的讀寫操作)
- pygame 在這個程序中pygame 只處于配角的狀態(tài),作用就是音樂的播放,在這里,展示一下pygame音樂播放的能力:
- PIL包的Image
實現(xiàn)菜單窗口的UI與功能
我們現(xiàn)在背景圖片文件目錄中創(chuàng)建一個background.png的圖片,大小為960*542 px ,可以參照以下的圖片(最好最右側(cè)是純色)
再創(chuàng)建一個類似這樣的圖片,命名為XW.png(px:334*152)(建議背景為純色):
以上就是程序所需要的圖片,接下來打開網(wǎng)易云或者其他的音樂播放器,下載一首你認(rèn)為可以作為開始菜單的背景音樂,放在音樂的文件夾下,改名為 Caidan.wav,記得將音頻文件改為wav格式的喲,否則pygame會生悶氣而報錯的.
(使用剪輯軟件或者格式工廠可以修改后綴名)
運行的效果:
好了,我們先來寫寫代碼:
這樣我們就實現(xiàn)了開始菜單的界面設(shè)置,但是這只是一副空殼,沒法真正的運行,我們需要給兩個Label綁定屬于它們的事件.
但是,我們接下來要去搗鼓一個 選擇對話框,類似于tkinter.message.askquetion的選擇對話框,但是我們的對話框長這樣。(可以自由選擇喲)
來讓我們?yōu)閃indows類添磚加瓦吧!XunWen方法建立.
好了,這就是開始界面的建立了,因為游戲還沒有完全的開發(fā),所有有些函數(shù)或者綁定現(xiàn)在先空在那里,接下來的代碼會逐步的完善與優(yōu)化,那,我們繼續(xù)吧.
總結(jié)
以上是生活随笔為你收集整理的[Python的奇妙开发]用tkinter实现Galgame引擎的建立(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R3 2200G搭配显卡推荐
- 下一篇: Python爬虫日记2——使用reque