Category: 未分類

講義メモ:ゲーム開発演習

文字列の描画(つづき)、画面遷移、など 提出フォロー:演習19 チェス盤を描こう・改 ・木目の画像を用意してImageとして用いることで、リアルなチェス盤を描こう ・mokume0.png https://ha242.rundog.org/wp-content/uploads/2025/06/mokume0.png  mokume1.png https://ha242.rundog.org/wp-content/uploads/2025/06/mokume1.png ・合わせて升目のサイズを50×50にしよう 作成例 //演習19 チェス盤を描こう・改 using System; //C#標準クラス用 using System.Windows.Forms; //Application、Formクラス用 using System.Drawing; //Size、Graphics、Image、Penクラス、Color構造体用 class Program : Form { //Formクラスの派生クラス     Image backi, playeri, chess0, chess1; //【変更】画像ファイル用変数     protected override void OnPaint(PaintEventArgs e) { //描画処理のオーバライド         base.OnPaint(e); //元のメソッドの内容を呼び出す         e.Graphics.DrawImage(backi, 0, 0); //画像をフォーム左上に配置         e.Graphics.DrawImage(playeri, backi.Width / 2 – playeri.Width / 2,             backi.Height – playeri.Height * 2); //自機を中央下部に描画         //Pen pCyan2 = new Pen(Color.Cyan, 2); //【削除】水色の太さ2のペンを生成         Brush bMokume0 = new TextureBrush(chess0); //【変更】木目テクスチャブラシ0を生成         Brush bMokume1 = new TextureBrush(chess1); //【変更】木目テクスチャブラシ1を生成         for(int i = 0; i < 8; i++) { //8列             for(int j = 0; j < 8; j++) { //8行                 if ((i + j) % 2 == 0) { //1つおきに                     e.Graphics.FillRectangle(bMokume0,…

Read the full article

講義メモ

・テキスト編「第12章 デリゲートとイベント」から ・ゲーム開発演習:文字列の描画(つづき)、画面遷移、など 第12章 デリゲートとイベント p.295 デリゲートとは ・メソッドへの参照を保持しておいて、これを用いてメソッドを呼び出せる仕掛け ・つまり、デリゲートを通じてのメソッドの呼び出しが可能 ・C/C++における「関数へのポインタ」と同じ考え方を洗練したもの ・イベント処理などで必須のテクニック ・宣言書式: delegate メソッドの戻り値型 デリゲート名(メソッドの引数リスト); ・例:bool answer(int x){…}メソッド用のデリゲートmdならば、delegate bool md(int w) とする ・利用にはデリゲートオブジェクトの生成が必要で、この時に呼び出したいメソッドの指定もできる ・生成書式: デリゲート名 参照変数 = new デリゲート名(メソッド名); ・例:bool answer(int x){…}メソッド用のデリゲートmdならば、md mymd = new md(answer); ・デリゲート経由で指定済のメソッドを呼び出すには、参照変数を別名のように利用できる ・例: bool b = mymd(5); // answer(5)が呼ばれ戻り値が返される p.297 delegate01.cs について ・Main()メソッドの戻り値をint型にしているが、この場合、必要性はないので、いつもの通り voidにして良い ・よって「return 0;」も不要 p.297 delegate01.cs(修正後) //p.297 delegate01.cs using System; delegate void MyDelegate(); class delegate01 {     public static void show() { //Main()メソッドから呼ばれる静的メソッド         Console.WriteLine("呼ばれました");     }     public static void Main() {         //直接showメソッドを呼び出す         show();         //デリゲートの作成         MyDelegate md = new MyDelegate(show);         //デリゲートを通してshowメソッドを実行         md();     } } アレンジ演習:p.297 delegate01.cs ・上記の例のメソッドを追記し、これを呼び出すデリゲートをMainに追加して動作を確認しよう  static bool answer(int x){ return (x >= 0); } //xが0以上ならtrueを、でなければfalseを返す 作成例 //アレンジ演習:p.297 delegate01.cs using System; delegate void MyDelegate(); delegate…

Read the full article

今週の話題

ゲームソフト販売本数ランキング:今週1位も「マリオカート ワールド(Switch2)」 GO!DLSS/FSRは全部同じじゃない!ゲーマーなら知っておきたい「超解像」「AIアンチエイリアシング」「フレーム生成」の違いを徹底解説 GO!Limited Run Games、同社のレトロゲーム復刻ゲームエンジン「Carbon Engine」がスイッチ2に対応したことを発表。12タイトルの互換性が保証される GO!著作権訴訟渦中のミッドジャーニーがAI動画生成スタート。5秒480pという低スペックながら使い勝手がいい理由 GO! 『Limbo』『Inside』の共同開発者の間で訴訟が勃発…古巣との9年に及ぶ確執に裁判での情報公開に期待と元スタジオCEO GO!Steam版『モンハンワイルズ』“圧倒的に不評”を記録―一時期は同接138万人越えの大作 GO!

