C# Avalonia 16- Animation- BombDropper

news/2025/10/20 13:53:20/文章来源:https://www.cnblogs.com/dalgleish/p/19152472

结合我们之前写的AnimationPlayer,现在实现一个小游戏。

定义自己的Style,前面有例子已经说明了如何在自己的Styles.axaml中写Style。

<!-- Bomb 样式 -->
<Style Selector="ContentControl.Bomb"><Setter Property="Width" Value="200"/><Setter Property="Height" Value="200"/><Setter Property="RenderTransform"><Setter.Value><TransformGroup><RotateTransform Angle="20" CenterX="50" CenterY="50"/><ScaleTransform ScaleX="0.5" ScaleY="0.5"/></TransformGroup></Setter.Value></Setter><Setter Property="Template"><Setter.Value><ControlTemplate><Canvas><!-- Bomb 的视觉定义 --><Path Data="M 11.989,50.026 L 24.381,37.08 L 19.097,53.862 Z" Fill="#FFF2CC0C"/><Path Data="M 0.46098,31.997 L 17.945,28.449 L 4.1114,39.19 Z" Fill="#FFF2CC0C"/><Path Data="M 9.9713,7.3517 L 22.075,20.49 L 5.7445,14.16 Z" Fill="#FFF2CC0C"/><Path Data="M 58.484,29.408 L 40.712,31.997 L 57.523,37.367 Z" Fill="#FFF2CC0C"/><Path Data="M 51.663,10.229 L 38.694,22.408 L 55.506,17.325 Z" Fill="#FFF2CC0C"/><Path Data="M 32.354,0.25535 L 31.682,18.092 L 40.039,2.7487 Z" Fill="#FFF2CC0C"/><!-- 炸弹主体 --><Path Data="M 105.84,186.87 L 110.84,183.99 L 115.45,180.64 L 119.58,176.9 L 123.33,172.77 L 126.69,168.36 L 129.47,163.76 L 131.88,158.87 L 133.8,153.79 L 135.14,148.51 L 136.01,143.14 L 136.39,137.77 L 136.3,132.21 L 135.53,126.74 L 134.28,121.37 L 132.45,116 L 130.05,110.73 L 128.61,108.14 L 127.17,105.74 L 125.54,103.34 L 123.81,101.14 L 121.98,99.029 L 120.06,97.015 L 118.04,95.097 L 115.93,93.275 L 113.82,91.549 L 111.61,89.919 L 109.3,88.481 L 106.9,87.138 L 104.5,85.891 L 102,84.741 L 99.503,83.782 L 96.909,82.823 L 94.316,82.055 L 91.722,81.48 L 89.032,81.001 L 86.342,80.617 L 83.556,80.329 L 80.867,80.233 L 78.081,80.233 L 75.391,80.329 L 72.605,80.617 L 69.915,81.096 L 67.129,81.672 L 64.44,82.343 L 61.75,83.206 L 59.06,84.165 L 56.37,85.316 L 53.777,86.563 L 48.781,89.44 L 44.17,92.796 L 40.039,96.536 L 36.293,100.66 L 33.027,104.97 L 30.145,109.67 L 27.743,114.56 L 25.918,119.65 L 24.477,124.83 L 23.612,130.2 L 23.324,135.66 L 23.42,141.13 L 24.189,146.59 L 25.438,152.06 L 27.263,157.43 L 29.664,162.7 L 31.105,165.29 L 32.546,167.69 L 34.179,170.09 L 35.909,172.29 L 37.734,174.4 L 39.655,176.42 L 41.672,178.34 L 43.69,180.16 L 45.899,181.88 L 48.109,183.51 L 50.414,184.95 L 52.72,186.3 L 55.217,187.54 L 57.619,188.69 L 60.213,189.65 L 62.71,190.61 L 65.304,191.38 L 67.994,191.95 L 70.684,192.43 L 73.374,192.82 L 76.063,193.1 L 78.753,193.2 L 81.539,193.2 L 84.325,193.1 L 87.015,192.82 L 89.801,192.34 L 92.49,191.76 L 95.18,191.09 L 97.87,190.23 L 100.56,189.27 L 103.25,188.12 Z" Fill="#FF000000"/><Path Data="F 1 M 125.92,112.84 L 125.92,112.84 L 128.13,117.63 L 129.86,122.62 L 131.01,127.51 L 131.68,132.5 L 131.78,137.68 L 131.4,142.66 L 130.63,147.65 L 129.38,152.44 L 127.65,157.05 L 125.44,161.55 L 122.94,165.77 L 119.77,169.9 L 116.31,173.64 L 112.57,177.09 L 108.34,180.16 L 103.73,182.75 L 107.96,190.99 L 113.34,187.83 L 118.33,184.19 L 122.85,180.16 L 126.88,175.65 L 130.44,170.95 L 133.51,165.97 L 136.1,160.69 L 138.22,155.13 L 139.66,149.38 L 140.62,143.62 L 141,137.87 L 140.91,131.92 L 140.04,125.98 L 138.7,120.13 L 136.78,114.37 L 134.18,108.62 L 134.18,108.62 Z" Fill="#FF777777"/><Path Data="F 1 M 55.89,90.686 L 55.89,90.686 L 58.195,89.44 L 60.693,88.481 L 63.191,87.522 L 65.688,86.754 L 68.09,86.179 L 70.78,85.604 L 73.181,85.124 L 75.679,84.932 L 78.081,84.836 L 80.867,84.836 L 83.268,84.932 L 85.862,85.22 L 88.36,85.508 L 90.857,85.987 L 93.163,86.467 L 95.468,87.138 L 97.87,88.097 L 100.27,88.96 L 102.48,90.015 L 104.79,91.166 L 107,92.412 L 109.01,93.659 L 111.03,95.193 L 112.95,96.728 L 114.97,98.454 L 116.79,100.28 L 118.62,102.1 L 120.25,104.02 L 121.79,106.03 L 123.33,108.14 L 124.67,110.44 L 125.92,112.84 L 134.18,108.62 L 132.55,105.84 L 131.01,103.34 L 129.28,100.66 L 127.36,98.262 L 125.34,95.961 L 123.33,93.755 L 121.12,91.741 L 118.91,89.823 L 116.6,87.905 L 114.2,86.179 L 111.61,84.549 L 109.01,83.11 L 106.52,81.768 L 103.73,80.521 L 101.14,79.466 L 98.35,78.507 L 95.468,77.644 L 92.586,76.973 L 89.704,76.493 L 86.823,76.014 L 83.845,75.726 L 80.867,75.63 L 78.081,75.63 L 75.103,75.726 L 72.029,76.11 L 69.051,76.589 L 66.169,77.165 L 63.191,77.932 L 60.309,78.891 L 57.427,79.85 L 54.545,81.192 L 51.663,82.439 L 51.663,82.439 Z" Fill="#FF777777"/><Path Data="F 1 M 33.795,160.6 L 33.795,160.6 L 31.586,155.8 L 29.857,150.81 L 28.704,145.83 L 28.031,140.84 L 27.935,135.66 L 28.223,130.68 L 28.992,125.78 L 30.337,120.99 L 31.97,116.29 L 34.179,111.88 L 36.773,107.56 L 39.847,103.54 L 43.306,99.796 L 47.052,96.344 L 51.279,93.275 L 55.89,90.686 L 51.663,82.439 L 46.284,85.604 L 41.288,89.248 L 36.773,93.275 L 32.738,97.783 L 29.28,102.39 L 26.11,107.47 L 23.516,112.84 L 21.499,118.3 L 19.962,123.87 L 19.001,129.72 L 18.713,135.66 L 18.809,141.42 L 19.674,147.36 L 21.019,153.31 L 22.94,159.06 L 25.534,164.81 L 25.534,164.81 Z" Fill="#FF777777"/><Path Data="F 1 M 103.73,182.75 L 103.73,182.75 L 101.42,183.99 L 98.927,184.95 L 96.429,185.91 L 93.931,186.68 L 91.53,187.25 L 88.936,187.83 L 86.438,188.31 L 84.037,188.5 L 81.539,188.6 L 78.753,188.6 L 76.352,188.5 L 73.854,188.21 L 71.356,187.93 L 68.859,187.45 L 66.361,186.97 L 64.151,186.3 L 61.846,185.34 L 59.348,184.47 L 57.235,183.42 L 54.833,182.27 L 52.816,181.02 L 50.702,179.77 L 48.685,178.24 L 46.668,176.71 L 44.746,174.98 L 42.921,173.16 L 41.096,171.34 L 39.463,169.42 L 37.926,167.4 L 36.389,165.29 L 35.044,162.99 L 33.795,160.6 L 25.534,164.81 L 27.167,167.6 L 28.704,170.09 L 30.433,172.77 L 32.354,175.17 L 34.372,177.47 L 36.389,179.68 L 38.598,181.69 L 40.712,183.61 L 43.113,185.53 L 45.515,187.25 L 48.013,188.88 L 50.606,190.32 L 53.2,191.67 L 55.89,192.91 L 58.58,193.97 L 61.27,194.93 L 64.248,195.79 L 67.129,196.46 L 70.011,196.94 L 72.893,197.42 L 75.775,197.71 L 78.753,197.8 L 81.539,197.8 L 84.613,197.71 L 87.591,197.32 L 90.665,196.84 L 93.451,196.27 L 96.429,195.5 L 99.311,194.54 L 102.19,193.58 L 105.07,192.24 L 107.96,190.99 L 107.96,190.99 Z" Fill="#FF777777"/><Path Data="M 105.84,186.87 L 110.84,183.99 L 115.45,180.64 L 119.58,176.9 L 123.33,172.77 L 126.69,168.36 L 129.47,163.76 L 131.88,158.87 L 133.8,153.79 L 135.14,148.51 L 136.01,143.14 L 136.39,137.77 L 136.3,132.21 L 135.53,126.74 L 134.28,121.37 L 132.45,116 L 130.05,110.73 L 128.61,108.14 L 127.17,105.74 L 125.54,103.34 L 123.81,101.14 L 121.98,99.029 L 120.06,97.015 L 118.04,95.097 L 115.93,93.275 L 113.82,91.549 L 111.61,89.919 L 109.3,88.481 L 106.9,87.138 L 104.5,85.891 L 102,84.741 L 99.503,83.782 L 96.909,82.823 L 94.316,82.055 L 91.722,81.48 L 89.032,81.001 L 86.342,80.617 L 83.556,80.329 L 80.867,80.233 L 78.081,80.233 L 75.391,80.329 L 72.605,80.617 L 69.915,81.096 L 67.129,81.672 L 64.44,82.343 L 61.75,83.206 L 59.06,84.165 L 56.37,85.316 L 53.777,86.563 L 48.781,89.44 L 44.17,92.796 L 40.039,96.536 L 36.293,100.66 L 33.027,104.97 L 30.145,109.67 L 27.743,114.56 L 25.918,119.65 L 24.477,124.83 L 23.612,130.2 L 23.324,135.66 L 23.42,141.13 L 24.189,146.59 L 25.438,152.06 L 27.263,157.43 L 29.664,162.7 L 31.105,165.29 L 32.546,167.69 L 34.179,170.09 L 35.909,172.29 L 37.734,174.4 L 39.655,176.42 L 41.672,178.34 L 43.69,180.16 L 45.899,181.88 L 48.109,183.51 L 50.414,184.95 L 52.72,186.3 L 55.217,187.54 L 57.619,188.69 L 60.213,189.65 L 62.71,190.61 L 65.304,191.38 L 67.994,191.95 L 70.684,192.43 L 73.374,192.82 L 76.063,193.1 L 78.753,193.2 L 81.539,193.2 L 84.325,193.1 L 87.015,192.82 L 89.801,192.34 L 92.49,191.76 L 95.18,191.09 L 97.87,190.23 L 100.56,189.27 L 103.25,188.12 Z" Fill="#FF000000"/><Path Data="M 58.195,51.081 L 20.538,70.548 L 18.809,71.507 L 19.674,73.233 L 37.734,107.85 L 38.022,108.52 L 38.791,108.71 L 38.983,108.81 L 39.367,108.91 L 40.039,109.1 L 40.808,109.19 L 41.769,109.39 L 42.921,109.48 L 44.266,109.58 L 45.707,109.67 L 47.34,109.58 L 49.069,109.48 L 50.991,109.19 L 52.912,108.81 L 55.025,108.24 L 57.139,107.56 L 59.444,106.7 L 61.75,105.55 L 64.632,103.92 L 67.129,102.39 L 69.339,100.76 L 71.26,99.221 L 72.989,97.687 L 74.334,96.248 L 75.487,94.906 L 76.448,93.563 L 77.216,92.316 L 77.889,91.262 L 78.273,90.207 L 78.657,89.44 L 78.849,88.672 L 78.945,88.193 L 79.041,87.809 L 79.041,87.617 L 79.041,87.042 L 78.849,86.467 L 60.789,51.848 L 59.925,50.218 Z" Fill="#FF777777"/><Path Data="M 60.021,102.1 L 58.292,102.96 L 56.562,103.63 L 54.929,104.21 L 53.392,104.69 L 51.855,105.07 L 50.414,105.36 L 49.069,105.55 L 47.724,105.65 L 46.476,105.74 L 45.419,105.74 L 44.362,105.74 L 43.402,105.65 L 42.537,105.55 L 41.865,105.45 L 41.192,105.36 L 40.712,105.26 L 23.997,73.137 L 58.292,55.396 L 75.103,87.713 L 74.815,88.576 L 74.238,89.823 L 73.278,91.357 L 71.933,93.18 L 70.011,95.193 L 67.418,97.399 L 64.151,99.7 Z" Fill="#FF000000"/><Path Data="M 50.222,155.32 L 47.917,150.33 L 46.284,145.16 L 45.323,140.07 L 44.939,134.89 L 45.131,129.81 L 45.995,124.92 L 47.34,120.22 L 49.262,115.72 L 47.532,116 L 45.995,116.19 L 44.458,116.19 L 43.017,116.19 L 41.672,116.1 L 40.424,115.81 L 39.271,115.52 L 38.214,115.24 L 36.101,119.74 L 34.564,124.44 L 33.699,129.43 L 33.315,134.51 L 33.603,139.79 L 34.564,144.96 L 36.197,150.14 L 38.406,155.22 L 40.135,158.2 L 41.961,160.98 L 44.074,163.66 L 46.284,166.06 L 48.589,168.27 L 51.087,170.28 L 53.68,172.1 L 56.37,173.73 L 59.156,175.17 L 61.942,176.32 L 64.92,177.28 L 67.898,178.05 L 70.876,178.53 L 73.854,178.72 L 76.928,178.72 L 79.906,178.53 L 77.696,177.95 L 75.391,177.28 L 73.181,176.51 L 71.068,175.55 L 68.955,174.5 L 66.937,173.35 L 64.92,172.01 L 62.903,170.57 L 61.077,169.03 L 59.252,167.4 L 57.523,165.68 L 55.89,163.76 L 54.353,161.84 L 52.816,159.73 L 51.471,157.62 Z" Fill="#FF777777"/><Path Data="M 102.87,110.63 L 98.35,116.29 L 98.734,116.87 L 99.215,117.54 L 99.599,118.11 L 100.08,118.78 L 100.46,119.36 L 100.85,120.03 L 101.14,120.61 L 101.52,121.28 L 101.81,121.76 L 102,122.24 L 102.29,122.72 L 102.48,123.2 L 104.02,122.72 L 108.15,120.7 L 107.67,119.26 L 107.09,117.92 L 106.42,116.58 L 105.84,115.33 L 105.07,114.09 L 104.4,112.84 L 103.63,111.69 Z" Fill="#FF777777"/><Path Data="M 116.12,113.8 L 115.35,112.45 L 114.59,111.02 L 113.72,109.77 L 112.95,108.43 L 111.99,107.18 L 111.03,105.93 L 110.07,104.69 L 109.11,103.54 L 105.27,108.24 L 106.13,109.39 L 107,110.63 L 107.86,111.98 L 108.63,113.32 L 109.4,114.66 L 110.07,116.19 L 110.74,117.63 L 111.32,119.26 L 117.37,116.48 L 117.08,115.81 L 116.79,115.14 L 116.51,114.47 Z" Fill="#FF777777"/><Path Data="M 101.71,104.21 L 105.36,99.7 L 104.02,98.742 L 102.58,97.783 L 101.14,96.919 L 99.599,96.056 L 98.062,95.289 L 96.525,94.618 L 94.988,93.947 L 93.355,93.275 L 90.473,98.837 L 91.722,99.221 L 93.067,99.796 L 94.508,100.28 L 95.853,100.95 L 97.294,101.62 L 98.734,102.39 L 100.27,103.25 Z" Fill="#FF777777"/><Path Data="M 88.744,102.29 L 85.574,108.43 L 86.823,108.81 L 88.167,109.29 L 89.416,109.77 L 90.569,110.35 L 91.818,110.92 L 92.971,111.59 L 94.123,112.26 L 95.18,113.03 L 99.695,107.37 L 98.254,106.41 L 96.813,105.65 L 95.372,104.88 L 94.027,104.21 L 92.586,103.63 L 91.338,103.15 L 89.993,102.67 Z" Fill="#FF777777"/><Path Data="M 112.95,97.974 L 114.39,99.413 L 115.83,100.95 L 117.18,102.48 L 118.43,104.11 L 119.68,105.84 L 120.93,107.66 L 121.98,109.48 L 123.04,111.4 L 125.15,116.1 L 126.79,120.89 L 127.94,125.69 L 128.61,130.58 L 128.71,135.47 L 128.42,140.36 L 127.55,145.06 L 126.4,149.76 L 124.67,154.27 L 122.56,158.68 L 119.96,162.8 L 117.08,166.73 L 113.72,170.38 L 109.97,173.73 L 105.94,176.71 L 101.42,179.29 L 97.966,180.93 L 94.508,182.27 L 90.953,183.32 L 87.399,184.09 L 83.845,184.67 L 80.29,184.95 L 76.64,184.95 L 73.085,184.67 L 69.627,184.19 L 66.169,183.51 L 62.71,182.56 L 59.348,181.31 L 56.082,179.87 L 53.008,178.24 L 49.934,176.32 L 47.052,174.21 L 50.03,176.8 L 53.104,179.1 L 56.37,181.12 L 59.732,182.94 L 63.287,184.47 L 66.841,185.72 L 70.588,186.68 L 74.334,187.45 L 78.177,187.83 L 82.019,188.02 L 85.958,187.83 L 89.801,187.35 L 93.643,186.58 L 97.486,185.53 L 101.23,184.09 L 104.98,182.36 L 109.49,179.77 L 113.53,176.8 L 117.27,173.45 L 120.64,169.8 L 123.52,165.87 L 126.11,161.75 L 128.23,157.33 L 129.86,152.83 L 131.11,148.13 L 131.88,143.33 L 132.26,138.44 L 132.07,133.55 L 131.49,128.66 L 130.34,123.87 L 128.71,119.07 L 126.59,114.37 L 125.25,111.98 L 123.81,109.67 L 122.17,107.47 L 120.54,105.36 L 118.72,103.34 L 116.89,101.43 L 114.97,99.605 Z" Fill="#FF383838"/><Path Data="M 52.624,63.739 L 69.243,95.865 L 69.723,95.385 L 70.203,95.002 L 70.588,94.522 L 71.068,94.138 L 71.452,93.659 L 71.74,93.275 L 72.125,92.892 L 72.413,92.508 L 56.466,61.725 Z" Fill="#FF383838"/><Path Data="M 47.628,66.328 L 64.728,99.317 L 65.4,98.837 L 66.073,98.358 L 66.649,97.974 L 67.225,97.495 L 50.318,64.89 Z" Fill="#FF383838"/><Path Data="M 44.554,70.26 L 46.187,69.397 L 47.724,68.438 L 49.262,67.575 L 50.702,66.616 L 52.143,65.657 L 53.392,64.698 L 54.641,63.739 L 55.794,62.78 L 56.851,61.821 L 57.811,60.862 L 58.676,59.903 L 59.444,58.944 L 60.117,58.081 L 60.693,57.218 L 61.173,56.355 L 61.462,55.492 L 61.75,54.245 L 61.75,53.19 L 61.558,52.327 L 61.27,51.656 L 61.077,51.368 L 60.885,51.081 L 60.597,50.697 L 60.309,50.409 L 59.925,50.122 L 59.444,49.834 L 58.868,49.546 L 58.292,49.355 L 57.427,49.163 L 56.466,48.971 L 55.41,48.875 L 54.257,48.971 L 53.008,48.971 L 51.759,49.163 L 50.414,49.45 L 49.069,49.738 L 47.532,50.122 L 46.091,50.601 L 44.554,51.081 L 42.921,51.656 L 41.384,52.327 L 39.751,52.999 L 38.022,53.766 L 36.389,54.629 L 34.564,55.588 L 32.642,56.739 L 30.913,57.794 L 29.184,58.944 L 27.551,60.191 L 26.014,61.342 L 24.573,62.588 L 23.228,63.835 L 22.075,65.082 L 21.115,66.328 L 20.346,67.575 L 19.674,68.822 L 19.29,69.972 L 19.193,71.123 L 19.29,72.178 L 19.674,73.233 L 19.866,73.521 L 20.058,73.808 L 20.346,74.096 L 20.634,74.384 L 21.115,74.767 L 21.595,75.055 L 22.075,75.343 L 22.748,75.534 L 23.612,75.726 L 24.573,75.918 L 25.63,75.918 L 26.686,75.918 L 27.935,75.822 L 29.184,75.63 L 30.529,75.439 L 31.97,75.151 L 33.411,74.767 L 34.852,74.288 L 36.389,73.808 L 38.022,73.233 L 39.559,72.562 L 41.192,71.89 L 42.921,71.123 Z" Fill="#FF777777"/><Path Data="M 23.132,71.411 L 23.132,71.219 L 23.132,71.027 L 23.132,70.836 L 23.228,70.548 L 23.805,69.397 L 24.765,68.055 L 26.11,66.616 L 27.839,64.986 L 29.857,63.26 L 32.354,61.534 L 35.14,59.807 L 38.214,58.081 L 39.847,57.314 L 41.384,56.547 L 42.921,55.876 L 44.458,55.3 L 45.803,54.725 L 47.244,54.245 L 48.589,53.862 L 49.838,53.478 L 50.991,53.286 L 52.143,52.999 L 53.2,52.903 L 54.161,52.807 L 55.025,52.807 L 55.794,52.807 L 56.466,52.903 L 57.043,52.999 L 57.331,53.095 L 57.523,53.19 L 57.715,53.382 L 57.811,53.478 L 57.907,53.766 L 57.811,54.149 L 57.619,54.629 L 57.331,55.204 L 56.947,55.971 L 56.37,56.643 L 55.602,57.506 L 54.833,58.369 L 53.873,59.328 L 52.72,60.287 L 51.471,61.342 L 50.03,62.397 L 48.397,63.547 L 46.668,64.698 L 44.842,65.945 L 42.921,67.096 L 41.192,68.247 L 39.367,69.397 L 37.542,70.548 L 35.813,71.603 L 34.083,72.562 L 32.546,73.425 L 31.009,74.288 L 29.472,75.055 L 28.031,75.726 L 26.782,76.206 L 25.534,76.589 L 24.477,76.877 L 23.516,77.069 L 22.748,77.165 L 22.171,77.165 L 21.691,77.069 L 21.307,76.877 L 21.019,76.589 L 20.827,76.302 L 20.634,76.014 L 20.538,75.63 L 20.538,75.247 L 20.634,74.959 L 20.827,74.575 L 21.019,74.288 L 21.211,74 L 21.403,73.712 L 21.595,73.425 L 21.787,73.137 L 22.171,72.753 L 22.459,72.274 L 22.748,71.982 L 23.228,71.507 Z" Fill="#FF000000"/><Path Data="M 41.769,58.752 L 42.345,58.464 L 42.921,58.177 L 43.498,57.889 L 44.074,57.697 L 44.65,57.506 L 45.227,57.314 L 45.899,57.122 L 46.572,56.931 L 47.148,56.739 L 47.724,56.547 L 48.301,56.355 L 48.877,56.259 L 49.454,56.163 L 49.934,56.067 L 50.414,55.971 L 50.894,55.971 L 51.375,55.875 L 51.759,55.875 L 52.143,55.779 L 52.528,55.779 L 52.816,55.779 L 53.104,55.779 L 53.392,55.779 L 53.584,55.875 L 53.777,55.875 L 53.969,55.971 L 54.065,55.971 L 54.065,56.067 L 54.161,56.163 L 54.161,56.259 L 54.065,56.355 L 53.969,56.451 L 53.777,56.643 L 53.584,56.835 L 53.296,57.026 L 53.008,57.218 L 52.624,57.506 L 52.24,57.794 L 51.759,58.081 L 51.183,58.369 L 50.606,58.656 L 50.03,58.944 L 49.454,59.232 L 48.781,59.519 L 48.205,59.807 L 47.532,60.095 L 46.956,60.383 L 46.38,60.67 L 45.707,60.958 L 45.131,61.15 L 44.554,61.438 L 43.978,61.534 L 43.402,61.725 L 42.921,61.917 L 42.345,62.013 L 41.865,62.109 L 41.384,62.205 L 40.808,62.301 L 40.328,62.397 L 39.943,62.493 L 39.463,62.493 L 39.079,62.493 L 38.694,62.589 L 38.406,62.493 L 38.022,62.493 L 37.734,62.493 L 37.446,62.397 L 37.254,62.397 L 37.062,62.205 L 36.869,62.109 L 36.677,62.013 L 36.677,61.821 L 36.581,61.629 L 36.581,61.438 L 36.677,61.246 L 36.773,61.054 L 36.869,60.862 L 37.062,60.67 L 37.254,60.479 L 37.542,60.191 L 37.734,59.999 L 38.022,59.711 L 38.406,59.423 L 38.694,59.232 L 39.079,58.944 L 39.463,58.752 L 39.847,58.561 L 40.328,58.369 L 40.808,58.177 L 41.288,57.985 L 41.769,57.889 L 41.769,58.752 Z" Fill="#FFFF1900"/><Path Data="M 59.925,139.59 L 60.597,130.2 L 27.167,127.61 L 26.398,137 Z" Fill="#FF000000"/></Canvas></ControlTemplate></Setter.Value></Setter>
</Style>

 BombDropper.axaml代码

