Я новичок в Blazor и нуждаюсь в вашей помощи, пожалуйста. Мне нужно создать страницу, такую как cryptobubbles.net, которая имеет движущиеся пузырьки, и они меняют направление, когда границы сталкиваются, а также смотрят на эффект сопротивления мыши, чтобы переместить каждый пузырь. В моем проекте нельзя использовать JS и CSS. >
Я попробовал код ниже, но результат - это не то, что я ищу. Вы можете проверить и исправить код, где я ошибаюсь?
@foreach (var bubble in bubbles)
{
}
< /code>
раздел кода: < /p>
protected override async Task OnInitializedAsync()
{
// Initialize bubbles
for (int i = 0; i < 30; i++)
{
var bubble = new Bubble
{
X = new Random().Next(10, 1400),
Y = new Random().Next(10, 1400),
Radius = new Random().Next(30, 60),
SpeedX = new Random().NextDouble() * 2 - 1, // Speed between -1 and 1
SpeedY = new Random().NextDouble() * 2 - 1, // Speed between -1 and 1
Color = $"hsl({new Random().Next(360)}, 100%, 50%)"
};
bubbles.Add(bubble);
}
// Set up a timer to update bubbles' positions
timer = new Timer(30); // 30 milliseconds interval
timer.Elapsed += TimerElapsed;
timer.Start();
await base.OnInitializedAsync();
}
private void TimerElapsed(object sender, ElapsedEventArgs e)
{
foreach (var bubble in bubbles)
{
// Update bubble's position
bubble.X += bubble.SpeedX;
bubble.Y += bubble.SpeedY;
// Check for collisions with boundaries
if (bubble.X - bubble.Radius < 0 || bubble.X + bubble.Radius > 300)
bubble.SpeedX *= -1; // Reverse direction if hits the edge
if (bubble.Y - bubble.Radius < 0 || bubble.Y + bubble.Radius > 500)
bubble.SpeedY *= -1; // Reverse direction if hits the edge
// Check for collisions with other bubbles
foreach (var otherBubble in bubbles)
{
if (bubble != otherBubble && bubble.CollidesWith(otherBubble))
{
// Change direction after collision
bubble.SpeedX *= -1;
bubble.SpeedY *= -1;
otherBubble.SpeedX *= -1;
otherBubble.SpeedY *= -1;
}
}
}
InvokeAsync(StateHasChanged); // Update the UI
}
public async ValueTask DisposeAsync()
{
// Dispose timer when no longer needed
if (timer != null)
{
timer.Stop();
timer.Dispose();
}
}
public class Bubble
{
public double X { get; set; }
public double Y { get; set; }
public double Radius { get; set; }
public double SpeedX { get; set; }
public double SpeedY { get; set; }
public string Color { get; set; }
public bool CollidesWith(Bubble other)
{
var dx = X - other.X;
var dy = Y - other.Y;
var distance = Math.Sqrt(dx * dx + dy * dy);
return distance < (Radius + other.Radius);
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... js-and-css
Blazor - движущиеся пузырьки с использованием таймера и без использования JS и CSS ⇐ C#
Место общения программистов C#
1739977924
Anonymous
Я новичок в Blazor и нуждаюсь в вашей помощи, пожалуйста. Мне нужно создать страницу, такую как cryptobubbles.net, которая имеет движущиеся пузырьки, и они меняют направление, когда границы сталкиваются, а также смотрят на эффект сопротивления мыши, чтобы переместить каждый пузырь. В моем проекте нельзя использовать JS и CSS. >
Я попробовал код ниже, но результат - это не то, что я ищу. Вы можете проверить и исправить код, где я ошибаюсь?
@foreach (var bubble in bubbles)
{
}
< /code>
раздел кода: < /p>
protected override async Task OnInitializedAsync()
{
// Initialize bubbles
for (int i = 0; i < 30; i++)
{
var bubble = new Bubble
{
X = new Random().Next(10, 1400),
Y = new Random().Next(10, 1400),
Radius = new Random().Next(30, 60),
SpeedX = new Random().NextDouble() * 2 - 1, // Speed between -1 and 1
SpeedY = new Random().NextDouble() * 2 - 1, // Speed between -1 and 1
Color = $"hsl({new Random().Next(360)}, 100%, 50%)"
};
bubbles.Add(bubble);
}
// Set up a timer to update bubbles' positions
timer = new Timer(30); // 30 milliseconds interval
timer.Elapsed += TimerElapsed;
timer.Start();
await base.OnInitializedAsync();
}
private void TimerElapsed(object sender, ElapsedEventArgs e)
{
foreach (var bubble in bubbles)
{
// Update bubble's position
bubble.X += bubble.SpeedX;
bubble.Y += bubble.SpeedY;
// Check for collisions with boundaries
if (bubble.X - bubble.Radius < 0 || bubble.X + bubble.Radius > 300)
bubble.SpeedX *= -1; // Reverse direction if hits the edge
if (bubble.Y - bubble.Radius < 0 || bubble.Y + bubble.Radius > 500)
bubble.SpeedY *= -1; // Reverse direction if hits the edge
// Check for collisions with other bubbles
foreach (var otherBubble in bubbles)
{
if (bubble != otherBubble && bubble.CollidesWith(otherBubble))
{
// Change direction after collision
bubble.SpeedX *= -1;
bubble.SpeedY *= -1;
otherBubble.SpeedX *= -1;
otherBubble.SpeedY *= -1;
}
}
}
InvokeAsync(StateHasChanged); // Update the UI
}
public async ValueTask DisposeAsync()
{
// Dispose timer when no longer needed
if (timer != null)
{
timer.Stop();
timer.Dispose();
}
}
public class Bubble
{
public double X { get; set; }
public double Y { get; set; }
public double Radius { get; set; }
public double SpeedX { get; set; }
public double SpeedY { get; set; }
public string Color { get; set; }
public bool CollidesWith(Bubble other)
{
var dx = X - other.X;
var dy = Y - other.Y;
var distance = Math.Sqrt(dx * dx + dy * dy);
return distance < (Radius + other.Radius);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79450880/blazor-moving-bubbles-using-timer-and-without-using-js-and-css[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия