Month: August 2025

講義は休みでしたが今週の話題

ゲームソフト販売本数ランキング:今週1位は再び「マリオカート ワールド(Switch2)」 GO! 【イベント告知】アカマイが「Akamai Cloud Day 2025」を9月24日に開催。特別セッションに安野貴博氏が登壇、ソニーグループや時雨堂の事例も GO! 赤字スタートのセガ、逆襲の鍵は『ソニックレーシング』と待望の『Football Manager』か【ゲーム企業の決算を読む】GO! 業績は減益、株価は高値。スクエニに迫る「物言う株主」の影【ゲーム企業の決算を読む】GO! グリーの2025年6月期決算は売上6.8%減―新作『まどドラ』投入もゲーム事業はQoQで減収【ゲーム企業の決算を読む】GO! 【キャリアクエスト】「これ、あったら面白い」を実際に作り出せる。セガ入社3年目の若手が語るプランナーという職種、そして自身の展望とは GO! マイクロソフト「Windows 11高負荷時にSSDを破損する不具合再現できず」と声明。一方Phisonは「Windows側の問題」と調査結果公表 GO! DDoS・Bot攻撃との“いたちごっこ”に終止符を──AkamaiとCygamesが語る、費用対効果と自動化を両立するセキュリティ戦略【CEDEC2025レポート】GO!

次回予告と今回の講義メモ

テキスト編次回予告:p.345「演算子のオーバーロード」から ゲーム開発演習:キーボードの状態を得る、画像の左右移動、簡易アニメーション など 講義メモ:memo20250802.zip

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

:キーボードの状態を得る、画像の左右移動、簡易アニメーション など テーマ24 背景画像のスクロール【再掲載】 ・背景画像を2枚用意して、1枚目の描画開始位置を少しずつずらし、空いた部分にもう1枚をつながるように描画すれば、  背景画像のスクロールが可能 ・なお、C#のGDI+では描画位置を示す座標を負の数や描画範囲外にできる。これにより、画像の一部を表示することが可能 ・画像全体が描画範囲の外になったら、描画対象から外すか、描画位置を変えると良い ・背景画像の縦スクロールの場合、描画開始位置が下端を超えたら0に戻すと良い ・背景画像は2枚になるが、画像オブジェクトは1つで良く、2つの参照変数で扱えば良い 提出フォロー:演習24 背景画像の縦スクロール ・背景画像のつなぎ目のY座標を示す変数backyを0で初期化しておき、タイマーによってインクリメントする  (背景画像.Heightを超えたら0に戻す) ・背景画像の描画を2回に増やし、(0, backy)からと、(0, backy – 背景画像.Height)から描画する ・タイマーのインターバルは10ミリ秒に変更すると良い ・プレイ画面の背景もシームレスにスクロールしたいので、タイマーのインクリメントはシーンに限らず行うように変更 作成例 //テーマ24 背景画像のスクロール using System; //C#標準クラス用 using System.Windows.Forms; //Application、Formクラス用 using System.Drawing; //Size、Graphics、Image、Penクラス、Color構造体用 class Program : Form { //Formクラスの派生クラス     enum mode { TITLE, PLAY, OVER }; //タイトル画面、プレイ画面、ゲームオーバー画面     mode scene = mode.TITLE; //シーンをタイトル画面とする     Image backi; //画像ファイル用変数     Timer t = new Timer(); //タイマーを生成     int sec = 0; //経過秒数     int backy = 0; //【追加】背景画像のつなぎ目のY座標     protected override void OnPaint(PaintEventArgs e) { //描画処理のオーバライド         //全画面に共通の描画処理         base.OnPaint(e); //元のメソッドの内容を呼び出す         e.Graphics.DrawImage(backi, 0, backy); //【変更】背景画像①を描画         e.Graphics.DrawImage(backi, 0, backy – backi.Height); //【追加】背景画像②を①の直上に描画         Font fm24 = new Font("メイリオ", 24, FontStyle.Bold); //フォントを生成         Brush bcyan = new SolidBrush(Color.Cyan); //シアン色のソリッドブラシを生成         switch (scene) { //シーンにより分岐         case…

Read the full article

講義メモ