<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Height="500" Width="600"x:Class="AvaloniaUI.BombDropper"Title="BombDropper"><Grid x:Name="LayoutRoot" ColumnDefinitions="*,280"><!-- 左边游戏区域 --><Border BorderBrush="SteelBlue" BorderThickness="1" Margin="5"><Grid><Canvas x:Name="canvasBackground"SizeChanged="canvasBackground_SizeChanged"MinWidth="50"><Canvas.Background><RadialGradientBrush><GradientStop Color="AliceBlue" Offset="0"/><GradientStop Color="White" Offset="0.7"/></RadialGradientBrush></Canvas.Background></Canvas></Grid></Border><!-- 右边控制面板 --><Border Grid.Column="1" BorderBrush="SteelBlue" BorderThickness="1" Margin="5"><Border.Background><RadialGradientBrush GradientOrigin="100%,70%" Center="100%,70%" RadiusX="100%" RadiusY="100%"><GradientStop Color="Orange" Offset="0"/><GradientStop Color="White" Offset="1"/></RadialGradientBrush></Border.Background><StackPanel Margin="15" VerticalAlignment="Center" HorizontalAlignment="Center"><TextBlock FontFamily="Impact" FontSize="35" Foreground="LightSteelBlue">Bomb Dropper</TextBlock><TextBlock x:Name="lblRate" Margin="0,30,0,0"TextWrapping="Wrap" FontFamily="Georgia" FontSize="14"/><TextBlock x:Name="lblSpeed" Margin="0,30"TextWrapping="Wrap" FontFamily="Georgia" FontSize="14"/><TextBlock x:Name="lblStatus"TextWrapping="Wrap" FontFamily="Georgia" FontSize="20">No bombs have dropped.</TextBlock><Button x:Name="cmdStart" Padding="5" Margin="0,30" Width="90"Content="Start Game" Click="cmdStart_Click"/></StackPanel></Border></Grid>
</Window>

