说明这几天没有更新主要是因为回家了,有些琐事,而且家里没网又跑去镇里的营业厅办网花费
了一些时间。我到铁血丹心论坛(专业的金庸群侠传mod论坛)上逛了一下,浏览了一些高手的帖子,
决定先做一个rpg游戏的框架,资源的加载采取插件的形式,这样以后可以更方便的重用已有的代码。
这篇是gui的继续,由于loveframe不支持中文,我便有了直接实现一个中文输入法的想法。由于还
没有完全实现,而且loveframe连显示中文都不支持,只做了一个非常简单的示例。
中文输入法就是一个转换器,把我们输入的音码/形码/其它码,转换为汉字,要想实现这种转换需要一个转码表。
我到百度文库里找到了一个所有汉字拼音的码表,用查找替换加手动修改
做成了一个lua的table(惭愧,使用Linux却不会用sed和awk),部分代码如下:
string_zh_cn ={}string_zh_cn.a ={ "啊","阿","嗄","腌","锕","錒",}string_zh_cn.ai ={ "爱","矮","挨","哎","碍","癌","艾","唉","哀",还有的字省略
,}
在main.lua里首先检测键盘,把输入的拼音到string_zh_cn里查表,把查到的汉字先保存到一个临时的
汉字表里。如果临时表里的汉字个数小于9,则直接显示,若大于9则分页显示,“=”键下翻页,“-”
键下翻页。效果如图:(现在还无法删除屏幕上的汉字,希望读者指正)
main.lua如下
require('string_zh_cn')local lg=love.graphicspinyin="" --拼音hanzi={} --显示的汉字page=1 --页数zi="" --选择的字--从输入的pinyin查string_zh_cn表里对应的汉字function getHanzi(pinyin) --pinyin对应的所有汉字表 local tmp= string_zh_cn[pinyin] --只从得到的汉字表tmp里取出9个 if tmp then if(#tmp >9) then --判断某个拼音下汉字的个数可以分成几个组(每组9个) local rows=math.ceil(#tmp/9) --page是页数,按“=”页数加1,“-”页数减1 if page>rows then page=rows elseif page<1 then page=1 end for i=1,9 do --把取出的9个汉字放到hanzi表里 hanzi[i]=tmp[i+(page-1)*9] end else hanzi=tmp end else hanzi={} endendfunction love.load() --设置中文字体 font=lg.newFont("YaHeiConsolas.ttf",18) lg.setFont(font)endfunction love.update() getHanzi(pinyin)endfunction love.draw() lg.print("fps: " .. love.timer.getFPS(), 20,20) lg.print("请输入拼音:" .. pinyin,100,100) lg.print("汉字:".. zi,300,100) if hanzi then for i,v in ipairs(hanzi) do lg.print(i .. "." .. v,100+i*40,140) if love.keyboard.isDown(i .. "") then pinyin="" zi=zi..v end end endendfunction love.keypressed(key, unicode) --输入拼音 local chars="abcdefghijklmnopqrstuvwxyz" if(string.find(chars,key)) then pinyin=pinyin .. key end if key=="backspace" then pinyin=string.sub(pinyin,1,string.len(pinyin)-1) --[[ if pinyin~="" then pinyin=string.sub(pinyin,1,string.len(pinyin)-1) else --按退格键删除一个汉字 此处有问题 hanzi=string.sub(hanzi,1,string.len(hanzi)-2) end ]] end if key=="=" then page=page+1 end if key=="-" then page=page-1 end end
接下来会继续探讨碰撞检测,物理效果,把gui先放到一边.
代码下载(已clone的直接git pull),字体我放到font目录下。
git clone git://gitcafe.com/dwdcth/love2d-tutor.git 或git clone https://github.com/dwdcth/mylove2d-tutor-in-chinese.git