代码下载:
http://www.codeproject.com/KB/silverlight/Silverlight_Breakout/BreakOutSource.zip
Introduction
Silverlight technology serves one of the best platform to write web based games. The main advantage is that shapes in Silverlight draw themselves and they support the same events as other elements. So we don’t need to worry about painting process of shapes etc. This game also serves as the basics to develop game in Silverlight.
Game PlayAfter selecting the game mode in first screen,you will see game board; game will start using “space bar” key. left and right arrow keys are used to move the bar left or right
Game ComponentsThe solution of Breakout game consists of following folder structure.
Brick component
Brick.xaml file is representation of Brick in game.a brick is initialized using it contructor,c is canvas on which brick is drawn on specifIEd location and color.
Collapse Copy Codepublic Brick(Canvas c,Point location,color color){ InitializeComponent(); _color = color; brickcolor.color = _color; this.X = location.X; this.Y = location.Y; c.Children.Add(this);}
When a brick is destroyed an animation plays that will make the size of brick to 0 and Sounds/BrickDestroyed.mp3 sound is played.
Collapse Copy Code<storyboard x:name="brickDestroyed" /> <doubleanimationusingkeyframes begintime="00:00:00" storyboard.targetname="scaletransform" storyboard.targetproperty="ScaleY" /> <splinedoublekeyframe keytime="00:00:01" value="0" /> </doubleanimationusingkeyframes /> <doubleanimationusingkeyframes begintime="00:00:00" storyboard.targetname="scaletransform" storyboard.targetproperty="ScaleX" /> <splinedoublekeyframe keytime="00:00:01" value="0" /> </doubleanimationusingkeyframes /></storyboard />Ball component
Ball is moved on canvas using specifIEd speed,Move() method in ball class will move ball to new X and Y location.
Game BoardGameboard logic is contained in GameBoard.xaml and GameBoard.xaml.cs file. I used canvas layout container as this container provIDes X and Y axis cordinates system to postion child element
Collapse Copy Code<canvas x:name="mainArea" wIDth="500" height="600" /><canvas.background /> <imagebrush imagesource="Images/background.jpg" /></canvas.background /> <mediaelement x:name="gameBackGroundSound" source="Sounds/BackGroundSound.mp3" autoplay="True" volume="0.3" mediaended="gameBackGroundSound_MediaEnded" /> <mediaelement x:name="gameOver" source="Sounds/GameOver.mp3" autoplay="False" /></canvas />
This class contains _mainTimer member variable that will trigger timer tick event to perform some tasks. like moving ball to its new location,checking whether game is over or not. Collision detection etc.
Collapse Copy Code @H_499_403@dispatcherTimer _mainTimer = new dispatcherTimer();/// /// Main Game Loop/// /// /// voID _mainTimer_Tick(object sender,EventArgs e){ _ball.Move(); // move ball CheckGameOver(); // check game is over or not DetectCollision(); // collision detection ..... .....} Collision detectionDetectCollision() method checks collision of ball with bricks,board sIDes and bar. It uses the Utility.Getdistance(Point point1,Point point2) method in utility class to calculate distance between two points.
Collapse Copy Code/// /// Collision detection logic/// private voID DetectCollision(){ // Check collision with sIDes CheckCollisionWithSIDes(); // Check collision with bar Point p1; Point p2; CheckCollisionWithbar(out p1,out p2); // Collision with Bricks Brick brickToRemove = null; CheckCollisionWithBricks(ref p1,ref p2,ref brickToRemove); if (brickToRemove != null) { _bricks.Remove(brickToRemove); score += 10; }}
总结 以上是内存溢出为你收集整理的Silverlight版本的打砖块游戏全部内容,希望文章能够帮你解决Silverlight版本的打砖块游戏所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)