Author: maurundog

今週の話題

販売本数ランキング 今回トップは「ペルソナ3 リロード(PS5)」GO! ドット絵によるアニメーション制作の味方『Aseprite』がSteamなどで50%オフの1025円に(2/14まで)。入門~本格的なゲーム制作まで幅広く活用可能 GO! 『GTA5』累計販売本数が1億9,500万本を突破―『GTA6』トレイラーや12月のアップデートでプレイヤーが増加傾向など決算報告で明らかに GO! ゲームオーディオのグローバルリーダーAudiokinetic主催「Wwise Tour 2023 Tokyo」イベントレポート&『Hi-Fi RUSH』を手掛けたTango Gameworksインタビュー GO! ネクソン、過去最高売上も業績予想には届かず―『THE FINALS』は“課金額が予想を上回る”好調スタート、日本では『ブルアカ』が成長 GO! 『The Elder Scrolls II: Daggerfall』有志Unity移植版の制作者が独自作品の開発に着手 GO! KADOKAWA、アクワイアを100%子会社化―フロム・ソフトウェア、スパイク・チュンソフトとの連携を推進 GO! ニンテンドースイッチの国内販売台数がニンテンドーDSを超える…気になる次世代機については言及避ける GO! 『ファンパレ』『FF7EC』『プロセカ』のエンジニア・クリエイターが登壇―サイバーエージェント主催の技術カンファレンス3/7開催 GO! 【決算】コロプラの第1四半期は2割の減収、4億1400万の営業赤字で着地 GO! Unity Japan、大前広樹氏が社長を退任し、再びゲーム開発へ―新社長には産業営業本部長 松本靖麿氏 GO! 『原神』チートツール開発者に対し「可能な限り最高規模の」代償を、カナダで5万ドル規模以上の訴訟が進行中か―海外メディア報道 GO!

前回のコメント

・paramsが使いこなせれば便利になると思った  はい、C言語などには無い便利な仕掛けですので、ぜひ、使いこなしてください。

講義メモ 後半

p.205 静的メンバとインスタンスメンバの混在 ・1つのクラスに静的メンバとインスタンスメンバを混在させることが可能 ・ただし、静的メソッドはインスタンスメンバにアクセスできないので、下記は不可  ① 静的メソッドの中でインスタンス変数を用いる  ② 静的メソッドからインスタンスメソッドを呼び出す ・また、静的メソッドでは自オブジェクトを示すthisは使えない p.205 static03.cs //p.205 static03.cs using System; class Cat {     static int NoOfTail; //尾の数は猫共通なので猫クラスに所属する静的変数     string Name; //名前は猫共通ではなくオブジェクトに所属するインスタンス変数     public void SetName(string strName) { //インスタンス変数を扱うインスタンスメソッド         Name = strName; //インスタンス変数に代入     }     public void ShowCat() { //インスタンス変数も扱うインスタンスメソッド         if (Name == null) { //インスタンス変数を用いる             Console.WriteLine("名前が設定されていません");             return;         }         Console.WriteLine("猫の名前は{0}で尾の数は{1}本です",             Name, NoOfTail); //インスタンス変数と静的変数を扱うことが可能     }     public static void setCatTail(int no) { //静的変数のみを扱う静的メソッド         //ここでインスタンスフィールドにアクセス不可         //Name = "マイケル";         NoOfTail = no; //静的変数に代入     } } class static03 {     public static void Main() {         Cat.setCatTail(1); //静的メソッドを用いて猫共通の尾の数を設定         Cat mycat = new Cat(); //インスタンス①を生成         Cat yourcat = new Cat(); //インスタンス②を生成         mycat.ShowCat(); //①のインスタンスメソッドを呼ぶ         mycat.SetName("マイケル"); //同上         yourcat.SetName("パトリシア"); //②のインスタンスメソッドを呼ぶ         mycat.ShowCat(); //①のインスタンスメソッドを呼ぶ         yourcat.ShowCat(); //②のインスタンスメソッドを呼ぶ     } } p.207 プロパティ ・データメンバへの値の設定や、データメンバからの値の読み出しは、データメンバをpublicにすれば自由にできるが、  不適切な値の設定や、想定されていない読み出しがされることが避けられない。…

Read the full article

講義メモ

・p.201「引数が可変個のメソッド」から 提出フォロー:p.199 main02.cs //p.199 main02.cs using System; class main02 {     public static int Main(string[] args) { //コマンドライン引数を受け取り整数を返す         if (args.Length != 1) { //引数が1個でなければ             return -1; //終了コード-1を返す(異常終了)         } else {             if (!Char.IsDigit(args[0][0])) { //引数の0個目の0文字目が数字でなければ                 return -2;  //終了コード-12を返す(異常終了)             }         }         return int.Parse(args[0]); //引数の0個目を整数化して終了コードとして返す     } } p.201 引数が可変個のメソッド ・paramsキーワードと配列を引数として渡すことで、引数が可変個のメソッドが実現できる ・定義書式: アクセス修飾子 戻り値型 メソッド(params 引数型[] 引数名){…} ・引数の数に制限はないが、全てが同じ型、または、引数型のクラスの派生クラス型であること ・例: public int addall(params int[] n){…} ・ここの引数は引数名[添字]で利用可能で、指定された引数の数は、Lengthプロパティで得られる。 p.201 params01.cs //p.201 params01.cs using System; class MyClass {     public void show(params string[] animal) { //引数が可変個のメソッド         if (animal.Length == 0) { //引数が全く指定されていなければ             return; //何せずに戻る         }         for (int i = 0; i < animal.Length; i++) { //引数の数だけ繰返す             Console.WriteLine("{0}さんがいます", animal[i]);         }     } } class params01 {     public static void Main() {         MyClass mc…