BombDropper.axaml.cs代码

using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Media;
using Avalonia.Threading;
using Shares.Avalonia;
using System;
using System.Collections.Generic;namespace AvaloniaUI;public partial class BombDropper : Window
{private readonly DispatcherTimer bombTimer = new();private readonly Dictionary<Control, AnimationPlayer> players = new();private readonly Random random = new();// ---------- 游戏参数 ----------private double secondsBetweenAdjustments = 15;private double initialSecondsBetweenBombs = 1.3;private double initialSecondsToFall = 3.5;private double secondsBetweenBombs;private double secondsToFall;private double secondsBetweenBombsReduction = 0.1;private double secondsToFallReduction = 0.1;private DateTime lastAdjustmentTime = DateTime.MinValue;private int droppedCount = 0;private int savedCount = 0;private int maxDropped = 5;public BombDropper(){InitializeComponent();this.Load("avares://Shares/Avalonia/Styles/Styles.axaml");bombTimer.Tick += BombTimer_Tick;}private void canvasBackground_SizeChanged(object? sender, SizeChangedEventArgs e){// 限制绘制区域canvasBackground.Clip = new RectangleGeometry(new Rect(0, 0, canvasBackground.Bounds.Width, canvasBackground.Bounds.Height));}private void cmdStart_Click(object? sender, RoutedEventArgs e){cmdStart.IsEnabled = false;droppedCount = 0;savedCount = 0;secondsBetweenBombs = initialSecondsBetweenBombs;secondsToFall = initialSecondsToFall;lblStatus.Text = "Game started!";bombTimer.Interval = TimeSpan.FromSeconds(secondsBetweenBombs);bombTimer.Start();}private void BombTimer_Tick(object? sender, EventArgs e){// 每隔 15 秒调整掉落速度if ((DateTime.Now - lastAdjustmentTime).TotalSeconds > secondsBetweenAdjustments){lastAdjustmentTime = DateTime.Now;secondsBetweenBombs = Math.Max(0.3, secondsBetweenBombs - secondsBetweenBombsReduction);secondsToFall = Math.Max(0.5, secondsToFall - secondsToFallReduction);bombTimer.Interval = TimeSpan.FromSeconds(secondsBetweenBombs);lblRate.Text = $"A bomb is released every {secondsBetweenBombs:0.0}s";lblSpeed.Text = $"Each bomb takes {secondsToFall:0.0}s to fall.";}DropBomb();}private void DropBomb(){// 创建炸弹控件var bomb = new ContentControl { Classes = { "Bomb" } };double bombWidth = 150;double maxLeft = Math.Max(0, canvasBackground.Bounds.Width - bombWidth);double left = random.NextDouble() * maxLeft;double startTop = -bombWidth;double endTop = canvasBackground.Bounds.Height;Canvas.SetLeft(bomb, left);Canvas.SetTop(bomb, startTop);bomb.PointerPressed += Bomb_PointerPressed;canvasBackground.Children.Add(bomb);// ---------------- AnimationPlayer 控制 ----------------var player = new AnimationPlayer{Duration = secondsToFall,Fps = 60};// 下落动画player.At(0).Ease("CubicEaseIn").PlayLocal(progress =>{double y = startTop + (endTop - startTop) * progress;Canvas.SetTop(bomb, y);});// 左右摆动动画double baseLeft = left;player.At(0, secondsToFall).Ease("SineEaseInOut").PlayLocal(progress =>{double offset = Math.Sin(progress * Math.PI * 8) * 10;Canvas.SetLeft(bomb, baseLeft + offset);});player.AnimationCompleted += () => OnBombFallen(bomb);players[bomb] = player;player.Start();}private void Bomb_PointerPressed(object? sender, PointerPressedEventArgs e){if (sender is not Control bomb)return;if (!players.TryGetValue(bomb, out var player))return;player.Stop();players.Remove(bomb);savedCount++;double currentTop = Canvas.GetTop(bomb);double currentLeft = Canvas.GetLeft(bomb);double targetLeft = currentLeft < canvasBackground.Bounds.Width / 2? -100 : canvasBackground.Bounds.Width + 100;var escape = new AnimationPlayer{Duration = 1.5,Fps = 60};double startTop = currentTop;double startLeft = currentLeft;escape.At(0).Ease("CubicEaseOut").PlayDual((p, g) =>{double y = startTop - 300 * p; // 向上飞double x = startLeft + (targetLeft - startLeft) * p;Canvas.SetTop(bomb, y);Canvas.SetLeft(bomb, x);});escape.AnimationCompleted += () =>{canvasBackground.Children.Remove(bomb);UpdateStatus();};escape.Start();}private void OnBombFallen(Control bomb){if (!canvasBackground.Children.Contains(bomb))return;droppedCount++;canvasBackground.Children.Remove(bomb);UpdateStatus();if (droppedCount >= maxDropped)EndGame();}private void UpdateStatus(){lblStatus.Text = $"You have dropped {droppedCount} bombs and saved {savedCount}.";}private void EndGame(){bombTimer.Stop();lblStatus.Text += "\n\nGame over.";foreach (var kv in players)kv.Value.Stop();players.Clear();canvasBackground.Children.Clear();cmdStart.IsEnabled = true;}
}

