約 2,800,814 件
https://w.atwiki.jp/vahren_ency/pages/803.html
コンテンツ 戦闘シーンではない一般イベントのevent構造体では背景とBGMを決めるだけです。 後は任意の関数を記す事になります。 bg = (画像ファイル) イベントシーンの背景。imageフォルダの画像を指定する。 w = (数値) 背景の横サイズ 背景画像が指定サイズまで引き伸ばされます。画面外はスクロールさせて表示できます。 h = (数値) 背景の縦サイズ bgm = (文字列) BGMです。 volume = (数値) 音量です。(1~100)の範囲で決めます。 例:連続したひとつのイベントの中でワールドマップを挟む event s1 { bcg = bg1 event(s2) event(s3) } event s2 { bcg = bg2 } ワールドマップに戻るにはイベントを区切る必要がある disperse = (on/off) castle_battle = (on/off) castle = (数値) blind = (on/off/0~255) 戦闘イベントの作成を参照してください。 personal_battle = (on/off) onとすると戦場画面下の全部隊ウィンドウが人材プレイ時と同じになります。 .
https://w.atwiki.jp/genshiken/pages/24.html
構造体 構造体とは 構造体とは、一言でいってしまえば内部に複数の値を持つ値です。 これによって、複数の値を一つの値として扱うことが可能になります。 これは非常に重要な事で、例えば関数は一つの値しか返すことができませんが、これにより実質的に複数の値を返すことが可能になります。 また複数の関連性のある値をまとめて管理することも可能になります。 例えば、二次元座標はx軸の値とy軸の値の二つの値を持つ物として以下のように定義できます。 struct Point{ double x, y; }; また、キャラクターデータなどは以下のように定義できます。 struct Character{ struct Point pt; /* キャラクターの存在する座標 */ char[] name; /* キャラクターの名前 */ int life, ....... /* 生命力などといったステータス */ }; 値の操作 カンマ演算子を使います。 struct Point pt; pt.x = 0; pt.y = 0; int x = pt.x, y = pt.y; アドレス経由で操作する時のために、アロー演算子という物が用意されています。 struct Point *pt_p = pt; (*pt_p).x = 2; /* アロー演算子を使わない場合。書きにくい。 */ pt_p- y = 3; /* - これがアロー演算子。矢印演算子などとも。 */ x = pt.x; /* x には 2 が代入される */ y = pt.y; /* y には 3 が代入される */ 関数での取扱い 関数で取り扱う際などに注意しないといけない事があります。 それは構造体は一般的に「大きい」ということです。 どういうことかというと、例えば下のような構造体の場合、int や double といった組み込み型に比べてメモリを多く使用するということです。 struct SugoiOokiiMono{ int a[1000]; /* すごいおおきいよ! */ }; このような大きな値は、当然複数存在すればそれだけメモリ容量は圧迫されますし、コピーするだけでもそれなりの時間的なコストが発生してしまいます。 こういった問題を避けるために、構造体はそれ自体の値ではなく、アドレスの値で受け渡しすることが多くなります。 例えば、関数から構造体を返したいときは、値をそのまま返すのではなく、引数に結果の受け渡し用の構造体のアドレスを渡したりします。 struct SugoiOokiiMono normal(struct SugoiOokiiMono som){ ...; /* som に対する操作 */ return som; } struct SugoiOokiiMono *bad(struct SugoiOokiiMono *som){ struct SugoiOokiiMono ret; ...; /* ret に対する操作 */ return ret; } void better(struct SugoiOokiiMono *som, struct SugoiOokiiMono *ret){ ...; /* ret に対する操作 */ } 上の関数 normal の場合、引数を渡すときと値を返すときの二回、構造体の値のコピーが行われます。 真ん中の関数 bad は正しくない関数です。関数から抜けた時点で ret は存在しなくなるため、ret のアドレスを返す事は間違いです(関数の外で使おうとするころには、関数の返すアドレスの先にはすでに有効な値は存在しないのでエラーになります)。 下の関数 better の場合、構造体の値のコピーは一度も発生しません。 とはいえ、常に下のように書かないといけないかというと、そういうことでもありません。小さい構造体に関していえばコピーに大したコストはかからないでしょうし、またその関数が精々数回しか呼ばれないことが分かっているような場合もよほど大きい値でなければ問題ないでしょう。 しかし両方の方法を同時に使うことは混乱の原因にもなるため、一貫性を保つためにもどちらかに統一すべきでしょう。 関数による値の操作 構造体の値の操作は常に関数によって行われるべきです。 例えばこういった関数ですね。 double getPointX(struct Point *p){ return p- x; } /* 値を得る関数。 */ void setPointX(struct Point *p, double x){ p- x = x; } /* 値を書き換える関数 */ 理由は、構造体の仕様変更を考えれば分かります。 例えば何らかの理由で、構造体の内部変数 x y の名前が i j に変更になった場合、カンマ演算子やアロー演算子で直接操作していた場合、操作していたすべての部分を書き換えないといけなくなります。書き換えたすべてのソースコードを再コンパイルする必要があります。 一方、関数によって操作していた場合、関数の内部を書き換えるだけですみます。再コンパイルも関数を定義しているソースコードだけですみます。 今回の例はあまり現実的ではありませんが、こういったことは現実には頻発することです。特に複数人による開発では、多少面倒でもできる限り上記のような関数(アクセサと呼ばれたりすることもあります)を書くべきです。 また、アクセスすべきではない値などに対してアクセサを書かなければ、コメントではなくコードで「アクセスすべきではない」という情報を知らせられるなどといった効果もあります。 とはいえ、今回の例のような二次元座標を表すだけの構造体なら、どう考えても内部構造が変更されることはないので、アクセサは必要ないとは思いますが…
https://w.atwiki.jp/cschola/pages/68.html
構造体 今回は構造体について説明します。構造体とは、変数をまとめて新しい変数型を自分で作る機能です。 変数は箱のようなもの説明しましが、構造体は「変数の箱」をまとめて入れることのできる「大きな箱」と思ってください。 第1項 型枠宣言と宣言 構造体は作らないと(型枠の大きさを決めないと)使えません。 構造体を作るときは次のようにします。 struct 構造体型名 {メンバ}; ※メンバとは構造体の中で宣言される変数です。 構造体は作った場所より下で宣言することで使うことができます。 関数の中で作った場合はその関数の中でしか使えないので注意しましょう。 #include stdio.h //プレイヤーの構造体 struct tPlayer{ char name[64];// 名前 int HP;// 体力 int MP;// 魔力 }; int main(){ tPlayer taro = {"taro",240, 110}; // tPlayer型のtaroの宣言と初期化 printf("名前 %s,HP %d,MP %d\n",taro.name,taro.HP,taro.MP); return 0; } 構造体は変数と同じように宣言。 こうして宣言されたものを「構造体変数」と呼びます。 構造体の初期化はいくつかの方法があります。 宣言と同時に初期化する場合は { } を使って , で区切ることで初期化できます。 例 tPlayer taro = {"taro",240, 110}; 構造体変数として宣言した後に 構造体変数名.メンバ = 数値 とすることで初期化することもできます。 taro.HP = 60; // 体力を60に変更 構造体の存在意義 構造体とは、「複数の要素を持ったオブジェクト」を定義する際に使われます。 RPGのキャラクターを例にしてみましょう。 1つのキャラクターは、それぞれ「name」「HP」「MP」「STR」という要素を持っているとします。 変数で表現するならこうなるでしょう。 char name[64]; // 名前 int HP; // 体力 int MP; // 魔力 int STR; // 攻撃力 キャラクターが1人なら問題無いですが、キャラクター1つが増えるごとに要素の数だけ変数の数も増えてしまいます。 // キャラ1 char name1[64]; // 名前 int HP1; // 体力 int MP1; // 魔力 int STR1; // 攻撃力 // キャラ2 char name2[64]; // 名前 int HP2; // 体力 int MP2; // 魔力 int STR2; // 攻撃力 // キャラ3 char name3[64]; // 名前 int HP3; // 体力 int MP3; // 魔力 int STR3; // 攻撃力 これは非常に面倒くさいし、管理もしづらいです。 キャラクターの要素を追加する際もキャラクター数分追加することになってしまいます。 では、構造体で書いてみましょう // キャラクター構造体 struct Charcter{ char name[64]; // 名前 int HP; // 体力 int MP; // 魔力 int STR; // 攻撃力 }; int main(){ // キャラクターの実体作成 Charcter hasegawa = { "長谷川" , 120, 20, 82}; Charcter karasawa = { "唐沢" , 10, 999, 1}; Charcter slime = { "スライム" , 50, 0, 35}; return 0; } 構造体であれば、キャラクター数を増やしても構造体の実体が1つ増えるだけなので非常にすっきりします。 キャラクターの要素を追加する場合も構造体に変数を追加するだけなので簡単にできます。 配列 構造体変数も配列として宣言することができます。 構造体配列などと呼びます。 // 敵構造体 struct tEnemy{ char name[64];// 名前 int HP;// 体力 int MP;// 魔力 }; int main(){ tEnemy enemy[5] = {{"slime",10, 2}, {"trent",100, 180}, {"bat",60, 40}, {"wolf",180, 30}, {"bird",90, 10}}; for(int i = 0; i 5; i++){ printf("名前 %s,HP %d,MP %d\n",enemy[i].name,enemy[i].HP,enemy[i].MP); } return 0; } 関数 関数の中で構造体を使うこともできます。 ※関数は構造体を作った位置より下に書く。 前項の例の表示部分を関数にまとめて書き直したものです。 // 敵構造体 struct tEnemy{ char name[64];// 名前 int HP;// 体力 int MP;// 魔力 }; // 敵の内容を表示する関数 void EnemyOutput(tEnemy enemy){ printf("名前 %s,HP %d,MP %d\n",enemy.name,enemy.HP,enemy.MP); } int main(){ tEnemy enemy[5] = {{"slime",10, 2}, {"trent",100, 180}, {"bat",60, 40}, {"wolf",180, 30}, {"bird",90, 10}}; for(int i = 0; i 5; i++) EnemyOutput(enemy[i]); return 0; } 表示されるものは前項と同じです。 関数の戻り値に構造体を使うこともできます。 // 敵構造体 struct tEnemy{ char name[64];// 名前 int HP;// 体力 int MP;// 魔力 }; // 敵の内容を表示する関数 void EnemyOutput(tEnemy enemy){ printf("名前 %s,HP %d,MP %d\n",enemy.name,enemy.HP,enemy.MP); } // 敵の内容を入力して初期化する関数 tEnemy EnemyInput(){ tEnemy g; printf("敵の名前を入力してください。\n"); scanf_s("%s",g.name,64); printf("敵のHPを入力してください。\n"); scanf_s("%d", g.HP); printf("敵のMPを入力してください。\n"); scanf_s("%d", g.MP); return g; } int main(){ tEnemy enemy; enemy = EnemyInput(); EnemyOutput(enemy); return 0; } 練習問題 次のような構造体とそれを用いたプログラムを作ってください。 第1問 名前、身長、体重 をメンバとして持つ人間構造体を作り、それを初期化して表示する。 第2問 人間構造体を配列数3の構造体配列として宣言してユーザーからの入力で初期化し、身長で降順に並べ表示する。
https://w.atwiki.jp/chibutsu/pages/48.html
構造体とは,「いろいろな種類の互いに関連するデータをまとめて, 1つのかたまりにしたもの」である.ここ等を参照.多くの変数をまとめて使うのに適する. 構造体の宣言 kozo=create_struct(name= str_name , tag1 , indgen(10), tag2 , 9d ....) name=では構造体の名前を定義する,デフォルトはAnonymous (名無し) .tag1, tag2 ...はタグ名.それぞれの要素は行列でも,値でもよい.構造体の内訳を知りたいときは, help, kozo ,/struc とすると, ** Structure STR_NAME, 2 tags, length=28, data length=28 TAG1 INT Array[10] TAG2 DOUBLE 9.0000000 こんな感じで教えてくれる. 構造体に関する基本的な関数 構造体のタグの配列(string型)を作りたければ以下を使う. tag_names(structure) 構造他のタグ数を知りたければ以下を使う. n_tags(structure) 構造体の参照 構造体内の要素を参照したい時は, print, kozo. tag2 とすれば, 9.0000000 が得られる.また, print, kozo. (1) というように,tagの番号を入れても同様の結果が得られる.また,要素が配列のときは, print, kozo. tag2[5] または print, kozo.tag1[5] のように書く. 構造体の結合 いま,2つの構造体str1 とstr2 があるとき,これらを一つの構造体にしたい場合は, str = create_struct(st1, st2) とすれば,結合することができる.新しく要素を追加する場合は, str = create_struct(st1, st2, tag, element) とする. 構造体の要素の取り出し kozo = {hoge, tag1 [0,1,1,0], tag2 [3,4,5,6]} 例えば以上の構造体をwhere関数を用いて特定の要素を取り出したいときは以下のように書く. lab = where(kozo.tag1 eq 0) print, kozo.tag2[lab] 出力結果は, 3 6 となる.
https://w.atwiki.jp/yu2ww88/pages/20.html
構造体基本文法構造体の宣言 型の定義 構造体基本文法 構造体の宣言 struct タグ { 型 メンバ名; : : }; ただしこれだけでは変数名が含まれず、メモリが割り当てられないため、変数名を宣言する。 struct タグ 変数名; またこれらは一度に記述することもでき、 struct タグ { 型 メンバ名; : : }変数名; とすることもできる。 初期化するときは並び順に行列のようにおこなえる。 struct タグ 変数名 = {x,12,26,s,444}; //括弧内は一例 構造体内の特定のメンバを指定したいときは、 変数名.メンバ名 と記述する。 両辺の構造体の型が同一ならば、変数名=変数名 とすることで構造体全体の値をコピーすることができる。 型の定義 また構造体はその特性上記述が長くなる傾向がある。その場合は「typedef」を利用するとすっきりとする。 typedef 型 識別子; これで識別子は型と同義となる。つまり、型(int,double...)の代わりに今名付けた識別子を利用することができる。 typedef struct rei { }HAGANAI; HAGANAI x = {0,0,0,0,0} HAGANAI y = {1,1,1,1,1} のようにスマートに書ける。
https://w.atwiki.jp/slimelv1024/pages/55.html
構造体とは 構造体を使うとまとまりのあるデータを一括管理することが出来ます 今まではまとめてでーた 扱うとき配列を用いていましたが、配列では同じ型のデータしか扱うことが出来ませんでした 構造体は異なる型のデータもまとめて管理することが出来、簡単に扱えるものを作ることが出来るのです 構造体の宣言 struct 構造体タグ名{ データ型 メンバ名 データ型 メンバ名 : }; 今までの変数は型によって扱えるデータが決まってましたが、構造体は宣言時に扱うデータに応じて型の宣言をしてあげることで複数の変数を構造体内で扱うことが出来ます 例 struct syain_data{ int syain_no; char syain_name[20]; long syain_kyuyo; };
https://w.atwiki.jp/romancing/pages/69.html
構造体 構造体について 構造体用メモ
https://w.atwiki.jp/sevenlives/pages/1542.html
構造体タグ? メンバ(構造体)? 型(構造体)? オブジェクト(構造体)? インスタンス(構造体)? ビット・フィールド メモリ・パッキング? struct hack? C
https://w.atwiki.jp/abwiki/pages/412.html
構造体(こうぞうたい)とは、いくつかの変数を1つの型として表現したもの。 構造体って何だ?
https://w.atwiki.jp/hogazurou/pages/55.html
構造体 構造体配列 #include string.h #include stdio.h struct employee{ int number; char name[80]; int salary; }; void main(){ struct employee person[2]; person[0].number=0007; strcpy(person[0].name,"輿水"); person[0].salary=10000000; person[1].number=0002; strcpy(person[1].name,"中山"); person[1].salary=1000000; for(int i=0;i 2;i++) printf("%d\n%s\n%d\n",person[i].number,person[i].name,person[i].salary); } 構造体ポインタ(アロー演算子) #include string.h #include stdio.h struct employee{ int number; char name[80]; int salary; }; void main(){ struct employee koshimizu; koshimizu.number=0007; strcpy(koshimizu.name,"輿水"); koshimizu.salary=10000000; struct employee *p; p= koshimizu; printf("%d\n%s\n%d\n",p- number,p- name,p- salary); }