第7回のテキスト編の講義メモ

本日予定していた講義内容(テキスト編)の講義メモです。 memo20250614.txt 次回のテキスト編は、このフォローからになりますので、一読をお願いします。 講義メモ テキスト編:p.291「DateTime構造体:clock01.cs」から p.291 DateTime構造体:clock01.cs ・構造体の中でもC/C++から引き継がれた日付時刻の機能にメソッドやプロパティを加えたDateTime構造体は活用しやすい。 ・コンソールに関する各種のプロパティやメソッドを併用することで、動きのあるコンソールアプリケーションを作成できる。 p.292(Consoleクラスの静的プロパティと静的メソッド) ・Consoleクラスには、すでに学習した静的メソッドWrite、WriteLine、ReadLineに加えて便利な静的メソッド、静的プロパティが多数提供されており、コンソールを疑似的な実行ウインドウにすることができる ・bool CursorVisible静的プロパティ:falseを設定するとカーソルが見えなくなる。チラつき防止に便利。 ・string Title静的プロパティ:コンソール名を設定できる。 ・void SetWindowsSize(int,int)静的メソッド:ウィンドウの幅と高さを文字数で指定できる ・ConsoleColor BackgroundColor静的プロパティ:ConsoleColor列挙型で背景色を指定できる。例:ConsoleColor.Yellow ・ConsoleColor ForegroundColor静的プロパティ:ConsoleColor列挙型で文字色を指定できる。 ・void Clear()静的メソッド:再描画して設定を反映する(※実行すると文字色・背景色の変更が有効になる) ・void SetCursolPosition(int,int)静的メソッド:カーソルの位置を変える。移動先は文字数。 ・bool KeyAvailable静的プロパティ:キーが押されているとtrueになる アレンジ演習:p.291 clock01.cs ・ストップウォッチにしよう ・実行すると「00:00:00」を表示してカウントを開始する ・これを実現するには、時刻を表す1000万分の1秒刻みのカウンタを返すDateTime構造体のlong Ticksプロパティを用いる ・起動時のTicks値を保持しておいて、Nowで得た時点のTicks値との差で経過時間が得られる ・この差を1000万倍すると秒になるので、これを3600で割った結果が時間、60で割った余りが秒、60で割ってから60で割った余りが分になる 作成例 //アレンジ演習:p.201 clock01.cs using System; class clock01 { public static void Main() { int oldsecond = 0; //秒が変わったどうかの判断用に現在の秒を待避しておく変数 Console.CursorVisible = false; //カーソルを消す Console.Title = “時計”; //コンソールタイトルを設定 Console.SetWindowSize(12, 3); //コンソールウィンドウの大きさを12字×3行に変更 Console.BackgroundColor = ConsoleColor.Yellow; //背景色を黄色に Console.ForegroundColor = ConsoleColor.Black; //文字色を黒色に Console.Clear(); //色の設定を反映する DateTime st = DateTime.Now; //【追加】開始時の現在時刻を得る DateTime mt; //日付時刻構造体を生成 while (true) { //無限ループ mt = DateTime.Now; //現在時刻を得る int lap = (int)((mt.Ticks – st.Ticks) / 10000000L); //【追加】経過秒数を得る int hor = lap / 3600; //【追加】経過秒数から経過時間を得る int min = lap…

Read the full article

今週の話題

ゲームソフト販売本数ランキング:今週1位は「マリオカート ワールド(Switch2)」 GO!“SUMMER GAME FEST 2025”発表まとめ。『バイオ9』『コードヴェイン2』発表、龍が如くチーム新作の最新情報も! GO!6月5日配信「State of Play」ピーク時視聴者数が最高記録達成!225万人超え GO!「Nintendo Live 2025」開催決定。スイッチ2ゲーム体験や『マリオカート ワールド』で世界各地のプレイヤーが競うイベント実施 GO!「スイッチ2」での「スイッチ」ソフト動作確認状況が一目瞭然!マイニンテンドーストアにて互換性表記開始 GO! 『ボーダーランズ2』レビュー荒らしのきっかけとなった利用規約変更について声明公開―スパイウェアは使用しておらず、シングルプレイ&非商用Modは黙認の方針 GO!「Ubisoft Forward」2025年は開催されない見通し?海外ジャーナリスト報じる。5月には一部主要タイトル延期発表も GO!

