ブルーノのC#プログラミング & unity勉強日記

プログラミング素人、ブルーノの自主勉強ノートです。他のプログラミングを勉強したい方の助けになれば幸いです。その他趣味の雑記もしていきたいです

【お絵かき】初デジタル!【遊戯王?】

f:id:covory10101101276:20170525205700p:plain

サークルの先輩に進められて勢いでintuos drawを買ってみました。そして早速初デジタルに取り組んでみたのですが絵も素人ながらデジタルなんてやったこともないので見るに耐えない第一号作品ができました!なんかかっこいいポーズが思い浮かばなかったので独特なポーズに定評のある遊戯王スタイルで書いてみました!この方は本当に思いつきだけで生まれてきました。飽きないように続けていけたらいいなーと思います笑

【お絵描き】ソラ、キングダムハーツ

f:id:covory10101101276:20170525055925j:image

キングダムハーツFinal Mixのタイトル画面のソラです。サークルの先輩にアタリというものを教わったので書いてみました。でもパーツをよく見ると勝手に補完してる部分が多いんですよね。ちゃんと本物に似せないと笑

キングダムハーツを最初にプレイしたのは中1か2の時で最初のはbbsでした。最初にbbsをやったためストーリーは分かんない演出が多々ありましたが世界観とアクションの多彩さに感動して一気に3人分やり込みました笑 その後すぐに友達に1と2を借りてコレもやり込みました。2の方がスピーディーでカッコよくて派手さもあるんですがゲーム全体の雰囲気は1の方がディズニーっぽくて好きですね。もちろん2や358/2のスクエニらしいスタイリッシュな雰囲気も大好きです笑 キングダムハーツ3が発表されてからもうずいぶん経ちますが未だに楽しみで仕方ありません。2.8も1.5+2.5も買ったし、ブラウザ版のxもストーリーを最後まで見ましたので予習はバッチリです👍

早くでてくれえー😭😭

メソッドについて

みなさんこんにちは

評判を聞きつけてPS4FFX,X-2を買ってやってみたところあまりのハマりっぷりに時間を取られてしまうブルーノです。ティーダの心中を考えると色々切なかった....僕はFFはシリーズ通して半分くらいしかやったことのないにわかですがやっぱりターン制だと落ち着いてなおかつじっくり考えられるので楽しいです。最近だとバイオハザード7の「21」にも通ずる点がありました。さて今回は、クラスの中身の機能の部分、メソッドについてまとめていきます。

 

メソッドとは?

メソッド(method)は英語で「方法」とか「方式」、「道筋」なんて意味がありますが、プログラミングではまさしくクラスがどう動くかについてを記述するものがメソッドになります。メソッドは次のように定義します。

アクセス修飾子 復帰型 メソッド名(パラメータリスト)

例)public void SimpleMethod(int x, int y);

 

今回見覚えがないのは復帰型パラメータリストですね。

復帰型:メソッドが返すデータの型(種類)です。中で加工したものがどんなデータで出てくるかを表します。ちなみに出てくるデータのことを戻り値と言います。データを返さない場合は例のように void を指定します。

パラメータリスト:メソッドを呼び出す(使う)際のメソッドへ送る変数をここに記述します。この変数をパラメータ、もしくは引数(ひきすう)と言います。例ではどうやら int x と y がどこか別のクラスかメソッドから送られてこのメソッドに代入されるようですね。

 実際にメソッドを定義したプログラムを作ってみます

f:id:covory10101101276:20170524195602p:plain

f:id:covory10101101276:20170524195611p:plain

5行目のAdd(足し算)メソッドで引数xとyを足すことを定義して、それを変数zに代入しています。この最後のreturn文がメソッドの返す値になります。そして17行目、Mainメソッド内でBruno009クラスを生成し、19行目では a.Add(200, 300) でAddメソッドに200と300を渡して加工しています。今までは「クラス.インスタンス」だったのがインスタンス.メソッド」になっていますね。ややこしいのでまたまとめておきます。

今回の例でのそれぞれの用語のポジション

クラス:Bruno009, Bruno010

インスタンス:a (17行目でBruno009クラスのインスタンスaが作られた)

メソッド:Add (中で足し算を定義している)

 

こまめに用語の整理をしておかないと私はあまりよくできた頭ではないので...

 

いかがでしたでしょうか。だんだん複雑になってきたのでちゃんと整理しながら進めていきたいと思います。うーん。やっぱりプログラミング楽しいなあ

クラスとは

みなさんこんにちは

ナダルのフォームは他の男子プロと比べても独特で力強くてかっこいいですよね。技のフェデラー、力のナダルみたいで見ていて惚れ惚れしてしまいます。さて今回は、C#言語のもっとも大切だというクラスについてやっていきます。

 

