그림표시도 하고 알아서 움직이게도 해봤으니.. 내 맘대로 움직여볼까요
키보드 클래스
키보드정보를 가지고 있다.
static KeyboardState GetState() |
키보드의 상태를 가지고 온다. |
키보드상태 구조체
키보드 상태정보를 가지고 있다.
bool IsKeyDown(Keys key) |
키가 down상태인가 여부 |
bool IsKeyUp(Keys key) |
키가 up상태인가 여부 |
키 열거체
키 종류에 따라 다음과 같이 표시한다.
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z |
문자키 |
F1,F2,F3,F4,F5,F6,F7,F8,F9,F10, |
|
NumPad0,NumPad1,NumPad2,NumPad3,NumPad4, |
숫자패드키 |
Up,Down,Left,Right |
방향키 |
LeftAlt,LeftControl,LeftShift,LeftWindows |
수식키 |
Add,Apps,Attn,Back,CapsLock,Crsel, |
기능키 |
LaunchApplication1,LaunchApplication2,LaunchMail |
기동키 |
VolumeDown,VolumeMute,VolumeUp |
볼륨 키 |
MediaNextTrack,MediaPlayPause,MediaPreviousTrack,MediaStop |
미디어 키 |
BrowserBack,BrowserFavorites,BrowserForward,, |
브라우저 키 |
Oem8,OemBackslash,OemClear,OemCloseBrackets,OemComma |
Oem키 |
D0,D1,D2,D3,D4,D5,D6,D7,D8,D9 |
키보드에 따라 달라지는 키 |
소스코드 편집하기
Game1.cs를 편집한다.
Game1.cs
using System; using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Storage; //키 이벤트를 처리한다. namespace XnaImage { public class Game1 : Microsoft.Xna.Framework.Game { //시스템 private GraphicsDeviceManager graphics; private ContentManager content; private SpriteBatch spBatch; private Texture2D texture; //위치 private int x = 100; //X좌표 private int y = 100; //Y좌표 //constructor public Game1() { //그래픽스와 컨텐트 지정 graphics = new GraphicsDeviceManager(this); content = new ContentManager(Services); //Update()를 초당 20회 부르도록 설정한다. IsFixedTimeStep = true; TargetElapsedTime = new TimeSpan(500000); //50milisec에 한번 } //초기화 protected override void Initialize() { base.Initialize(); } //그래픽스 컨텐츠 불러오기 protected override void LoadGraphicsContent(bool loadAllContent) { if (loadAllContent) { spBatch = new SpriteBatch(graphics.GraphicsDevice); texture = content.Load<Texture2D>("xna"); //Assent Name을 지정한다. } } //그래픽스 컨텐츠를 놓아준다. protected override void UnloadGraphicsContent(bool unloadAllContent) { if (unloadAllContent == true) { content.Unload(); } } //업데이트 protected override void Update(GameTime gameTime) { //키 상태 얻어오기 KeyboardState keyboardState = Keyboard.GetState(); //좌 if (keyboardState.IsKeyDown(Keys.Left)) { x-=10; } //우 else if (keyboardState.IsKeyDown(Keys.Right)) { x+=10; } //상 if (keyboardState.IsKeyDown(Keys.Up)) { y-=10; } //하 else if (keyboardState.IsKeyDown(Keys.Down)) { y+=10; } //종료 = ESC if (keyboardState.IsKeyDown(Keys.Escape)) { Exit(); } //base 업데이트 base.Update(gameTime); } //그리기 protected override void Draw(GameTime gameTime) { //배경색지정 graphics.GraphicsDevice.Clear(Color.White); //텍스쳐 그리기 spBatch.Begin(); Vector2 pos = new Vector2(x-90,y-90); //좌표지정 spBatch.Draw(texture,pos,Color.White); spBatch.End(); //베이스 그리기 base.Draw(gameTime); } } } |
이렇게 편집 후 컴파일 하시면 상하좌우 방향키에 움직이고, ESC키를 누르면 프로그램이 종료되는 프로그램이 완성됩니다.
'프로그래밍' 카테고리의 다른 글
데이타를 스토리지에 저장하기 (0) | 2009.07.09 |
---|---|
마우스 이벤트 처리하기 (0) | 2009.07.09 |
이미지에 애니메이션 붙이기 (0) | 2009.07.09 |
이미지 파일 읽어오기 (0) | 2009.07.09 |
헬로 월드! in XNA (0) | 2009.07.09 |
댓글