运行效果

image

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/941166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 使用NPOI生成Word文件

NuGet 安装 NPOI 1. 建立模板(可选): 手动建立Word模板, 多使用表格然后隐藏边框, 方便数据插入固定位置 2. 建立Word对象引入模板string dPath = $"{Environment.CurrentDirectory}\\Data\\Demo.docx"; Str…

2025年太阳能板定制厂家口碑排行榜单:权威推荐与选择指南

摘要 随着全球能源转型加速,太阳能板行业迎来爆发式增长,2025年市场规模预计突破3000亿美元。消费者在选择太阳能板定制厂家时面临诸多困惑,本文基于技术实力、产品质量、客户口碑等维度,为您呈现最新行业排行榜单…

2025年太阳能板定制厂家口碑排行榜前十强:专业评测与选择指南

摘要 随着全球能源转型加速,太阳能板行业在2025年迎来爆发式增长,定制化需求显著提升。本文基于市场调研和用户反馈,整理出太阳能板厂家口碑排行榜单,旨在帮助用户快速找到可靠供应商。榜单结合技术参数、服务质量…

Python3 statistics 模块

Python3 statistics 模块statistics 是 Python 3.4 引入的标准库,专注于提供基本的统计计算功能,可用于分析数值数据的集中趋势、离散程度、分布形状等。它无需额外安装,接口简洁,适合快速完成简单的统计分析任务(…

linux内核开发学习计划

目录岗位需求实习--字节跳动--Linux内核开发实习生--实时核方向正式--Linux内核驱动工程师 央企直招实习--乐研--linux内核研发工程师正式--京东--OS内核核心研发正式--小米--linux内核高级工程师 岗位需求 实习--字节…

随机生成动态头像

Multiavatar 是一个多文化的头像生成器,使用 JavaScript 编写。它能够生成代表不同种族、文化、年龄组、世界观和生活方式的头像。Multiavatar 可以生成超过 120 亿个独特的头像。Multiavatar Github 地址安装 pnpm i…

2025年湖北武汉实验室装修/实验室设计/实验室改造哪个厂家好

2025年湖北武汉实验室装修厂家推荐:湖北特尔诺实验室设备有限公司 在2025年,如果您正在寻找湖北武汉地区优质的实验室装修厂家,那么​​湖北特尔诺实验室设备有限公司​​无疑是您的不二之选。这家公司凭借其专业的…

能源AI天团:多智能体如何破解行业复杂任务 - 实践

能源AI天团:多智能体如何破解行业复杂任务 - 实践2025-10-20 13:39 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displ…

2025年AI搜索优化品牌推荐排行榜前十强深度解析

摘要 随着人工智能技术的迅猛发展,AI搜索优化行业在2025年迎来爆发式增长,企业依赖高效、精准的搜索优化服务提升在线可见性和业务转化。本文基于市场调研和数据统计,解析2025年AI搜索优化品牌排行榜前十强,为读者…

2025年AI搜索优化品牌推荐排行榜:技术深度解析与选择指南

摘要 随着人工智能技术的飞速发展,AI搜索优化行业在2025年迎来爆发式增长,旨在提升内容精准度和用户体验。本排行基于技术实力、服务口碑、案例实效等维度综合评估,为寻求加盟或服务的企业提供参考。表单数据来源于…

2025年AI搜索优化品牌排行榜前十强权威发布

摘要 随着人工智能技术快速发展,AI搜索优化行业迎来爆发式增长,预计2025年市场规模将突破千亿。本文基于技术实力、服务能力、客户口碑等多维度评估,为您呈现最新AI搜索优化品牌排行榜,并提供专业选择指南,帮助您…

直播回顾|PostgreSQL 18 六大新特性深度解析

10 月 16 日,IvorySQL 社区组织了一场线上直播,主题为:PostgreSQL 18 六大新特性深度解析。以下为本场直播的回顾。 嘉宾简介王世鑫,数据库软件工程师 张虎,数据库软件工程师 权宗亮,数据库软件工程师 兰柯,数据…

异常----Windows 已保护你的电脑:Microsoft Defender SmartScreen 阻止了无法识别的应用启动。运行此应用可能会导致你的电脑存在风险。

exe文件运行异常: Windows 已保护你的电脑 Microsoft Defender SmartScreen 阻止了无法识别的应用启动。运行此应用可能会导致你的电脑存在风险。 解决方法: 打开文件属性, 找到“常规”中的“安全”,并勾选“解除…

win10 开启大小核心调度--异类策略0~4介绍

异类策略0‌:‌特点‌:Windows 11的默认策略。睡眠顺序为优先休眠超线程、小核、大核。‌适用场景‌:适合使用12代、13代处理器的用户,无论系统类型,都可以获得最佳的能效处理。‌优势‌:通过合理调度大小核,实…

Windows 已保护你的电脑:Microsoft Defender SmartScreen 阻止了无法识别的应用启动。运行此应用可能会导致你的电脑存在风险。

exe文件运行异常: Windows 已保护你的电脑 Microsoft Defender SmartScreen 阻止了无法识别的应用启动。运行此应用可能会导致你的电脑存在风险。 解决方法: 打开文件属性, 找到“常规”中的“安全”,并勾选“解除…

深入解析:Thinkphp-Laravel467 小程序校运会高校运动会管理系统

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

恒生电子面经准备 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

082_尚硅谷_单分支双分支课堂练习(2)

082_尚硅谷_单分支双分支课堂练习(2)1.声明2个float64变量并赋值, 判断第一个数大于10.0, 且第2个数小于20.0, 打印两数之和 2.声明2个int32变量并赋值, 判断两数之和, 如果大于等于50, 打印`hello world` 3.定义两个变…

把“扔硬币”搬到互联网:一文看懂 AB 测试的底层逻辑 - 指南

把“扔硬币”搬到互联网:一文看懂 AB 测试的底层逻辑 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Cons…

实用指南:IEC 60364-7-722-2018低压电气装置中电动车供电安全要求标准介绍

实用指南:IEC 60364-7-722-2018低压电气装置中电动车供电安全要求标准介绍pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-famil…