クラスとは?

我々が知るクラスという名前はせいぜい学校のクラスくらいですよね。もしくはレベルみたいな意味合いの”最強クラス”とかそこらへんですね。C#言語におけるクラスとは、色々な説明を照らし合わせると「設計図」とか「レシピ」のような意味合いで使われているようです。そしてそのレシピを元に実際に作られたものを「オブジェクト」もしくは「インスタンス」と言います。

今までは簡単にMainメソッドのみのクラスを定義してきました。

f:id:covory10101101276:20170524095715p:plain

こんな具合に。このpublic static void Main()の中だけでやってきましたね。これはMainメソッドを含むBruno008クラスを定義していたわけです。「定義する」とは「中に記述する」ことです。

メソッドのようなクラスを構成するもののことを「メンバ(member)」と言います。メンバはメソッドのように機能を記述するものデータを記述するものの2つに大別されます。データを記述するものを「クラス変数(class variable)」と言います。もっとも単純なクラス変数は「インスタンスフィールド」と呼ばれます。次のように宣言します。

アクセス修飾子 データ型 変数名;

例)public int ScoreOfTest;

 

アクセス修飾子とはそのメンバへのアクセス制限です。基本的な2つを紹介しておきます。

private修飾子....(私的な)という意味で、そのクラスのみからしかアクセスできないようにします

public修飾子.....(公的な)という意味で、どこからでもアクセスできるようにします(つまり無制限)

 ちなみにこの修飾子を省略した場合はprivateとみなされます。

インスタンスフィールドしか持たないクラスは次のように作ります。

class クラス名

{

     アクセス修飾子 データ型 インスタンスフィールド名1;

     アクセス修飾子 データ型 インスタンスフィールド名2;

     ......;

}

例)

class Bruno

{

     public int myage;

     public string myname;

     public double myweight;

}

 

publicなインスタンスフィールドを3つもつBrunoクラスを定義してみました。これだけでは設計図だけなので作られてはいません。生成するには配列などの時のようにnew演算子を使います。

クラス名 インスタンス名;

インスタンス名 = new クラス名();

例)

Bruno b;

b = new Bruno();

 

なんかすごいややこしいですね。例によって宣言と生成を同時に行ってみましょう。

Bruno b = new Bruno();

メンバにアクセスするには大きい単位から順に . (ドット)を使って書いていきます。

インスタンス名.メンバ

例)

b.myage

 では簡単なクラスを作ってそのインスタンス変数に代入するプログラムを組んでみます。

f:id:covory10101101276:20170524103459p:plain

f:id:covory10101101276:20170524103509p:plain

Bruno008 クラスで定義されている public なインスタンス x に Bruno009 のMainメソッドが生成を行ってから10を代入して、それを映し出しています。12行目で新しくオブジェクトを生成していますね。

いかがでしたでしょうか。とりあえず今回はクラスと簡単なインスタンスフィールドの生成をまとめてみました。次回は実際の動き(機能)を定めるメソッドについてまとめていきたいと思います。

1次元配列のソート(並び替え)

みなさんこんばんは

遊戯王デザインのハイカットブーツが結構どストライクで買おうかどうかとても悩んでいるブルーノです。デュエルリンクスの方もちょこちょこやっているのですが面白くて懐かしくて私は大好きですね。今回は1次元配列のソートの仕方についてやっていこうと思います。

 

ソートとは?

ソート(Sort = 並び替え)の意味はさすがにわかると思いますが配列において並び替えを行いたい場合はArrayクラスのSortメソッド、もしくはReverseメソッドを使うとやりやすいです。ちなみにArrayは英語で「列」という意味ですね。これは実際にプログラムを組んで見れば一目瞭然だと思います。

f:id:covory10101101276:20170523214919p:plain

f:id:covory10101101276:20170523214927p:plain

ガイアメモリを並び替えてみました。ではこれが日本語だったりするとどうなるでしょうか?

f:id:covory10101101276:20170523215531p:plain

こんな風になるんですねー。

 

いかがでしたでしょうか。入力された内容を配列に入れてそれを整理する場合などに役立てていきましょう。

ジャグ配列

みなさんこんばんは

気づいたらハンターハンターの記事ばかり眺めて一日が終わってしまっているブルーノです。冨樫先生の作品は分かりやすい頭脳戦って感じで私は大好きです。今回はジャグ配列という特殊な配列についてやっていきたいと思います。

 

ジャグ配列とは?

前回、前々回と配列について扱ってきました。そして中でも前回の2次元配列は2行の配列ということを学びましたが、宣言の仕方から少し疑問に思うことはありませんでしたか?

