簡単RPG講座。ウィンドウ・システム序章4

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

簡単RPG講座。ウィンドウ・システム序章4

投稿記事 by softya(ソフト屋) » 14年前

今回は禁則文字の処理とプロポーショナルフォントに付いてです。
まず、恒例のwikipediaのご紹介、

禁則処理文字チェック
http://ja.wikipedia.org/wiki/%E7%A6%81% ... 6%E7%90%86
プロポーショナルフォント・等幅フォント
http://ja.wikipedia.org/wiki/%E3%83%97% ... 3%E3%83%88

つまり、禁則処理は句読点(、。)や閉じ括弧(」』)】などが文頭に来ない様にしてやる処理です。
例えば、

CODE:

「さーて、今日はモンスターを沢山倒しちゃうぞ!(勇なま風)
」
よりも

CODE:

「さーて、今日はモンスターを沢山倒しちゃうぞ!(勇なま風)」
って表示されたほうが見やすいですよねって事です。

禁則処理は、ウィンドウ幅に対して少し余裕を持たせて改行させることで、禁則処理ができる余裕を空けておきます。
で、禁則文字が来たらウィンドウのギリッギリまで表示させてやります。
と言う事で文字列表示で行の最後に禁則文字が来るかどうか判断すれば良いだけって事ですね。
あとは実際のプログラムで説明する予定です。

もうひとつのプロポーショナルフォントですが、簡単RPGではメッセージはプロポーショナルで、メニューは等幅フォントと使い分けを行う予定です(すでに組んでありますが)。
メニューは揃っていた方が見やすいのと文字列はプロポーショナルの方が美しく見えて読みやすいからってのが私なりの理由です。

今回のサンプルプログラムはDXライブラリ(ウィンドウ・アプリ)です。
等幅フォントとプロポーショナルの違いを同じものをフォントを変えて表示しています。

CODE:

#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
			 LPSTR lpCmdLine, int nCmdShow )
{
	int Cr ;

	ChangeWindowMode(TRUE);
	if( DxLib_Init() == -1 )	// DXライブラリ初期化処理
	{
		 return -1;	// エラーが起きたら直ちに終了
	}

	// 描画する文字列の文字セットを変更します
	ChangeFont( "MS ゴシック" ) ;
	// 文字列の描画
	DrawString( 100 , 240 + 12 , "Hello C World!" , GetColor(255,255,255) );
	DrawString( 260 , 240 + 12 , "同じ文字列でも幅が変わります。等幅" , GetColor(255,255,255) );
	
	// 描画する文字列の文字セットを変更します
	ChangeFont( "MS Pゴシック" ) ;
	// 文字列の描画
	DrawString( 100 , 240 - 12 , "Hello C World!" , GetColor(255,255,255) );
	DrawString( 260 , 240 - 12 , "同じ文字列でも幅が変わります。プロポーショナル" , GetColor(255,255,255) );
	


	WaitKey() ;		// キーの入力待ち(『WaitKey』を使用)

	DxLib_End() ;		// DXライブラリ使用の終了処理

	return 0 ;		// ソフトの終了
}
実行結果。
EASY-RPG.png
EASY-RPG.png (31.7 KiB) 閲覧数: 2926 回
以上です。
次回は、ウィンドウシステムのプログラム解説に入ります。

ああ
記事: 49
登録日時: 14年前

Re: 簡単RPG講座。ウィンドウ・システム序章4

投稿記事 by ああ » 14年前

今流し読み状態ですが、見てるだけでワクワクが止まらないw
来月になったら是非参考にさせて頂いて自分も作成したいです!

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 簡単RPG講座。ウィンドウ・システム序章4

投稿記事 by softya(ソフト屋) » 14年前

応援ありがとうございます。
RPG講座のアンケートをロストさせてしまったので、投票を出来たらお願います。
http://dixq.net/forum/blog.php?u=114&b=622
再投票も可能です。