配列を使えばfor文を用いて大量のデータを扱うことができfor文の中でbreak;を用いることにより好きなタイミングでfor文の実行から抜けることができるようになります

新たにZボタンを押すと弾が2連射されるプログラムを書き換えてみよう まずは配列を用いて弾のデータを取り扱うようにしましょう

マックス「ぐぬぬぅ・・・・・


理論上は


Zボタンを押している状態で


1回目のwhile{}文のブロック{}内の命令文が実行されると


自分の弾が発射され


3回目のwhile{}文のブロック{}内の命令文が実行されると


自分の弾1が発射される


つまり


弾が続けて発射される


弾が2連射されるわけだ


そして


62回目のwhile{}文のブロック{}内の命令文が実行されると


自分の弾が発射され


64回目のwhile{}文のブロック{}内の命令文が実行されると


自分の弾1が発射される


つまり


弾が続けて発射される


弾が2連射されるはずなんだが・・・




なぜ


実際には


Zボタンを押し続けた状態で弾が2連射されるのは


最初の一回のみで


後は


弾が


1発ずつしか


発射されない?」


そのプログラムはこちらです

👇

#include "DxLib.h"


struct Character {

int x;

int y;

int graphichandle;

int life;

};

//👆🌞Characterの構造体宣言です




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

{



ChangeWindowMode(TRUE); // ウインドウモードに設定します


if (DxLib_Init() == -1) // DXライブラリを初期化処理しています

{

return -1; // DXライブラリの初期化に失敗したら直ちにプログラムを終了します

}




SetDrawScreen(DX_SCREEN_BACK);//👈🌞SetDrawScreen関数です 裏画面に画像を描きます


struct Character jibunnohikouki;

//👆🌞jibunnohikoukiの構造体変数宣言です


jibunnohikouki.x = 0;


jibunnohikouki.y = 0;


jibunnohikouki.graphichandle = LoadGraph("画像データ\\ソーラーが描いた飛行機.bmp");

//👆🌞構造体変数jibunnohikoukiのメンバ変数の初期化を行っています

//👆😋飛行機😋のデータをとりあつかっています



struct Character jibunnotama;

//👆🌞jibunnotamaの構造体変数宣言です


jibunnotama.x = 0;


jibunnotama.y = 0;


jibunnotama.graphichandle = LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama.life = 0;


//👆🌞構造体変数jibunnotamaのメンバ変数の初期化を行っています


//👆😋自分の弾😋のデータをとりあつかっています


struct Character jibunnotama1;

//👆🌞jibunnotama1の構造体変数宣言です


jibunnotama1.x = 0;


jibunnotama1.y = 0;


jibunnotama1.graphichandle = LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama1.life = 0;


//👆🌞構造体変数jibunnotama1のメンバ変数の初期化を行っています


//👆😋自分の弾1😋のデータをとりあつかっています



int i = 0;



while (CheckHitKey(KEY_INPUT_ESCAPE) == 0 && ProcessMessage() == 0) {


DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);




int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);


if (key & PAD_INPUT_UP) jibunnohikouki.y = jibunnohikouki.y - 4;

if (key & PAD_INPUT_DOWN) jibunnohikouki.y = jibunnohikouki.y + 4;

if (key & PAD_INPUT_LEFT) jibunnohikouki.x = jibunnohikouki.x - 4;

if (key & PAD_INPUT_RIGHT) jibunnohikouki.x = jibunnohikouki.x + 4;




DrawGraph(jibunnohikouki.x, jibunnohikouki.y, jibunnohikouki.graphichandle, TRUE);


//👆飛行機の画像を描きます





if ((key & PAD_INPUT_A) && (i == 0)) {


if (jibunnotama.life == 0) {


jibunnotama.x = jibunnohikouki.x + 35;


jibunnotama.y = jibunnohikouki.y + 20;


jibunnotama.life = 1;


}


i = 3;


}



//🌞Zボタンが押されるとjibunnotama.life に格納される値が1になります ゲーム画面に自分の弾の画像データの表示が可能となります




