silverlight2 ÓÎÏ· 1 ÄãÄܼá³Ö¶àÉÙÃë -µçÄÔ×ÊÁÏ

µçÄÔ×ÊÁÏ Ê±¼ä£º2019-01-01 ÎÒҪͶ¸å
¡¾www.unjs.com - µçÄÔ×ÊÁÏ¡¿

ÕâÊÇ¿ªÊ¼Ñ§Ï°silverlightµÄµÚÒ»¸öÓÎÏ·

ÓÎÏ·½ØÍ¼£º

click onto the red block with jump over it:

Êó±êÒÆ¶¯µ½ºìÉ«²¿·Ö£¬

silverlight2 ÓÎÏ· 1 ÄãÄܼá³Ö¶àÉÙÃë

¡£

move the red block avoiding crash with the blue ones

Í϶¯ºì¿é£¬±ÜÃâÅöµ½À¶É«²¿·Ö¡£

don't touch the black edge.

²»ÒªÅöµ½ºÚÉ«ÇøÓò¡£

if you can reach more than 18 seconds, you are a genius.

Èç¹ûÄãÄÜ´ïµ½18ÃëÒÔÉÏ£¬ÄãËãµÃÉÏÊǸöÌì²Å¡£

1¡¢ÓÎÏ·¹ÜÀíÀà

GameManager.cs

