char ou_speak1[]="この剣をひきたまえ";
char yuusya_speak1[]="えっ?";
char ou_speak2[]="これを引くことができたら勇者として認める";
char yuusya_speak2[]="まじで!?";具体的に書くと
”この剣をひきたまえ”を一文字ずつ描写したあとにENTERキーを押したら、その前の文章を消し次の”えっ?”を一文字ずつ描写。っていうように実行させたいです。
できればわかりやすい解説もつけてくだされば嬉しいです。
char ou_speak1[]="この剣をひきたまえ";
char yuusya_speak1[]="えっ?";
char ou_speak2[]="これを引くことができたら勇者として認める";
char yuusya_speak2[]="まじで!?";softya(ソフト屋) さんが書きました:解説サイトを見ても分からなかったのなら、ここでコードを書いても理解は難しいと思いますので一つずつ積み重ねて作ってみませんか?
まず、どこの解説サイトを三鷹見たか教えてください。[訂正]誤字でした。
boxさん、私は気にしませんがその手の書き込みは気分を害する人もいるので注意してくださいね。トピックが荒れる原因になりますので。
[追記]
こちらのサイトとかは読まれましたか? コードとしては問題がある部分もありますが参考にはなります。
「ゲーム作りで学ぶ! 実践的C言語プログラミング - karetta.jp」
http://karetta.jp/book-cover/game-programming
もし、ここなら分からなくなったところを教えてください。
#include "DxLib.h"
int isJapaneseCharacter(unsigned char code);
void writeSubstring(char* message, int start, int len, int posX, int posY, int color);
//メッセージのフォントの大きさ
#define MESSAGE_FONT_SIZE 20
//仮想バッファの最大文字数
#define MESSAGE_MAX_LENGTH 30
//仮想バッファの最大行数
#define MESSAGE_MAX_LINE 5
//表示したいメッセージ
char g_message[MESSAGE_MAX_LENGTH * MESSAGE_MAX_LINE] = "はろーhelloわーるど";
//画面にメッセージを表示する際にしようする仮想テキストバッファ
char g_messageBuffer[MESSAGE_MAX_LINE][MESSAGE_MAX_LENGTH];
//code が日本語であるか判定する
//戻り値 1:日本語 0:日本語ではない
int isJapaneseCharacter(unsigned char code)
{
//省略(前回と同じ)
}
//messageで指定した文章を start の位置から len 文字分表示する
//文字列左側の座標は(posX, posY), 文字の色をcolorとする
void writeSubstring(char* message, int start, int len, int posX, int posY, int color)
{
//省略(前回と同じ)
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
//ウィンドウモードで起動
ChangeWindowMode( TRUE );
//画面の大きさは640 * 480
SetGraphMode( 640 , 480 , 16 ) ;
//DxLib初期化
if( DxLib_Init() == -1 ) {
return -1;
}
// 描画先を裏画面にセット
SetDrawScreen( DX_SCREEN_BACK ) ;
//現在何文字目までを表示しているか
int currentCursor = 0;
int whiteColor = GetColor(255,255,255);
//メインループ
while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) {
if( g_message[currentCursor] != '\0' ) {
currentCursor++;
}
writeSubstring( g_message, 0, currentCursor, 50,100, whiteColor );
Sleep( 100 );
ScreenFlip();
}
DxLib_End();
return 0;
}
softya(ソフト屋) さんが書きました:1.に関しては普通は会話文などはシナリオテキストファイルの形でファイルからmallocで確保したメモリなどに読み込みます。
このメモリから一行一行取り出して表示するわけです。
文章が変わってもシナリオテキストファイルを修正するだけってことになります。
2.もちろん関数化出来ますよ。
表示や読み込む関数を作って、どのテキストファイルの何行目の文字列を表示するといった関数モジュール群を作ることなどが定番だと思います。
それと「ゲーム作りで学ぶ! 実践的C言語プログラミング」の方法なら画像表示コマンドなどをシナリオファイルに埋め込むシナリオスクリプトの形式まで解説されてますね。
[追記]ここら辺は、吉里吉里やNScripterなどでも使われている利用率の高い手法でしょう。
まぁ、「ゲーム作りで学ぶ! 実践的C言語プログラミング」ほど真面目にやらなくても色々手はあります。