Windows 表单和 c# 随机化
Windows Forms and c# randomizing
所以我正在制作 windows 形式的游戏。不过,我 运行 有点小问题。当球员接触篮球时,我希望篮球改变到不同的车道。所以为了做到这一点,我使用了 random 和 .next(1, 4) 方法。
出于某种原因,有时篮球会出现在玩家所在的同一条路上,我已尽一切努力让它检查这一点,但没有任何效果。
代码如下:
private void Hlocal(object sender, EventArgs e)
{
// If the player is touching the basketball
if (Halsey.Location.X == Basketball.Location.X)
{
scorenum += 1; // Score
Score.Text = $"Score: {scorenum}"; // Scoreboard
Broad = rnd.Next(1, 5); // Picks a random road
label1.Text = $"{Broad}"; // for debugging
// After it chooses a road I place it on the road
switch (Broad)
{
case 1:
Basketball.Location = new Point(57, Basketball.Location.Y);
break;
case 2:
Basketball.Location = new Point(263, Basketball.Location.Y);
break;
case 3:
Basketball.Location = new Point(469, Basketball.Location.Y);
break;
case 4:
Basketball.Location = new Point(675, Basketball.Location.Y);
break;
}
}
}
这是它移动角色并改变 Hroad var 的地方:
private void KeyHandler(object sender, KeyEventArgs e)
{
switch (e.KeyData)
{
case Keys.Right:
if (Halsey.Location.X == 675)
{
break;
}
Halsey.Location = new Point(Halsey.Location.X + 206, Halsey.Location.Y);
Hroad += 1;
label2.Text = $"{Hroad}";
break;
case Keys.Left:
if (Halsey.Location.X == 57)
{
break;
}
Halsey.Location = new Point(Halsey.Location.X - 206, Halsey.Location.Y);
Hroad -= 1;
label2.Text = $"{Hroad}";
break;
}
}
一些说明:
Hlocal 是玩家移动时调用的事件。
Halsey 是一个图片框,充当角色精灵。
篮球是一个像硬币一样可以加分的精灵。
scorenum 是分数
label1 只是为了调试
篮球的路很广阔
Hroad 是玩家所在的道路
篮球位置是不同的道路
目前,在道路上放置精灵的x点是:
路 1 - 57
道路 2 - 263
道路 3 - 469
路 4 - 675
您可以创建一个包含道路的 List<int>
。然后删除留下可用道路列表的 Hroad
值。然后 select 其中一个随机:
List<int> roads = new List<int>{1,2,3,4};
roads.Remove(Hroad);
int Broad = roads[rand.Next(0, roads.Count)];
所以我正在制作 windows 形式的游戏。不过,我 运行 有点小问题。当球员接触篮球时,我希望篮球改变到不同的车道。所以为了做到这一点,我使用了 random 和 .next(1, 4) 方法。
出于某种原因,有时篮球会出现在玩家所在的同一条路上,我已尽一切努力让它检查这一点,但没有任何效果。
代码如下:
private void Hlocal(object sender, EventArgs e)
{
// If the player is touching the basketball
if (Halsey.Location.X == Basketball.Location.X)
{
scorenum += 1; // Score
Score.Text = $"Score: {scorenum}"; // Scoreboard
Broad = rnd.Next(1, 5); // Picks a random road
label1.Text = $"{Broad}"; // for debugging
// After it chooses a road I place it on the road
switch (Broad)
{
case 1:
Basketball.Location = new Point(57, Basketball.Location.Y);
break;
case 2:
Basketball.Location = new Point(263, Basketball.Location.Y);
break;
case 3:
Basketball.Location = new Point(469, Basketball.Location.Y);
break;
case 4:
Basketball.Location = new Point(675, Basketball.Location.Y);
break;
}
}
}
这是它移动角色并改变 Hroad var 的地方:
private void KeyHandler(object sender, KeyEventArgs e)
{
switch (e.KeyData)
{
case Keys.Right:
if (Halsey.Location.X == 675)
{
break;
}
Halsey.Location = new Point(Halsey.Location.X + 206, Halsey.Location.Y);
Hroad += 1;
label2.Text = $"{Hroad}";
break;
case Keys.Left:
if (Halsey.Location.X == 57)
{
break;
}
Halsey.Location = new Point(Halsey.Location.X - 206, Halsey.Location.Y);
Hroad -= 1;
label2.Text = $"{Hroad}";
break;
}
}
一些说明:
Hlocal 是玩家移动时调用的事件。
Halsey 是一个图片框,充当角色精灵。
篮球是一个像硬币一样可以加分的精灵。
scorenum 是分数
label1 只是为了调试
篮球的路很广阔
Hroad 是玩家所在的道路
篮球位置是不同的道路
目前,在道路上放置精灵的x点是: 路 1 - 57
道路 2 - 263
道路 3 - 469
路 4 - 675
您可以创建一个包含道路的 List<int>
。然后删除留下可用道路列表的 Hroad
值。然后 select 其中一个随机:
List<int> roads = new List<int>{1,2,3,4};
roads.Remove(Hroad);
int Broad = roads[rand.Next(0, roads.Count)];