テキスト編:p.323「例外処理の基礎(tryブロック・catchブロック)」から ゲーム開発演習:キーボードの状態を得る、画像の左右移動、簡易アニメーション など p.321 例外処理の基礎 ・プログラムによって異常状態が発生すると「実行時エラー」として、発生時点で異常終了する。 ・この異常状態を「例外(Exception)」として、これを表すクラスのオブジェクトで扱うことができる ・このオブジェクトを受け取って処理する仕組みが例外処理で、例外処理を組み込むことで「実行時エラー」をコントロールできる。 ・例えば、p.322 exception01.cs のように、double.Parse()メソッドに実数に変換できない文字列を渡すと、  Exceptionクラスの派生クラスであるFormatExceptionクラスのオブジェクトが生成され、例外処理がないので異常終了する。 ・以下が異常終了時のメッセージとその解説: ハンドルされていない例外: System.FormatException: 入力文字列の形式が正しくありません。  ⇒「ハンドルされていない」とは例外処理がないか例外処理対象になっていないことを示す  ⇒「System.FormatException」は形式例外を表すクラス  ⇒「入力文字列の形式が正しくありません。」はこのクラスのMessageプロパティにある文字列 場所 System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt) 場所 System.Double.Parse(String s) 場所 MyClass.Main() 場所 F:\ha241_AkibaC#\Project1\Project1\exception01.cs:行 9  ⇒下から上に向かって例外発生の経緯を示す。C#で実際にどう扱われたかがわかる  ⇒一番下の1行で「発生の起因となったクラス名.メソッド名 場所:ソースファイル名:行番号」が明示されている p.323 例外処理の基礎(続き)try-catch ・例外処理対象はtryブロックの記述によって指定する ・tryブロック内で例外が発生したら、その直後にcatchブロックを記述することで、対処ができる ・catchブロックで対処が行われたら例外状態は解消され、処理が続行される ・ただし、tryブロック内に複数の記述があり、その途中で例外が発生した場合は、発生行の下の行は実行されない ・例:下記の場合、①④⑤の順に実行され、②③はスキップされる try {  ①例外が発生する処理  ②処理  ③例外が発生する処理 } catch {  ④対処の処理 } ⑤通常処理 アレンジ演習:p.324 exception02.cs ・元のプログラムでは実数除算なのでゼロ除算の例外が発生しないので、形式例外(FormatException)のみになる ・そこで、変数a、bをint型にして、ゼロ除算の例外処理も記述しよう ・なお、実数除算で0.0以外の正の値を0.0で割ると∞、0.0以外の負の値を0.0で割ると-∞,0.0を0.0で割ると  NaN(Not a Number=非数)となる。 作成例 //アレンジ演習:p.324 exception02.cs using System; class MyClass {     public static void Main() {         int a = 0, b = 0; //【変更】         Console.Write("割られる数–");         string strA = Console.ReadLine();         try { //例外処理対象範囲①             a = int.Parse(strA); //【変更】形式例外発生の可能性         }         catch { //例外処理             Console.WriteLine("不適切な入力です"); //形式例外発生時の処理         }         Console.Write("割る数—");         string strB = Console.ReadLine();         try {…

Read the full article

今週の話題

ゲームソフト販売本数ランキング:今週1位も「マリオカート ワールド(Switch2)」 GO! サイバーステップはオンクレ『トレバ』不振で5期連続の赤字、暗号資産事業で活路を模索【ゲーム企業の決算を読む】 GO! 「スイッチ2」全世界売上600万台突破。『マリカ ワールド』も563万本、初代スイッチを大きく上回る GO! 【キャリアクエスト】ツールが便利になる今、プログラマーに必要とされるものとは?アトラスで働くなかで見えてきた「プログラマーならではの仕事」GO! 「東京ゲームショウ2025」ビジネスデイ有料事前登録が開始!SIE社長・西野秀明氏による基調講演も決定 GO! 音楽はAIとの音声対話で作る時代に入った。Riffusion改めProducer.aiのAIプロデューサーと日本語で会話するだけで曲を作ってくれるのだ GO! インディーゲームの祭典「BitSummit the 13th」なんと5万8,000人以上が来場。来年は開催時期5月に、猛暑は回避? GO! 成人向けゲームの規制に揺れるitch.io、寄付すら不可の「無料の成人向けゲーム」に限り表示再開を実施―決済代行業者を経由しないため GO! 「プラチナゲームズ」を名乗る不審なメールに注意喚起―求人募集を装って送付、フィッシング詐欺等の可能性も GO!