1using System;
2using System.Net;
3using System.Windows;
4using System.Windows.Controls;
5using System.Windows.Documents;
6using System.Windows.Ink;
7using System.Windows.Input;
8using System.Windows.Media;
9using System.Windows.Media.Animation;
10using System.Windows.Shapes;
11using System.Windows.Threading;
12using System.Collections.Generic;
13
14namespace Movebox
15{
16¡¡¡¡¡¡ public class GameManager
17¡¡¡¡¡¡ {
18¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////


19¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// ÓÎϷ״̬£¨Ready, Play, Pause, Over£©
20¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

21¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
22¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public GameStatus GameStatus { get; set; }
23
24¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////
25¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// ÒÆ¶¯ËÙ¶È
26¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

27¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public double MoveSpeed { get; set; }
28
29¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private double initSpeed = 13; // ³õʼËÙÂÊ£¨ºÁÃ룩
30
31¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private DispatcherTimer timer;
32
33¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public List enemies; //µÐ·½
34
35¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private Canvas layoutRoot;
36¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private Owner owner; //Íæ¼Ò
37
38¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public GameManager(Canvas _layoutRoot, Owner _owner)
39¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
40¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemies = new List();
41¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.layoutRoot = _layoutRoot;
42¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.owner = _owner;
43
44¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Enemy enemy1 = new Enemy();
45¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy1.X = 70; //³õʼ»¯Î»ÖÃ
46¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy1.Y = 70;
47¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy1.ContainerWidth = (int)_layoutRoot.Width;
48¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy1.ContainerHeight = (int)_layoutRoot.Height;
49¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemies.Add(enemy1);
50
51¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Enemy enemy2 = new Enemy();
52¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy2.X = 270; //³õʼ»¯Î»ÖÃ
53¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy2.Y = 60;
54¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy2.Dimension(60, 50);
55¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy2.ContainerWidth = (int)_layoutRoot.Width;
56¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy2.ContainerHeight = (int)_layoutRoot.Height;
57¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemies.Add(enemy2);
58
59¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Enemy enemy3 = new Enemy();
60¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy3.X = 70; //³õʼ»¯Î»ÖÃ
61¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy3.Y = 320;
62¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy3.Dimension(30, 60);
63¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy3.ContainerWidth = (int)_layoutRoot.Width;
64¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy3.ContainerHeight = (int)_layoutRoot.Height;
65¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemies.Add(enemy3);
66
67¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Enemy enemy4 = new Enemy();
68¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy4.X = 300; //³õʼ»¯Î»ÖÃ
69¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy4.Y = 330;
70¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy4.Dimension(100, 20);
71¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy4.ContainerWidth = (int)_layoutRoot.Width;
72¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy4.ContainerHeight = (int)_layoutRoot.Height;
73¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemies.Add(enemy4);
74
75¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ timer = new DispatcherTimer();
76¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ timer.Interval = TimeSpan.FromMilliseconds(initSpeed);
77¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ timer.Tick += new EventHandler(timer_Tick);
78
79¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ GameStatus = GameStatus.Ready;
80
81¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
82
83¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////
84¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// ¿ªÊ¼ÓÎÏ·£¨Æô¶¯¼ÆÊ±Æ÷£©
85¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

86¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public void Play()
87¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
88¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ GameStatus = GameStatus.Play;
89¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ timer.Start();
90
91¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
92
93¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////
94¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// ÔÝÍ£ÓÎÏ·£¨Í£Ö¹¼ÆÊ±Æ÷£©
95¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

96¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public void Pause()
97¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
98¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ timer.Stop();
99¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ GameStatus = GameStatus.Pause;
100
101¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
102
103¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////
104¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// ¿ªÊ¼ÔËÐÐ
105¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

106¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
107¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
108¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private void timer_Tick(object sender, EventArgs e)
109¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
110¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ OnGrameRun(null);
111¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ foreach (Enemy enemy in enemies)
112¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ MoveEnemy(enemy);
113¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
114
115¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////
116¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// ÒÆ¶¯µÐ·½
117¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

118¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public void MoveEnemy(Enemy enemy)
119¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
120¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (GameStatus != GameStatus.Play) return;
121
122¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (!IsBoundary(enemy))
123¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
124¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy.Move = true;
125¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ enemy.Speed = MoveSpeed;
126¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
127¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ else
128¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
129¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ OnGameOver(null);
130¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.Pause();
131¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
132¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
133
134¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////
135¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// ÊÇ·ñµÐ·½ÓëÍæ¼Òײ»÷
136¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

137¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
138¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
139¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
140¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
141¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
142¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private bool IsBoundaryForOwner(double x, double y, double xw, double yh)
143¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
144¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ bool bCollision = false;
145¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ double getpointx = owner.X - Convert.ToInt32(x + xw);
146¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ double getpointy = owner.Y - Convert.ToInt32(y + yh);
147¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if ((getpointy <= 0 && y <= (owner.Y + owner.Height)) && (getpointx <= 0 && x <= (owner.X + owner.Width)))
148¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
149¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ bCollision = true;
150¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
151¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ return bCollision;
152¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
153
154¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////
155¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// ÊÇ·ñײ»÷
156¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

157¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
158¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private bool IsBoundary(Enemy enemy)
159¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
160¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ return IsBoundaryForOwner(enemy.X, enemy.Y, enemy.Width, enemy.Height);
161¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
162
163
164¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public event EventHandler GameOver;
165¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public event EventHandler GrameRun;
166
167¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private void OnGrameRun(EventArgs e)
168¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
169¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ EventHandler handler = GrameRun;
170¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (handler != null)
171¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ handler(this, e);
172¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
173
174¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////
175¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// ÓÎÏ·½áÊøºóËùµ÷Óõķ½·¨£¬²¢´¥·¢ÓÎÏ·½áÊøÊ¼þ
176¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

177¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
178¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private void OnGameOver(EventArgs e)
179¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
180¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ GameStatus = GameStatus.Over;
181¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ timer.Interval = TimeSpan.FromMilliseconds(initSpeed);
182¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ timer.Stop();
183
184¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ EventHandler handler = GameOver;
185¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (handler != null)
186¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ handler(this, e);
187¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
188
189¡¡¡¡¡¡ }
190}
191

Page.xaml.cs

