Home>戻る
〜第13章 人と会話〜
↑人の横でZキーを押せば、話をすることが出来ます。
12章で、イベントをスクリプトから読み込むようにしましたが、
人との会話も同様にスクリプトから読み込みます。
ただ、前のプログラムではデータを1バイトずつ受け取っていくようにしていたので、
2バイトである日本語をどう扱うのか悩んでいました。
さらにスクリプトの文字コードはシフトJIS形式です。
対して、Javaで日本語を表示させるには文字コードがUnicodeじゃないと無理のようです。
だから、シフトJIS→Unicodeの変換プログラムが必要かと思ってましたが、簡単な方法があったようです。
それは読み込みの部分を改良すればいいだけです。
以前に作成した小説アプレットでこのコードが使われていたようです^^;
今までは
is = new URL(getDocumentBase(),filename).openStream();
while((i=is.read()) != -1){
line[x++] = (char)i;
このようなプログラムでしたが、ここを
is = new URL(getDocumentBase(),filename).openStream();
Reader r = new BufferedReader(new InputStreamReader(is));
while((i=r.read()) != -1){
line[x++] = (char)i;
このように変更します。
これで日本語のような2バイト文字を、1つのchar型変数にUnicodeとして格納されます。
今回作成したプログラムは、会話を流れるようにしました。
この処理はchar型がUnicodeだから普通に1文字1文字流すようにすればOKです。
もし、C言語のようにchar型が1バイトなら、日本語とアスキー文字とを区別してやるのが大変ですが。
//一文字ずつ書いていく
//game_buffer[6]は現在の終端
int x,y;//描画位置
x=y=0;
for(i=0;i<game_buffer[6];i++){
//19文字で改行
if(x==19){
x=0;
y++;
}
bufferg.drawString(String.valueOf(game_talks[i]),10+x*16,2*d.height/3+20 + y*16);
x++;
}
<プログラム公開>
Rpg13.java
プロジェクト一式ダウンロード(データ含む)