Read the full article

今週の話題

販売本数ランキング 今回トップは「龍が如く8(PS5)」GO! 『アトリエ』シリーズ好調でコーエーテクモが2割増収―“月商20億円のスマートフォンゲーム”を生み出すことに成功【ゲーム企業の決算を読む】GO! 業績好調でも脱・中古ゲーム販売を進めるゲオが向かう先【ゲーム企業の決算を読む】GO! 『原神』が40カ月で売上50億ドルを達成―『クラッシュ・オブ・クラン』を抜き、モバイルゲーム最速記録 GO! CESA、「CEDEC2024」開催を発表ーセッション講演者の公募を開始 GO! マイクロソフトが2024年第2四半期決算を発表―アクティビジョン買収でゲーム部門が躍進 GO! 『いけにえと雪のセツナ』『鬼ノ哭ク邦』のTokyo RPG Factoryがスクエニに吸収合併、解散へ―権利義務一切はスクエニ側に引き継ぎ GO! 【決算】カプコンの3Q連結業績は4割超増益で着地―『スト6』などデジタル販売強化が奏功 GO! 【決算】コーエーテクモHDの3Q決算、経常利益100%増の大幅増益 GO! AppleがEU圏でアプリのサイドローディングを許可するも大手アプリは反発―Xboxサラ・ボンド氏「間違った方向に進んでいる」GO!

前回のコメント

・refを使うと参照渡しに変わるのが便利だなと思いました  まさに便利ですね。  便利=要注意でもありますので、上手く使いこなしてください。

講義メモ 後半

p.195 メソッドのオーバーロード ・p.168で説明のとおり、引数の型や数が異なるコンストラクタを記述できることをオーバーロード ・これは、メソッドでも可能なので、同じ意味の処理を行うメソッドは同じ名前にすると良い  ※ オーバーロードができないC言語では関数名が長くなるというデメリットがある ・コンストラクタと同様にシグニチャが異なればOKだが、メソッドの戻り値型はシグニチャに含まれないので注意 ・これは戻り値型だけが異なるメソッドは呼び出し時に区別できないため p.195 overload01.cs //p.195 overload01.cs using System; class manymethods {     public int Method(int x) { //メソッド①         Console.WriteLine("第1のバージョンが呼ばれました");         return x + 10;     }     public double Method(double x) { //メソッド②         Console.WriteLine("第2のバージョンが呼ばれました");         return x * 2;     }     public string Method(string x) { //メソッド③         Console.WriteLine("第3のバージョンが呼ばれました");         return x += "です";     }     public int Method(int x, int y) { //メソッド④         Console.WriteLine("第4のバージョンか呼ばれました");         return x + y;     } } class overload01 {     public static void Main() {         manymethods m = new manymethods();         Console.WriteLine("その戻り値は「{0}」です", m.Method(3)); //①を呼ぶ         Console.WriteLine("その戻り値は「{0}」です", m.Method(3.2)); //②を呼ぶ         Console.WriteLine("その戻り値は「{0}」です", m.Method("粂井")); //③を呼ぶ         Console.WriteLine("その戻り値は「{0}」です", m.Method(5, 6)); //④を呼ぶ     } } アレンジ演習:p.195 overload01.cs ・下記のシグニチャを持ち、最大値を返すMaxメソッドのオーバーロードに書き換えよう ① int Max(int, int) ② int Max(int, int, int) ③ double…

Read the full article

講義メモ

・p.185「フィボナッチ数列を求める」から p.181 階乗を計算する(再掲載) ・階乗とは、ある正の整数において、その数から1までの全整数の積  ※ 実質的にはその数から2までの全整数の積になる ・整数nの階乗を「n!」で表し、例えば、2!は2、3!は6、4!は24、5!は120、… ・これを逆順で展開すると  5! = 5×4×3×2×1  4! = 4×3×2×1  3! = 3×2×1 ・なので、5!=5×4!、4!=4×3! であることから「n! = n×(n-1)!」が導ける。 ・これをメソッドFactにすると、  int CalcFact(int n) { //nの階乗   return n * CalcFact(n – 1); //n×(n-1)!を返す(再帰する)  } ・これに、再帰の終了条件として「0の階乗は1」を加えると良い  int CalcFact(int n) { //nの階乗   return (n > 0) ? n * CalcFact(n – 1) : 1; //nが0超ならn×(n-1)!を返す(再帰する)でなければ1を返す  } ・p.182 fact01.csは上記を展開したメソッドになっている 提出フォロー:アレンジ演習:p.182 fact01.cs ・CalcFact(int n)メソッドを上記を用いてシンプルにしよう 作成例 //アレンジ演習:p.182 fact01.cs using System; class Fact {     public long CalcFact(int n) { //n!を返す         return (n > 0) ? n * CalcFact(n – 1) : 1; //nが0超ならn×(n-1)!を返す(再帰する)でなければ1を返す     } } class fact01 {     public static void Main() {         Fact f = new Fact();         for (int i = 0; i <=…

Read the full article