if (jibunnotama.life == 1) {


DrawGraph(jibunnotama.x, jibunnotama.y, jibunnotama.graphichandle, TRUE);


jibunnotama.x = jibunnotama.x + 10;


if (jibunnotama.x > 640)


jibunnotama.life = 0;

//🌞🌞 jibunnotama.lifeが0の値をもつと自分の弾の画像はゲーム画面に表示されなくなります

}






if (i > 0) { i = i -1; }//👈🌞🌞🌞ここです







if ((key & PAD_INPUT_A) && (i == 0)) {




if (jibunnotama1.life == 0) {


jibunnotama1.x = jibunnohikouki.x + 35;


jibunnotama1.y = jibunnohikouki.y + 20;


jibunnotama1.life = 1;

}


i = 3;


}



//🌞Zボタンが押されるとjibunnotama1.life に格納される値が1になります ゲーム画面に自分の弾1の画像データの表示が可能となります




if (jibunnotama1.life == 1) {



DrawGraph(jibunnotama1.x, jibunnotama1.y, jibunnotama1.graphichandle, TRUE);


jibunnotama1.x = jibunnotama1.x + 10;


if (jibunnotama1.x > 640)


jibunnotama1.life = 0;

//🌞 🌞jibunnotama1.lifeが0の値をもつと自分の弾1の画像はゲーム画面に表示されなくなります


}





ScreenFlip();


ClearDrawScreen();


};



DxLib_End(); // DXライブラリの使用を終了します DXライブラリの使用しているメモリ領域が解放されます


return 0; // プログラムを終了します


}


デバッグなしで実行をしてから一度プログラムを終了し

生成されたexeファイルをハードディスクから探し出しクリックする方法により得られたプログラムの実行結果はこちらです

👇


https://youtu.be/G8prhfmc-cs

(そのまま動画をみただけではわかりにくいのですが


動画を一時停止してみれば弾が2連射されているのがよくわかります)



ソーラー「このプログラムは直しようがないので


しょうがない


あらたな連射プログラムの道を模索しましょう」


マックス「ぬああにぃぃ~」


solarplexuss「うちも


わっかりませ〜ん」


マックス「いったい


どうなってるんだ?


仕組みがわからぬぅぅ」


solarplexuss「ほんと


どうなってるのかな?」


マックス「


どう考えても


プログラムに問題ないようにみえるんだよなあ」



ソーラー「このように


プログラムが理論上正しくても


実際に稼働させてみると


うまく機能しない場合があります


注意してね💖」



マックス「ひいい


なんじゃそりゃああ」


ソーラー「結論として


このプログラムで


Zボタンを押したとき


弾が2連射されつづけるようにすることは


できません」


solarplexuss「なんでそうなるのよー」


ソーラー「


そこで


このプログラムを


新たに書き換えてみようよ


このプログラムで培った技術は


次のプログラムでも使えます💖」


マックス「書き換えるって言ってもなあ


書き換えるところなどないのではないか?」


ソーラー「そうですね


確かにそのようにみえますが・・・


以下のように新たなプログラムを構成してみました


ℤボタンを押しつづけていると


連続した弾が発射され続けるプログラムのプロトタイプはこちらです

👇


マックス「プロトタイプ~?まだ未完成ってことかあ~」


👇


#include "DxLib.h"


struct Character {

int x;

int y;

int graphichandle;

int life;

};

//👆🌞Characterの構造体宣言です




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

{



ChangeWindowMode(TRUE); // ウインドウモードに設定します


if (DxLib_Init() == -1) // DXライブラリを初期化処理しています

{

return -1; // DXライブラリの初期化に失敗したら直ちにプログラムを終了します

}




SetDrawScreen(DX_SCREEN_BACK);//👈🌞SetDrawScreen関数です 裏画面に画像を描きます


struct Character jibunnohikouki;

//👆🌞jibunnohikoukiの構造体変数宣言です


jibunnohikouki.x = 0;


jibunnohikouki.y = 0;


jibunnohikouki.graphichandle = LoadGraph("画像データ\\ソーラーが描いた飛行機.bmp");

//👆🌞構造体変数jibunnohikoukiのメンバ変数の初期化を行っています

//👆😋飛行機😋のデータをとりあつかっています



struct Character jibunnotama[3];


for (int i = 0; i < 2; i = i + 1) {


jibunnotama[i].x = 0;

jibunnotama[i].y = 0;


jibunnotama[i].graphichandle = LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama[i].life = 0;


}






while (CheckHitKey(KEY_INPUT_ESCAPE) == 0 && ProcessMessage() == 0) {


DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);




int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);