1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Net;
5using System.Windows;
6using System.Windows.Controls;
7using System.Windows.Documents;
8using System.Windows.Input;
9using System.Windows.Media;
10using System.Windows.Media.Animation;
11using System.Windows.Shapes;
12
13namespace Movebox
14{
15¡¡¡¡¡¡ public partial class Page : UserControl
16¡¡¡¡¡¡ {
17¡¡¡¡¡¡¡¡¡¡¡¡¡¡ GameManager gm;
18¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Owner me;
19¡¡¡¡¡¡¡¡¡¡¡¡¡¡ DragManager dm;
20¡¡¡¡¡¡¡¡¡¡¡¡¡¡ DateTime startTime;
21
22¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public Page()
23¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
24¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ InitializeComponent();
25
26¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.Loaded += new RoutedEventHandler(Page_Loaded);
27¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
28
29¡¡¡¡¡¡¡¡¡¡¡¡¡¡ void Page_Loaded(object sender, RoutedEventArgs e)
30¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
31¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ dm = new DragManager(layoutRoot);
32¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ uc.Focus();
33
34¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ me = new Owner();
35¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ me.X = 205;
36¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ me.Y = 205;
37¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ layoutRoot.Children.Add(me);
38
39¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ gm = new GameManager(layoutRoot, me);
40¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ gm.GameOver += new EventHandler(gm_GameOver);
41¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ gm.GrameRun += new EventHandler(gm_GrameRun);
42¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ gm.MoveSpeed = 0.9;
43
44¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ foreach (Enemy enemy in gm.enemies)
45¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ layoutRoot.Children.Add(enemy);
46
47¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ dm.OnCollision += dm_Collision;
48¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ dm.OnFristTimeMove += dm_MoveEventArgs;
49¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ dm.OnDragMove += dm_OnDragMove;
50¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ dm.EnableDragableElement(me);
51
52
53¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
54
55¡¡¡¡¡¡¡¡¡¡¡¡¡¡ void gm_GrameRun(object sender, EventArgs e)
56¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
57¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ levelRect.Height+=.1;
58¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ double s=(DateTime.Now - this.startTime).TotalSeconds;
59¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (s > 10 && s <= 15)
60¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
61¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ levelName.Text = "ÀÏÄñ";
62¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ gm.MoveSpeed = 1.1;
63¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
64¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (s > 15 && s <= 20)
65¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
66¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ levelName.Text = "¸ßÊÖ";
67¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ gm.MoveSpeed = 1.3;
68¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
69¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (s > 20)
70¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
71¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ levelName.Text = "Ìì²Å";
72¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ gm.MoveSpeed = 1.5;
73¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
74¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (s > 30)
75¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
76¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ levelName.Text = "ÎÞµÐ";
77¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ gm.MoveSpeed = 2;
78¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
79¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ runTime.Text = (string.Format("{0}Ãë", s));
80¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
81
82¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////


83¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// Í϶¯
84¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

85¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
86¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
87¡¡¡¡¡¡¡¡¡¡¡¡¡¡ void dm_OnDragMove(object sender, EventArgs e)
88¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
89¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ currentPointBox.Text = "x:" + me.X + "¡¡ y:" + me.Y;
90¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (((me.X + me.Width¡¡ >= 400)
91¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ||
92¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ (me.X¡¡ <= 50)) || (((me.Y + me.Height¡¡ >= 400)
93¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ||
94¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ (me.Y¡¡ <= 50))))
95¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
96¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ gm_GameOver(sender, e);
97¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ currentPointBox.Text += " ײÉÏÁË";
98
99
100¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
101¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
102
103¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////
104¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// ÓÎÏ·¿ªÊ¼
105¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

106¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
107¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
108
109¡¡¡¡¡¡¡¡¡¡¡¡¡¡ void dm_MoveEventArgs(object sender, EventArgs e)
110¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
111¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ startTime = DateTime.Now;
112¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ gm.Play();
113¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ runTime.Text = "";
114¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
115
116¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////
117¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// ÓÎÏ·½áÊø
118¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

119¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
120¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///
121¡¡¡¡¡¡¡¡¡¡¡¡¡¡ void gm_GameOver(object sender, EventArgs e)
122¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
123¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ dm.DisableDragableElement();
124¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ gm.Pause();
125¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ resultText.Text="Äú¼á³ÖÁË" + runTime.Text + ",¼¶±ð:" + levelName.Text;
126
127¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
128¡¡¡¡¡¡¡¡¡¡¡¡¡¡ void dm_Collision(object sender, CollisionEventArgs e)
129¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
130
131¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
132
133
134¡¡¡¡¡¡ }
135}
136

DragManager.cs