もし要素数がどの行も同じならば2次元でも良いですが、例えば1クラスの人数は学年を通して全クラス同じとは限りません。実際私の小学校6年の時のクラスは30人でしたがそれ以外のクラスは31人でした。その場合、多次元配列だとうまく宣言できませんね。そこで今回のジャグ配列が使えます。この配列は行ごとに要素数を指定できるのです。以下のように宣言します。

ジャグ配列の宣言の仕方

データ型 配列名;

例)string MyClass;

 

そして次に2次元目をnew演算子を使って生成します。

Myclass = new string[2] ;

ここを[3]にすれば3次元目まで生成されます。

また例によって宣言と要素数を同時に宣言しちゃいましょう

string MyClass = new string[2] ;

そして2行まで作ったらそれぞれの配列の要素を生成します

MyClass[0] = new string[30];

MyClass[1] = new string[31];

 

これで要素数30の配列と31の配列を含む2次元配列MyClassができました。なんだか多次元をいちいち宣言するよりもこちらの方が柔軟でいい気がしますね。アクセスの仕方はMyclass[1次元目] [2次元目]のようにアクセスします。さすがに30人分考えるわけには行かないので今回は組むのをやめておきます。

 

いかがでしたでしょうか。実際これだけあれば普通の多次元配列はいらないのでは?と思いました。しかし、ある以上は何か必要性があとで出てくるはずです。もしくは何か知ってる方がこれをみたら是非指摘してください。

2次元配列について

みなさんこんにちは

コーラが大好きで家に1.5Lコーラを3、4本は常備しているブルーノです。今回は前回の配列の進化バージョンの2次元配列をやっていきたいと思います。

 

2次元配列とは?

前回、配列は同じカテゴリをまとめておくものだと説明しました。しかしときには2種類の添え字を使って管理すると便利な場合があります。例えば、1学年2クラスの生徒を出席番号順に並べる場合は一つの配列で全学年の生徒を羅列して別々の番号で保存するより、各クラスごとに保存したいですよね?この例があっているかは微妙なところですが、今回はそういう風に理解していくことにします。まずは書き方からやっていきます。

2次元配列の宣言の仕方

 

データ型[,] 配列名;

例)string[,] MyGrade;

 

 

これでMyGradeという名前の2次元配列ができました。普通の配列と違うところは [ ] の間にカンマ , が入っていることですね。宣言と同時に要素も生成したい場合は配列のように以下のようにします。

データ型[,] 配列名 = new データ型[要素数1, 要素数2];

例)string[,] MyGrade = new string[2, 5];

 

これで2×5の2次元配列ができました。つまり要素数は合計で10個ですね。しかし、配列の時のようにこれだけでは使えません。中に値を設定する、つまり初期化ですね。

ここで色々用語が紛らわしいので一旦整理しておくことにします。自分でもなかなか複雑で覚えづらいので....

配列の宣言 = これから使いますよという宣言(結局唱えただけで何も作っていない)

要素の生成 = 使う配列の中身の数の指定(その配列に何個の入れ物を用意するか)

初期化 = 中身の最初の設定(中に何を入れるかを指定する)

 初期化は配列の時と同じようにいきなり羅列してしまって構いません。

初期化の仕方

MyGradeの例でいうと

string[,] MyGrade = {

{ [0,0の初期値], [0,1の初期値], [0,2の初期値], [0,3の初期値], [0,4の初期値] },

{ [1,0の初期値], [1,1の初期値], [1,2の初期値], [1,3の初期値], [1,4の初期値] }

}

string[,] MyGrade = {

{ 亜位 上男, 柿 久華子, 佐子 周世男, 館 伝手子, 菜二 抜寝男 },

{ 葉火 府経子, 間未 武目男, 屋井 湯絵子, 羅理 留列子, 和井 音 }

}

 

のようになります(50音が10列でよかった...)。括弧の関係が見辛いので改行してみましたが無理にこの形にしなくても構わないです。要素数にアクセスするには以下のようにします

配列名[添え字1, 添え字2]

例)MyGrade[1,3]

 

この例だと羅理 留列子さんにアクセスしますね。では少し長くなりますが、2クラスの生徒の名前にアクセスするようなプログラムを組んでみます。

f:id:covory10101101276:20170523202030p:plain

f:id:covory10101101276:20170523202039p:plain

多分無駄が多いプログラムだと思います。欠点もあって出席番号の質問のときに整数以外を入力すると止まってしまいます。これを改善するにはまた別の方法を使わなければならないのですが今回は簡略化するためにこのようにしました。とにかく!これで2ックラスの生徒の管理ができるようになりましたね。ようは配列の簡単な派生のようなものですね。2次元があるということは3次元も4次元も永久にあるということです。しかしこのまとめでは簡略化するために使用頻度が高い2次元配列までにしておきます。多次元配列も今回の感じは変わらないようです。