if (key & PAD_INPUT_UP) jibunnohikouki.y = jibunnohikouki.y - 4;

if (key & PAD_INPUT_DOWN) jibunnohikouki.y = jibunnohikouki.y + 4;

if (key & PAD_INPUT_LEFT) jibunnohikouki.x = jibunnohikouki.x - 4;

if (key & PAD_INPUT_RIGHT) jibunnohikouki.x = jibunnohikouki.x + 4;




DrawGraph(jibunnohikouki.x, jibunnohikouki.y, jibunnohikouki.graphichandle, TRUE);


//👆飛行機の画像を描きます





if (key & PAD_INPUT_A) {


for (int i = 0; i < 2; i = i + 1) {


if (jibunnotama[i].life == 0) {


jibunnotama[i].x = jibunnohikouki.x + 35;


jibunnotama[i].y = jibunnohikouki.y + 20;


jibunnotama[i].life = 1;


break;//👈🌞ここですね


}

}


}



for (int i = 0; i < 2; i = i + 1) {


if (jibunnotama[i].life == 1) {


DrawGraph(jibunnotama[i].x, jibunnotama[i].y, jibunnotama[i].graphichandle, TRUE);


jibunnotama[i].x = jibunnotama[i].x + 10;


if (jibunnotama[i].x > 640)


jibunnotama[i].life = 0;


}


}



ScreenFlip();


ClearDrawScreen();


};



DxLib_End(); // DXライブラリの使用を終了します DXライブラリの使用しているメモリ領域が解放されます


return 0; // プログラムを終了します


}


デバッグなしで実行をしてから一度プログラムを終了し

生成されたexeファイルをハードディスクから探し出しクリックする方法により得られたプログラムの実行結果はこちらです

👇


https://www.youtube.com/watch?v=28jncLqDckw

(そのまま動画をみただけではわかりにくいのですが


動画を一時停止してみれば弾が2連射されているのがよくわかります)


マックス「動画がちょっとわかりにくいじゃないか?


弾がぶれっぶれに分身してないか?」


ソーラー「自分の弾と自分の弾1の状態は


動画を一時停止して観察してね💖」


マックス「どれどれ 一時停止か・・・



くっきり


自分の弾と自分の弾1の画像が表示されているじゃないか


なんだ?


Zボタンを押し続けていると


自分の弾と自分の弾1


が2連射されたあと


ちゃんと


次の発射時も


その次の発射時も



ちゃんと


自分の弾と自分の弾1


が2連射されているようだが・・・


どうなってるんだ?


さっきは単発しか発射されなかったのに


何でちゃんと


自分の弾と自分の弾1


が連続して発射されるようになったんだ?


意味わからんんん


だが・・・


ちょっと難点があるとすれば


自分の弾

自分の弾1の距離がちかすぎるってことか・・・


なんか


自分の弾

自分の弾1



くっつきすぎてないか?


ふ~む


それにしても


このプログラムはさっきのプログラムと似ているよなあ



ううん?なんだ?