1using System;
2using System.Net;
3using System.Windows;
4using System.Windows.Controls;
5using System.Windows.Documents;
6using System.Windows.Ink;
7using System.Windows.Input;
8using System.Windows.Media;
9using System.Windows.Media.Animation;
10using System.Windows.Shapes;
11using System.Collections.Generic;
12
13namespace Movebox
14{
15¡¡¡¡¡¡ public class DragManager
16¡¡¡¡¡¡ {
17¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private bool isStartMove = true;
18¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private bool isDragging = false;
19¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private Point lastMousePosition;
20¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private UIElement layoutRoot;
21¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private UIElement elementToDrag;
22
23¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////


24¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// Åöײʼþ(δÓÃ)
25¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

26¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public event EventHandler OnCollision;
27¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////
28¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// µÚÒ»´ÎÒÆ¶¯´¥·¢Ê¼þ
29¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

30¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public event EventHandler OnFristTimeMove;
31¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////
32¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// Í϶¯Ê¼þ
33¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

34¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public event EventHandler OnDragMove;
35
36¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public DragManager(UIElement layoutRoot)
37¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
38¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.layoutRoot = layoutRoot;
39¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
40
41
42¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public void EnableDragableElement(UIElement elementToDrag)
43¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
44¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.elementToDrag = elementToDrag;
45
46¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.elementToDrag.MouseLeftButtonDown += element_MouseLeftButtonDown;
47¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.elementToDrag.MouseMove += elementToDrag_MouseMove;
48¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.elementToDrag.MouseLeftButtonUp += elementToDrag_MouseLeftButtonUp;
49
50¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
51
52¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public void DisableDragableElement()
53¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
54¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ isDragging = false;
55¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ elementToDrag.MouseLeftButtonDown -= element_MouseLeftButtonDown;
56¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ elementToDrag.MouseMove -= elementToDrag_MouseMove;
57¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ elementToDrag.MouseLeftButtonUp -= elementToDrag_MouseLeftButtonUp;
58
59¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
60
61¡¡¡¡¡¡¡¡¡¡¡¡¡¡ void elementToDrag_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
62¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
63¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Owner element = (Owner)sender;
64¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ element.Cursor =null;
65¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ element.ReleaseMouseCapture();
66¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ isDragging = false;
67¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
68
69¡¡¡¡¡¡¡¡¡¡¡¡¡¡ void elementToDrag_MouseMove(object sender, MouseEventArgs e)
70¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
71¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (isDragging)
72¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
73
74¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Owner element = (Owner)sender;
75¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ // TranslateTransform. transform. = GetTranslateTransform(element);
76¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Point currentMousePosition = e.GetPosition(layoutRoot);
77¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ double mouseX = currentMousePosition.X - lastMousePosition.X;
78¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ double mouseY = currentMousePosition.Y - lastMousePosition.Y;
79¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ element.X += mouseX;
80¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ element.Y += mouseY;
81
82¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (OnCollision != null)
83¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
84¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ List collidedElements = VisualTreeHelper.FindElementsInHostCoordinates(currentMousePosition, layoutRoot) as List;
85¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ collidedElements.Remove(element);
86¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ collidedElements.Remove(layoutRoot);
87
88¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (collidedElements.Count > 0)
89¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
90¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ CollisionEventArgs args = new CollisionEventArgs() { Element = element, Position = currentMousePosition, CollidedElements = collidedElements };
91¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ OnCollision(this, args);
92¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
93¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
94
95¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ EventArgs moveagrs = new EventArgs();
96¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ OnDragMove(this, moveagrs);
97
98¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ lastMousePosition = currentMousePosition;
99
100¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
101¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
102
103¡¡¡¡¡¡¡¡¡¡¡¡¡¡ void element_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
104¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
105¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ isDragging = true;
106¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (isStartMove)
107¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
108¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ EventArgs args = new EventArgs() ;
109¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ OnFristTimeMove(this, args);
110¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ isStartMove=false;
111¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
112¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Owner element = (Owner)sender;
113¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ element.Cursor = Cursors.Hand;
114
115¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ lastMousePosition = e.GetPosition(layoutRoot);
116¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ((UIElement)sender).CaptureMouse();
117¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
118
119¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private TranslateTransform. GetTranslateTransform(UIElement element)
120¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
121¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ TranslateTransform. translateTransform. = null;
122¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (element.RenderTransform. is TranslateTransform)
123¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
124¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ translateTransform. = element.RenderTransform. as TranslateTransform;
125¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
126¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ else if (element.RenderTransform. is TransformGroup)
127¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
128¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ TransformGroup group = element.RenderTransform. as TransformGroup;
129¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ foreach (GeneralTransform. transform. in group.Children)
130¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
131¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (transform. is TranslateTransform)
132¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
133¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ translateTransform. = transform. as TranslateTransform;
134¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
135¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
136¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
137¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ else
138¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
139¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ translateTransform. = new TranslateTransform();
140¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ element.RenderTransform. = translateTransform;
141¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
142¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ return translateTransform;
143¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
144
145¡¡¡¡¡¡ }
146
147¡¡¡¡¡¡ public class CollisionEventArgs : EventArgs
148¡¡¡¡¡¡ {
149
150¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public UIElement Element { get; set; }
151¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public Point Position { get; set; }
152¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public List CollidedElements { get; set; }
153¡¡¡¡¡¡ }
154
155}
156

