import std.stdio;
// 「人」型を定義
struct Parson
{
// 名前
char[] name;
// 場所
char[] location;
};
// 起床
void WakeUp(Parson* parson)
{
writefln( "%sは現在%sにいます。", parson.name, parson.location );
writefln( "%sは%sで目を覚ました。\n", parson.name, parson.location );
}
// 食事
void Eat(Parson* parson, char[] foodName)
{
writefln( "%sは現在%sにいます。", parson.name, parson.location );
writefln( "%sは%sを食べた。少し元気になった。\n", parson.name, foodName );
}
// 移動
// locationName は移動先
void Move(Parson* parson, char[] locationName)
{
writefln( "%sは現在%sにいます。", parson.name, parson.location );
writefln( "%sは%sから%sへ移動した。\n", parson.name, parson.location, locationName );
parson.location = locationName;
}
// 勉強
void Study(Parson* parson)
{
writefln( "%sは現在%sにいます。", parson.name, parson.location );
writefln( "%sは勉強した。少し賢くなった。\n", parson.name );
}
// 就寝
void Sleep(Parson* parson)
{
writefln( "%sは現在%sにいます。", parson.name, parson.location );
writefln( "%sは%sで眠りに就いた。\n", parson.name, parson.location );
}
// メインの流れ
int main(char[][] args)
{
Parson keiichi;
with (keiichi)
{
name = "前原圭一".dup;
location = "自室".dup;
}
WakeUp( &keiichi );
Move( &keiichi, "食卓".dup );
Eat( &keiichi, "朝食".dup );
Move( &keiichi, "学校".dup );
Study( &keiichi );
Eat( &keiichi, "お昼の弁当".dup );
Study( &keiichi );
Move( &keiichi, "家".dup );
Move( &keiichi, "食卓".dup );
Eat( &keiichi, "夕食".dup );
Move( &keiichi, "自室".dup );
Study( &keiichi );
Sleep( &keiichi );
return 0;
}
前原圭一は現在自室にいます。
前原圭一は自室のベッドで目を覚ました。
前原圭一は現在自室のベッドにいます。
前原圭一は自室のベッドから食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は朝食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から学校へ移動した。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一はお昼の弁当を食べた。少し元気になった。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一は学校から家へ移動した。
前原圭一は現在家にいます。
前原圭一は家から食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は夕食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から自室へ移動した。
前原圭一は現在自室にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在自室にいます。
前原圭一は自室のベッドで眠りに就いた。
import std.stdio;
// 「人」型を定義
struct Parson
{
// メンバ変数の定義
// 名前
char[] name;
// 場所
char[] location;
// メンバ関数の定義
// メンバ変数の定義は普通の関数の定義を構造体などの中に記述することで行われます。
// メンバ関数の中では、同じクラス内のメンバの変数や関数がスコープに含まれるので、
// name や location 、 WakeUp などにアクセスすることができます。
// 起床
void WakeUp()
{
writefln( "%sは現在%sにいます。", name, location );
writefln( "%sは%sで目を覚ました。\n", name, location );
}
// 食事
void Eat(char[] foodName)
{
writefln( "%sは現在%sにいます。", name, location );
writefln( "%sは%sを食べた。少し元気になった。\n", name, foodName );
}
// 移動
void Move(char[] locationName)
{
writefln( "%sは現在%sにいます。", name, location );
writefln( "%sは%sから%sへ移動した。\n", name, location, locationName );
location = locationName;
}
// 勉強
void Study()
{
writefln( "%sは現在%sにいます。", name, location );
writefln( "%sは勉強した。少し賢くなった。\n", name );
}
// 就寝
void Sleep()
{
writefln( "%sは現在%sにいます。", name, location );
writefln( "%sは%sで眠りに就いた。\n", name, location );
}
}
// メインの流れ
int main(char[][] args)
{
Parson keiichi;
with (keiichi)
{
name = "前原圭一".dup;
location = "自室".dup;
}
// メンバ関数の使い方。
// 変数と同じように"."(ピリオド)でアクセスすることで使用することができます。
keiichi.WakeUp();
keiichi.Move( "食卓".dup );
keiichi.Eat( "朝食".dup );
keiichi.Move( "学校".dup );
// メンバ関数にもwith文でアクセスすることができます。
with (keiichi)
{
Study();
Eat( "お昼の弁当".dup );
Study();
Move( "家".dup );
Move( "食卓".dup );
Eat( "夕食".dup );
Move( "自室".dup );
Study();
Sleep();
}
return 0;
}
前原圭一は現在自室にいます。
前原圭一は自室のベッドで目を覚ました。
前原圭一は現在自室のベッドにいます。
前原圭一は自室のベッドから食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は朝食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から学校へ移動した。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一はお昼の弁当を食べた。少し元気になった。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一は学校から家へ移動した。
前原圭一は現在家にいます。
前原圭一は家から食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は夕食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から自室へ移動した。
前原圭一は現在自室にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在自室にいます。
前原圭一は自室のベッドで眠りに就いた。
前原圭一は現在自室にいます。
前原圭一は自室のベッドで目を覚ました。
前原圭一は現在自室のベッドにいます。
前原圭一は自室のベッドから食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は朝食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から学校へ移動した。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一はお昼の弁当を食べた。少し元気になった。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一は学校から家へ移動した。
前原圭一は現在家にいます。
前原圭一は家から食卓へ移動した。
前原圭一は現在家にいます。
前原圭一は家から自室へ移動した。
前原圭一は現在自室にいます。
前原圭一はゲームをして遊んだ。ちょっと愉快になった。
前原圭一は現在自室にいます。
前原圭一は自室から食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は夕食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から自室へ移動した。
前原圭一は現在自室にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在自室にいます。
前原圭一は自室のベッドで眠りに就いた。