前回のコメント

・なぜか書式指定が出るたびに頭の中で理解ができず、混乱してしまいます。(p.30-p.34のところ)
今回も練習問題3-1で一瞬書式指定が出ましたけど、すぐに理解ができず… (1年は{0, 0:#,#}秒)
何かうまく覚えられるようなコツ(?)などはないでしょうか。(あるいはこればかりは経験で慣れるのみでしょうか)

 確かに、慣れが必要な構文ですが、よく使うパターンを理解すると良いかもしれません。
 {番号}:書式なしで埋め込む
 {番号,桁数}:確保してほしい桁数を指定して埋め込む(桁数を超えたらそのまま)
 {番号,0:#,#}:3桁カンマ区切りで整数で表示(桁数はダミー扱い)
 {番号,0:#,#.00}:3桁カンマ区切りで小数点以下2桁まで表示(桁数はダミー扱い)
 {番号,2:00}:2桁以下の数値を00~99で表示(3桁以上だとそのまま)
 いろいろと試してみてください。

・%はプレイヤーのインベントリを作るとき使うイメージですが、ほかに何で使いますか?

 剰余算の利用例の一つに10進数の下n桁を得ることがあります。
 「% 10」で下1桁が、「% 100」で下2桁が、「% 1000」で下3桁が、得られます。
 これと整数商を組み合わせると、西暦年yを用いて、
 Console.WriteLine(“{0}年は{1}世紀で、略すと{2,2:00}年”, y, (y – 1) / 100 + 1, y % 100);
 のような処理ができます。
 また、金種計算にも使います。金額mを5円玉と1円玉で最小の枚数によって出すには、
 Console.WriteLine(“{0}円は5円玉{1}枚、1円玉{2}枚”, m, m / 5, m % 5);
 とできます。試してみてください。

・インクリメントで
 int a = 10;
 Console.WriteLine(a++);
 Console.WriteLine(a);
は10の次に11となりました、解説では後置のインクリメントは評価してからと言ってたのは、計算前の10が出されてからってことですか?
 Console.WriteLine(a);の段階でインクリメントの評価がされるということですか?

 後置++演算子によるインクリメントは「変数値を評価としてから+1する」です。
 よって、Console.WriteLine(a++); は、内部的には、
 ① Console.WriteLine(a); //aの値である10を表示
 ② a = a + 1; //aの値である10に1を加えた結果の11をaに代入
 という順に処理されます。今回は、この後で、
 ③ Console.WriteLine(a); //aの値である11を表示
 を確認用に実行しているわけです。インクリメントの評価は①・②で行われています。

・素朴な疑問なのですが、前置単項演算子と後置単項演算子はどのように使い分けられていますか?

 インクリメントを単独で行う場合、前置でも後置でも同じ動作になります。
 つまり「a++;」と「++a;」はこれだけなら同じ結果です。
 よって、どちらでも構いませんが、チームルールでどちらかに定める場合もあるようです。
 なお、制御文で学習するfor文に用いる場合は、後置にする方が多いようです。
 問題は、インクリメントを処理の中や式の中で行う場合で、
 ①処理や計算の「前に」インクリメントしておきたい場合は前置を用いる
  例: int a = 10, b = ++a + 20; //aは11に、bは31になる
 ②処理や計算の「後で」インクリメントしたい場合は後置を用いる
  例: int a = 10, b = a++ + 20; //aは11に、bは30になる
 となります。
 例えば、カウントアップを表示する処理では、前置を用いて「+1してから表示」、
 カウントダウンする処理では、後置を用いて「表示してから-1してマイナスになったら終わる」
 などと使い分けることがあります。

今週の話題

ゲームソフト販売本数ランキング:今週1位は「カービィのエアライダー(Switch2)」 GO!
『FFIX』の25周年が詰まった展覧会は感涙ものだった「FINAL FANTASY Ⅸ 25th ANNIVERSARY THE EXHIBITION‐いつか帰るところ‐」展覧会レポート GO!
関西圏で初開催、「大阪ゲームダンジョン」は18歳以下入場無料に!「若い方にもインディゲームの世界に触れてほしい」GO!
「鉄拳ワールドツアー」ライブ視聴有料化を否定。原田氏「一言も言ったことはない」GO!
任天堂がバンダイナムコのシンガポール法人を買収へ。『スプラ』一部開発実績あるスタジオ、『メトロイドプライム4』旧開発元の噂も GO!

上海公演続々中止に…「バンダイナムコフェスティバル2025」では日本人演者が歌唱中に強制退場 GO!
正式版リリース直後に躓いた『Escape from Tarkov』ユーザーレビューが“賛否両論”まで持ち直す GO!

前回のコメント

・授業を進める際、アレンジ演習の時間(やるよう指示されてから答え(作成例)が出されるまでの時間)が短いような気がします。
 また、新しい単元に入ってテキストに書いてあるサンプルプログラムを、自分は1から打ち直しているのでアレンジ演習がどうしても遅れてしまうのですがどうしたらいいでしょうか?

 テキスト3章以降についてはこのサイトの「ソース」からプログラムソースを
 ダウンロードしてお使いください。
 実際の業務ではプログラムソースを1から打ち直すことはありませんので、既存のソースを読んで理解し
 アレンジする演習を兼ねています。
 アレンジ演習の時間は、既存のソースを用いる前提で時間を取っていますので、ご了承ください。
 なお、それでも時間不足であれば、遠慮なく「ちょっと待って欲しい」と声をかけてください。

・列挙型を使うときのお決まりのパターンとかってあるんですか?状態を切り替えるためにSwitch文とかといっしょに使うって感じですか?

 ゲームで良く用いるパターンに状態遷移があります。
 状態を表す変数を定義して、タイトル表示を0、プレイ画面を1、ゲームオーバーを2、クリアを3、
 という風に表すことがありますが、これを列挙にして、TITLE, PLAY, GAMEOVER, CLEARとすれば、
 プログラムソースの可読性、保守性(改良しやすさ)が非常に向上します。
 お気づきの通りで、列挙は次回以降で学習するswitchで用いると便利です。

 
・C#はC言語から派生されたものの、C/C++と違ってかなり異なっているように見えます。
 (文法が異なったり、C/C++ではなかったものがあったりなどなど…)
 どうしてここまで異なってしまったのでしょうか… 単純な疑問です。

 はい、C#の登場と発展の経緯で、元になったCとは大きく異なってしまいました。
 これは前世紀に登場したC、C++、Javaに対して、今世紀に登場したC#が、
 「Cを改良したC++の性能と、Javaの安全性・移植性を組み合わせること」を目標としたからです。
 そして、.NET向けに最適化した為、文法はC/C++に似ていますが、中身は大きく異なっているわけです。

今週の話題

ゲームソフト販売本数ランキング:今週1位は「桃太郎電鉄2 ~あなたの町も きっとある~ 東日本編+西日本編(Switch)」 GO!
サイバーエージェント、藤田社長の電撃交代と「フォーエバーヤング」の奇跡──最高益へ導いたゲーム事業の爆発力【ゲーム企業の決算を読む】GO!
ゲーム制作の最新技術&サービスが集結!セッションも盛況な「GTMF 2025」大阪会場をレポート―25日には東京・新宿でも開催予定 GO!
ライバルから協力関係へ!Unity製ゲームが『フォートナイト』で展開可能に―Epic Gamesとの提携発表、UnityのコマースはUnreal Engineにも対応へ GO!
サードウェーブ、Unreal Engine時代の“理想の開発環境”を提案 GO!
ユービーアイソフト、上半期業績発表延期も業績は堅調―会計処理に問題もテンセントとの取引は完了の見込み GO!

ハンターvsゾンビFPS『Ravenous Horde』は「財政的に大失敗した」ために有料化―現地12月6日までは無料で入手可能 GO!
「トランスフォーマー」の世界を舞台にしたSRPG『TRANSFORMERS: BATTLEGROUNDS』12月末にSteamから配信停止。ライセンス契約終了のため GO!
『アノ 117: パックスロマーナ』粗悪なAIコンテンツ利用との指摘にUBIが謝罪―仮置きのデータが誤って混入 GO!

前回のコメント

・今まで習った内容を定着させるために、入力と出力、変数を使った簡単なゲームを作ってみたいんですけど、作れるとしたらクイズゲームとかですかね?

 そうですね。いろいろと試してみてください。
 もう少し進むと、分岐と繰返しが使えるので「問題を10問出題し正解数を表示」のようなゲームも
 簡単に作成できるようになります。お楽しみに。

・今回最初に取り扱った内容がC#以外の言語ではあまり見られないといいましたが、
 その場合他のC言語(C++など)を使う場合今回の内容で通用するのでしょうか?

 decimal型の件ですね。
 C#以外で標準の型として用意されている一般的な言語は、Python、Java、Rubyのみです。
 (※ Java、RubyはBigDecimal型)
 よって、C/C++では同じことはできません。なお、VC++での対処策としては:
 ① 10のn乗倍して、long long型や、unsigned long long型の整数として扱う
 ② 標準ではないが、似た機能を持つBoost.Multiprecisionを入手し追加インストールする
 などがありますが、利用法には制限があり、工夫が必要です。

今週の話題

ゲームソフト販売本数ランキング:今週1位は「ゼルダ無双 封印戦記(Switch2)」 GO!
【深掘り解説】任天堂、売上高2.2兆円へ上方修正-スイッチ2絶好調の裏で進む“収益構造の変化”とは【ゲーム企業の決算を読む】GO!
ゲーム史に残る初のLGBTQゲームも遊べる!横浜で開催中の展覧会「Under commons / アンダーコモンズ」レポート GO!
『レッド・デッド・リデンプション2』売上7,900万本超え!『マリオカート8』超え果たす GO!
スクエニが事業改革を加速、「QAの7割AI化」と「海外スタジオ閉鎖」など開発体制を抜本的に見直し GO!

終末サバイバルクラフト『MISERY』Steamから削除―『S.T.A.L.K.E.R.』GSC Game WorldによるDMCA申請(著作権侵害)が原因と主張 GO!
大規模に置き換え可能という考えは愚か―『バルダーズ・ゲート3』開発者がスクエニの「QA・デバッグの7割AI化」計画に苦言 GO!
『ウマ娘』を巡るCygamesとコナミの訴訟、和解へ―サイゲ側は「特許権侵害の事実はないと確信しておりますが」とも GO!

※昨日開催:Unreal Engineの大型勉強会「UNREAL FEST 2025 TOKYO」 GO!