Enemy.xaml.cs

1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Net;
5using System.Windows;
6using System.Windows.Controls;
7using System.Windows.Documents;
8using System.Windows.Input;
9using System.Windows.Media;
10using System.Windows.Media.Animation;
11using System.Windows.Shapes;
12
13namespace Movebox
14{
15¡¡¡¡¡¡ public partial class Enemy : UserControl
16¡¡¡¡¡¡ {
17¡¡¡¡¡¡¡¡¡¡¡¡¡¡ //ÈÝÆ÷¿í¶È¸ß¶È
18¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public int ContainerWidth { get; set; }
19¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public int ContainerHeight { get; set; }
20
21¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public Enemy()
22¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
23¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ InitializeComponent();
24¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.Speed = 1.001;
25
26¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
27
28¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public double X
29¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
30¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ set
31¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
32¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ rectangle_enemy1_point.X = value;
33¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
34¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ get { return rectangle_enemy1_point.X; }
35¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
36
37¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public double Y
38¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
39¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ set
40¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
41¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ rectangle_enemy1_point.Y=value;
42¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
43¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ get { return rectangle_enemy1_point.Y; }
44¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
45
46¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /**////


47¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// ÉèÖóߴç
48¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ///

49¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// ¿í
50¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /// ¸ß
51¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public void Dimension(double _w, double _h)
52¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
53¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.Width = _w;
54¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.Height = _h;
55¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ rectangle_enemy1.Width = _w;
56¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ rectangle_enemy1.Height = _h;
57¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
58
59¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public double Speed { get; set; }
60
61¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private bool hDirect=true;
62¡¡¡¡¡¡¡¡¡¡¡¡¡¡ private bool wDirect=true;
63
64¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public bool Move
65¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
66¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ set
67¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
68¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (value)
69¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
70¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (this.Y <= 0) hDirect = true;
71
72¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (hDirect && (this.Y < (ContainerHeight - this.Height)))
73¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
74¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.Y += Speed * 3;
75
76¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
77¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ else
78¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
79¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.Y -= Speed * 3;
80¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ hDirect = false;
81
82¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
83
84¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (this.X <= 0) wDirect = true;
85
86¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (wDirect && (this.X < (ContainerWidth - this.Width)))
87¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
88¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.X += Speed * 5;
89
90¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
91¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ else
92¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
93¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ this.X -= Speed*5;
94¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ wDirect = false;
95
96¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
97
98¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
99
100¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
101¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
102
103¡¡¡¡¡¡¡¡¡¡¡¡
104¡¡¡¡¡¡ }
105}
106

Owner.xaml.cs

1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Net;
5using System.Windows;
6using System.Windows.Controls;
7using System.Windows.Documents;
8using System.Windows.Input;
9using System.Windows.Media;
10using System.Windows.Media.Animation;
11using System.Windows.Shapes;
12
13namespace Movebox
14{
15¡¡¡¡¡¡ public partial class Owner : UserControl
16¡¡¡¡¡¡ {
17¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public Owner()
18¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
19¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ InitializeComponent();
20¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
21
22¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public double X
23¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
24¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ set
25¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
26¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ rectangle_owner_point.X = value;
27¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
28¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ get { return rectangle_owner_point.X; }
29¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
30
31¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public double Y
32¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
33¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ set
34¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
35¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ rectangle_owner_point.Y = value;
36¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
37¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ get { return rectangle_owner_point.Y; }
38¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
39¡¡¡¡¡¡ }
40}

Ô´ÂëÏÂÔØ http://files.cnblogs.com/hubj/Movebox.rar

×îÐÂÎÄÕÂ