ステージの設定と管理

C# ASP.NET でゲームのステージを管理する方法と、Page_Load が実行されるタイミングを確認します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. Network Game では、多くの場合複数のステージでゲームが構成されます。
    ところがサーバー上のページインスタンスはクライアントに出力した段階で破棄されています。
    ポストバックが発生すると、サーバー上に新しいインスタンスが生成され処理されます。
    ステージ番号や現在表示中の情報を引き継ぐには、何らかの工夫が必要になります。
    その辺りが Network Game の最も解りにくい(難しい)所では無いでしょうか。 (^_^;)
  2. 最初に ViewState 情報を使って、ゲームのステージを管理する基本的な方法を説明しましょう。
    ViewState 情報は、ポストバックするときに HTML 内に非表示情報として保存されます。
    情報は「キーと値」の組み合わせで管理されます。
    情報を設定する方法と取得する方法は、例えば次のようになります。
    String stage:
    ViewState["Stage"] = stage; //"Stage" をキーとして stage の値を格納する
    stage= (String)ViewState["Stage"]; //"Stage" の値を stage に取得する
  3. デザインウインドウに [Button] を貼り付けて下さい。
  4. [Button1] をダブルクリックすると、ソースコードが表示されます。
    Button1_Click の前に Page_Load を追加して下さい。
        // ページのコードをここに記述してください。
        void Page_Load(object sender, EventArgs e)
        {
            String  str;
    
            if(!IsPostBack)
            {
                ViewState["Stage"] = "0";           //Stage をゼロに設定する
                Response.Write("最初の Page_Load です。  Stage をゼロに設定します。<br>");
            }
            else
            {   str = (String)ViewState["Stage"];   //Stage を取得する
                Response.Write("Page_Load が呼ばれました。  現在の Stage は " + str + " です。<br>");
            }
        } 
        
  5. Button1_Click 関数に、次のコードを追加して下さい。
        void Button1_Click(object sender, EventArgs e)
        {   String  str;
            int     stg;
    
            str = (String)ViewState["Stage"];       //Stage を取得する
            stg = Convert.ToInt32(str) + 1;         //Stage 番号をアップする
            str = Convert.ToString(stg);
            ViewState["Stage"] = str;               //Stage を設定する
            Response.Write("Button がクリックされ Stage 番号を " + str + " にアップしました。<br>");
         }
        
  6. サーバーにアップロードして呼び出して、ボタンをクリックすると Stage 番号がアップすることを確認して下さい。
    Page_Load 関数は、ページの表示イメージを「作成/再現」するタイミングで呼び出されます。
    Button1_Click は Page_Load 関数の後で呼び出されています。
    このことは Network Game Program を設計する上で、どの関数でどんな処理を行うかを決めるときに重要です。
  7. 先のページを立ち上げたまま、ブラウザから別のページを立ち上げて下さい。
    Stage 番号が、それぞれ独立して変更されることを確認して下さい。

stage.aspx のソースコード

stage.aspx を呼び出す

超初心者のプログラム入門(C# on-line game)