if (key & PAD_INPUT_A) {


for (int i = 0; i < 2; i = i + 1) {


if (jibunnotama[i].life == 0) {


jibunnotama[i].x = jibunnohikouki.x + 35;


jibunnotama[i].y = jibunnohikouki.y + 20;


jibunnotama[i].life = 1;


break;//👈🌞ここですね


}

}


のなかに記述されている


break;//👈🌞ここですね


は?


なんで


ここに


break;//👈🌞ここですね


が登場してくるんだ?


break;


が実行されるとfor{}文のブロック{}内の命令文の繰り返し


から


抜けるんじゃなかったか?


何でここで登場してくる?


いったい


どういう仕組みなんだ?」


solarplexuss「ほんとだあ


if (key & PAD_INPUT_A) {


for (int i = 0; i < 2; i = i + 1) {


if (jibunnotama[i].life == 0) {


jibunnotama[i].x = jibunnohikouki.x + 35;


jibunnotama[i].y = jibunnohikouki.y + 20;


jibunnotama[i].life = 1;


break;//👈🌞ここですね


}

}


のなかに


break;//👈🌞ここですね


が記述されている・・・


宇宙に浮いている感覚だ・・・」


マックス「ど~いう感覚なんだ? それは?」


ソーラー「そこは気になるところだけど


そこは今はおいておいて・・・


このプログラムでは


Zボタンを押し続けていると


自分の弾と自分の弾1


が2連射されたあと


ちゃんと


次の発射時も


その次の発射時も




自分の弾と自分の弾1


が2連射されています



自分の弾と自分の弾1



くっつきすぎているのが難点です


自分の弾と自分の弾1


の距離は


いくらでも


調整することができるようになるんだけど


そのお話は


次回のエピソード以降で解説されます」


solarplexuss「それにしても


いきなり


新たなプログラムがあっさり構築されてない?」


ソーラー「えへへ


さっきのプログラムでは


自分の弾のデータを取り扱うのに


jibunnohikoukiのCharacter型の構造体変数宣言


struct Character jibunnohikouki;

//👆🌞jibunnohikoukiの構造体変数宣言です


を行って


Character型の構造体変数jibunnohikoukiのメンバ変数


jibunnohikouki.x


jibunnohikouki.y


jibunnohikouki.graphichandle


jibunnotama.life


を生成し


Character型の構造体変数jibunnohikoukiのメンバ変数


jibunnohikouki.x


jibunnohikouki.y


jibunnohikouki.graphichandle


jibunnotama.life



jibunnotama.x = 0;


jibunnotama.y = 0;


jibunnotama.graphichandle = LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama.life = 0;


と初期化していました


次に


自分の弾1のデータを取り扱うのに


jibunnohikouki1のCharacter型の構造体変数宣言


struct Character jibunnohikouki1;

//👆🌞jibunnohikouki1の構造体変数宣言です


を行って


Character型の構造体変数jibunnohikouki1のメンバ変数


jibunnohikouki1.x


jibunnohikouki1.y


jibunnohikouki1.graphichandle


jibunnotama1.life


を生成し


Character型の構造体変数jibunnohikouki1のメンバ変数


jibunnohikouki1.x


jibunnohikouki1.y


jibunnohikouki1.graphichandle


jibunnotama1.life



jibunnotama1.x = 0;


jibunnotama1.y = 0;


jibunnotama1.graphichandle = LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama1.life = 0;


と初期化していましたね


この新たなプログラムでは


まず


この部分を配列を使って


struct Character jibunnotama[2];


//👆🌞Character型の構造体変数の配列宣言です


for (int i = 0; i < 2; i = i + 1) {


jibunnotama[i].x = 0;

jibunnotama[i].y = 0;


jibunnotama[i].graphichandle = LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama[i].life = 0;


}



置き換えています」


マックス「なんで配列が出てくるんだ?」


ソーラー「配列を使えば


簡単に


大量のデータを取り扱うことができるようになります


今のプログラムの場合


自分の弾

自分の弾1


の2つだけしか取り扱っていません


ですので


自分の弾

自分の弾1



2つのデータを取り扱うための


Character型の構造体変数の配列宣言の要素数は


struct Character jibunnotama[2];


のように


2


に設定しています


struct Character jibunnotama[2];


を実行すると


2つのCharacter型の構造体変数


jibunnotama[0]

jibunnotama[1]


のメンバ変数


jibunnotama[0].x


jibunnotama[0].y


jibunnotama[0].graphichandle


jibunnotama[0].life




Character型の構造体変数jibunnotama[1]のメンバ変数


jibunnotama[1].x


jibunnotama[1].y


jibunnotama[1].graphichandle


jibunnotama[1].life



生成されることになります


配列をもちいて


Character型の構造体変数


jibunnotama[0]

jibunnotama[1]


を作製したことにより



Character型の構造体変数jibunnotama[0]のメンバ変数


jibunnotama[0].x


jibunnotama[0].y


jibunnotama[0].graphichandle


jibunnotama[0].life




Character型の構造体変数jibunnotama[1]のメンバ変数


jibunnotama[1].x


jibunnotama[1].y


jibunnotama[1].graphichandle


jibunnotama[1].life


を初期化するのに



jibunnotama[0].x =0;


jibunnotama[0].y =0;


jibunnotama[0].graphichandle=LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama[0].life =0;



jibunnotama[1].x =0;


jibunnotama[1].y =0;


jibunnotama[1].graphichandle=LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama[1].life =0;



実行しなくても


           配列とfor{}文を用いて


for (int i = 0; i < 2; i = i + 1) {


jibunnotama[i].x = 0;

jibunnotama[i].y = 0;


jibunnotama[i].graphichandle = LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama[i].life = 0;


}


を行うことにより


Character型の構造体変数jibunnotama[0]のメンバ変数


jibunnotama[0].x


jibunnotama[0].y


jibunnotama[0].graphichandle


jibunnotama[0].life




Character型の構造体変数jibunnotama[1]のメンバ変数


jibunnotama[1].x


jibunnotama[1].y


jibunnotama[1].graphichandle


jibunnotama[1].life



簡単に初期化することができるようになります


今は

自分の弾

自分の弾1


のデータしか取り扱っていませんでしたが



自分の弾

自分の弾1

自分の弾2

自分の弾3

自分の弾4



5つのデータを取り扱う場合は


Character型の構造体変数の配列宣言は


struct Character jibunnotama[5];


のようになります


5つの

Character型の構造体変数のメンバ変数が必要になるので


Character型の構造体変数の配列宣言の要素数は


struct Character jibunnotama[5];


のように


5


となるよね



struct Character jibunnotama[5];


を実行すると


5つのCharacter型の構造体変数


jibunnotama[0]

jibunnotama[1]

jibunnotama[2]

jibunnotama[3]

jibunnotama[4]


が作製され


Character型の構造体変数jibunnotama[0]のメンバ変数


jibunnotama[0].x


jibunnotama[0].y


jibunnotama[0].graphichandle


jibunnotama[0].life




Character型の構造体変数jibunnotama[1]のメンバ変数


jibunnotama[1].x


jibunnotama[1].y


jibunnotama[1].graphichandle


jibunnotama[1].life



Character型の構造体変数jibunnotama[2]のメンバ変数


jibunnotama[2].x


jibunnotama[2].y


jibunnotama[2].graphichandle


jibunnotama[2].life



Character型の構造体変数jibunnotama[3]のメンバ変数


jibunnotama[3].x


jibunnotama[3].y


jibunnotama[3].graphichandle


jibunnotama[3].life



Character型の構造体変数jibunnotama[4]のメンバ変数


jibunnotama[4].x


jibunnotama[4].y


jibunnotama[4].graphichandle


jibunnotama[4].life


が生成されます




Character型の構造体変数jibunnotama[0]のメンバ変数


jibunnotama[0].x


jibunnotama[0].y


jibunnotama[0].graphichandle


jibunnotama[0].life




Character型の構造体変数jibunnotama[1]のメンバ変数


jibunnotama[1].x


jibunnotama[1].y


jibunnotama[1].graphichandle


jibunnotama[1].life



Character型の構造体変数jibunnotama[2]のメンバ変数


jibunnotama[2].x


jibunnotama[2].y


jibunnotama[2].graphichandle


jibunnotama[2].life



Character型の構造体変数jibunnotama[3]のメンバ変数


jibunnotama[3].x


jibunnotama[3].y


jibunnotama[3].graphichandle


jibunnotama[3].life



Character型の構造体変数jibunnotama[4]のメンバ変数


jibunnotama[4].x


jibunnotama[4].y


jibunnotama[4].graphichandle


jibunnotama[4].life



を初期化するのに



jibunnotama[0].x =0;


jibunnotama[0].y =0;


jibunnotama[0].graphichandle=LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama[0].life =0;



jibunnotama[1].x =0;


jibunnotama[1].y =0;


jibunnotama[1].graphichandle=LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama[1].life =0;



jibunnotama[2].x =0;


jibunnotama[2].y =0;


jibunnotama[2].graphichandle=LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama[2].life =0;



jibunnotama[3].x =0;


jibunnotama[3].y =0;


jibunnotama[3].graphichandle=LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama[3].life =0;



jibunnotama[4].x =0;


jibunnotama[4].y =0;


jibunnotama[4].graphichandle=LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama[4].life =0;



を実行しなくても



       🌞配列とfor{}文を用いて🌞



for (int i = 0; i < 5💖; i = i + 1) {


jibunnotama[i].x = 0;

jibunnotama[i].y = 0;


jibunnotama[i].graphichandle = LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama[i].life = 0;


}


を行うことにより


簡単に


Character型の構造体変数jibunnotama[0]のメンバ変数


jibunnotama[0].x


jibunnotama[0].y


jibunnotama[0].graphichandle


jibunnotama[0].life




Character型の構造体変数jibunnotama[1]のメンバ変数


jibunnotama[1].x


jibunnotama[1].y


jibunnotama[1].graphichandle


jibunnotama[1].life



Character型の構造体変数jibunnotama[2]のメンバ変数


jibunnotama[2].x


jibunnotama[2].y


jibunnotama[2].graphichandle


jibunnotama[2].life



Character型の構造体変数jibunnotama[3]のメンバ変数


jibunnotama[3].x


jibunnotama[3].y


jibunnotama[3].graphichandle


jibunnotama[3].life



Character型の構造体変数jibunnotama[4]のメンバ変数


jibunnotama[4].x


jibunnotama[4].y


jibunnotama[4].graphichandle


jibunnotama[4].life



初期化することができるようになります」


マックス「


確かにこれは便利だなあ


自分の弾

自分の弾1

のデータ


を使って


Zボタンを押したとき弾が2連射されるプログラムを作ってきたが


Zボタンを押したとき弾が10連射されるプログラムでは


自分の弾

自分の弾1

自分の弾2

自分の弾3

自分の弾4

自分の弾5

自分の弾6

自分の弾7

自分の弾8

自分の弾9


10個の弾のデータが必要だからなあ



Character型の構造体変数の配列宣言


struct Character jibunnotama[10];


をおこなわず


1つずつ


jibunnotama

jibunnotama1

jibunnotama2

jibunnotama3

jibunnotama4

jibunnotama5

jibunnotama6

jibunnotama7

jibunnotama8

jibunnotama9



Character型の構造体変数宣言を行って


構造体変数


jibunnotama

jibunnotama1

jibunnotama2

jibunnotama3

jibunnotama4

jibunnotama5

jibunnotama6

jibunnotama7

jibunnotama8

jibunnotama9



のメンバ変数



jibunnotama.x


jibunnotama.y


jibunnotama.graphichandle


jibunnotama.life



jibunnotama1.x


jibunnotama1.y


jibunnotama1.graphichandle


jibunnotama1.life



jibunnotama2.x


jibunnotama2.y


jibunnotama2.graphichandle


jibunnotama2.life



jibunnotama3.x


jibunnotama3.y


jibunnotama3.graphichandle


jibunnotama3.life



jibunnotama4.x


jibunnotama4.y


jibunnotama4.graphichandle


jibunnotama4.life



jibunnotama5.x


jibunnotama5.y


jibunnotama5.graphichandle


jibunnotama5.life



jibunnotama6.x


jibunnotama6.y


jibunnotama6.graphichandle


jibunnotama6.life



jibunnotama7.x


jibunnotama7.y


jibunnotama7.graphichandle


jibunnotama7.life



jibunnotama8.x


jibunnotama8.y


jibunnotama8.graphichandle


jibunnotama8.life



jibunnotama9.x


jibunnotama9.y


jibunnotama9.graphichandle


jibunnotama9.life



初期化していたら大変だぞ」









  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る