.NET Logo
Welcome Guest Search | Active Topics | Members | Log In | Register

มาหัดใช้ Game State Management II Options · View
whiteline
Posted: Saturday, January 12, 2008 11:28:19 PM
Rank: มือพระกาฬ
Groups: Member

Joined: 12/3/2007
Posts: 12
Location: Silpakorn

มาหัดใช้ Game State Management กันต่อ

สำหรับบางคนนั้นถามว่าทำไมไม่ทำเอง? ทำไมต้องเอาตัวอย่างของ microsoft อย่างตัวอย่างนี้มาแกะด้วย?

ก้อนะ...ทำเองก้อได้แระนะ แต่โค้ดคุณจะรู้สึกแย่อะ การดักและเช็คเงื่อนไขจะเต็มไปหมด

ถ้างานคุณมีขนาดใหญ่ขึ้นชีวิตคงไม่มีความสุข (มั่ง)

หลังจากที่ Download มาแล้ว ให้เราจัดการกับ Folders ในสอง Folders คือ Screen Manager และ Screens

  • Screen Manager จะมี 3 Files นะ 
    - GameScreen.cs
    - InputState.cs
    - ScreenManager.cs
     
  • Screens จะมีหลายไฟล์หน่อย 
    - BackgroundScreen.cs
    - LoadingScreen.cs
    - MenuScreen.cs
    - MessageBoxScreen.cs
    - PauseMenuScreen.cs
    - และสุดท้าย MainMenuScreen.cs

     

ทำไมต้องเน้นตรง MainMenuScreen ก้อเพราะเราจะจัดการในส่วนนี้กัน ซึ่งจะมี Menu Entry เอาไว้ add เข้าสู่
List ไว้เพื่อจัดการอีกครั้งหนึ่ง

 

public MainMenuScreen():

base("Main Menu")

{

// Create our menu entries.

MenuEntry playGameMenuEntry = new MenuEntry("PlayGame");

MenuEntry optionsMenuEntry = new MenuEntry("Options");

MenuEntry exitMenuEntry = new MenuEntry("Exit");

 

// Hook up menu event handlers.

playGameMenuEntry.Selected += PlayGameMenuEntrySelected;

optionsMenuEntry.Selected += OptionsMenuEntrySelected;

exitMenuEntry.Selected += OnCancel;

// Add entries to the menu.

MenuEntries.Add(playGameMenuEntry);

MenuEntries.Add(optionsMenuEntry);

MenuEntries.Add(exitMenuEntry);

}



ในส่วนนี้เป็นคอนสตั๊กเตอร์ของ maimenuscreen ก้อเป็นตัวที่บอกว่าจะมีไรบ้างในเมนู

 

// Create the screen manager component.

screenManager = new ScreenManager(this);

Components.Add(screenManager);

// Activate the first screens.

screenManager.AddScreen(new BackgroundScreen());

screenManager.AddScreen(new MainMenuScreen());


จากนั้นทำการ add component ใน game.cs ของคุณนะ

ก่อนอื่นก้อไป new instance ของ ScreenManager ซึ่งจะเป็นตัวคอยจัดการ Screen ต่างๆและควบคุมสถานะ

การเปลี่ยน การย้ายฉาก โดยที่ Screenmanager นั้น inherit มาจาก Drawable GameComponent เพราะฉะนั้น

เค้าก้อเลยบอกว่ามันจะสามารถ "Add GameCollectionComponents ของเกมได้"

ซึ่งทุกๆ Component ใน Collection จะสามารถ Update หรือ Draw ได้ โดยใช้ ScreenManager

ตัวอย่างนี้ในไฟล์ Main นั้นมีการผูก event ในเมนูเมื่อมีการเลือก
ถ้าใครลองทำเองให้ลองปิด Comment นี้ไว้ก่อน

จากภาพจะสังเกตว่า หน้าแต่หละหน้า คือ คลาสหนึ่ง ปกติหนึ่งไฟล์จะแยกเป็นหนึ่งคลาสอยู่แล้ว

ผลลัพธ์จากการ run นี้จะได้หน้าเมนูหน้าแรกมาเฉยๆ โดยที่กดไรไม่ได้เลย ได้แค่เลื่อนๆ ทำนั้นเอง
เนื่องจากไม่มี event ผูกเข้าไป

จบแระบาย

Users browsing this topic
Guest


Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

Main Forum RSS : RSS

YAFVision Theme Created by Jaben Cargman (Tiny Gecko)
Powered by Yet Another Forum.net version 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.


Sponsored by