講義メモ:ゲーム開発演習

:図形の塗りつぶし、文字列の描画 など 提出フォロー:演習17 同心円を描こう ・フォームの中央から外側に向かって半径を10ずつ増やしながら9個の同心円を描こう 作成例 //演習17 同心円を描こう using System; //C#標準クラス用 using System.Windows.Forms; //Application、Formクラス用 using System.Drawing; //Size、Graphics、Image、Penクラス、Color構造体用 class Program : Form { //Formクラスの派生クラス     Image backi, playeri; //画像ファイル用変数     protected override void OnPaint(PaintEventArgs e) { //描画処理のオーバライド         base.OnPaint(e); //元のメソッドの内容を呼び出す         e.Graphics.DrawImage(backi, 0, 0); //画像をフォーム左上に配置         e.Graphics.DrawImage(playeri, backi.Width / 2 – playeri.Width / 2,             backi.Height – playeri.Height * 2); //自機を中央下部に描画         Pen pCyan2 = new Pen(Color.Cyan, 2); //水色の太さ2のペンを生成         int mx = backi.Width / 2, my = backi.Height / 2; //【以下追加】中心座標         for(int i = 1; i <= 9; i++) { //9個             e.Graphics.DrawEllipse(pCyan2, mx – i * 10, my – i * 10, i * 20, i * 20); //円を描く         }     }     public Program() { //コンストラクタ         try { //例外処理対象…

Read the full article

講義メモ

テキスト篇:p.282「構造体でインターフェイスを実装する」 ゲーム開発演習:図形の塗りつぶし、文字列の描画 など p.282 構造体でインターフェイスを実装する ・C#の構造体は「軽量クラス」の位置づけで、クラスの機能を削って軽くしたもの。  ※そのため、Unityなどで活用されており、Vector3構造体など、Unity独自の構造体の出番が多い ・継承はできないが、インターフェイスの実装であれば可能 ・クラスにおけるインターフェイスの実装とほぼ同じだが、インターフェイスを実装した構造体の利用には  new演算子による明示的なオブジェクトの生成が必要 アレンジ演習:p.282 struct05.cs ・「= new MyStruct();」を省略するとどういうエラーになる確認しよう ・適当なインターフェイスの定義を追加し、構造体が複数のインターフェイスを実装可能か確認しよう 作成例(p.263「複数のインターフェイスを実装する」参照:抽象メソッド名が異なる場合) //アレンジ演習:p.282 struct05.cs using System; interface IMyInterface { //インターフェイス①の定義     void Show(); //抽象メソッド     int xprop { //抽象プロパティ         get;         set;     } } interface Flyable { //【追加】インターフェイス②の定義     void Fly(); //抽象メソッド(インターフェイス①とは名前が異なる) } struct MyStruct : IMyInterface, Flyable { //【変更】2インターフェイスを実装する構造体     int x;     public void Show() { //インターフェイス①の抽象メソッドのオーバーライド         Console.WriteLine("x = {0}", x);     }     public void Fly() { //【以下追加】インターフェイス②の抽象メソッドのオーバーライド         Console.WriteLine("Flyable.x = {0}", x);     }     public int xprop { //抽象プロパティのオーバーライド         get { return x; }         set { x = value; }     } } class struct05 {     public static void Main() {         MyStruct msNew = new MyStruct(); //newによる明示的なオブジェクト生成が必要         msNew.Show(); //インターフェイス①の抽象メソッドのオーバーライドを呼ぶ         msNew.xprop = 20;…

Read the full article

今週の話題

ゲームソフト販売本数ランキング:今週1位は「ELDEN RING NIGHTREIGN(PS5)」 GO!6月7日より開催の「Summer Game Fest 2025」は60以上のパートナーが参加!スイッチ2も名を連ねる GO!「BitSummit the 13th」オフィシャルPRサポーターズ&追加スポンサー発表!そのほか松竹の新作『夢幻桜楼閣』出展も明らかに GO!「150点のゲームを毎回作る」「人がプレイしてなんぼ」―“カプコン流”のアートや仕事の秘訣とは?「大カプコン展」会場で実施!クリエイター対談イベントをレポート GO! EAのマーベル「ブラックパンサー」ゲームが開発中止…開発スタジオも閉鎖、日の目を見ることなく消滅へ GO!「ワンピース」酷似の『パイレーツアニメクエスト』マイニンテンドーストアから削除 GO! 【最新】“SUMMER GAME FEST 2025”発表まとめ。『バイオ9』『コードヴェイン2』発表、龍が如くチーム新作の最新情報も! GO!