开发打砖块游戏:如何实现砖块仅随机蓝黄绿三种背景色?
嘿,我懂你的烦恼!你之前想的用列表来限定颜色的思路真的很对,大概率是写代码的时候索引处理或者列表初始化出了小问题,我给你分享两种简单靠谱的实现方式,轻松搞定砖块颜色的随机限定:
方法1:用颜色列表随机选取
先定义一个包含你需要的三种颜色的列表,再通过随机索引从列表里取颜色就行:
// 在类里定义颜色列表和随机实例(和你原来的rnd放在一起就行) private List<Color> targetBrickColors = new List<Color> { Color.Blue, Color.Yellow, Color.Green }; private Random rnd = new Random(); // 设置砖块颜色的代码段 int randomColorIndex = rnd.Next(targetBrickColors.Count); bricks[x, y].BackColor = targetBrickColors[randomColorIndex];
这里rnd.Next(targetBrickColors.Count)会生成0到2之间的随机整数(对应列表里三个颜色的索引),这样每次都会从你指定的蓝、黄、绿里挑一个,完全不会出现其他颜色啦。
方法2:用颜色数组实现
如果觉得列表有点“重量级”,用数组也能达到同样的效果,逻辑是一样的:
// 类里定义颜色数组和随机实例 private Color[] targetBrickColors = new Color[] { Color.Blue, Color.Yellow, Color.Green }; private Random rnd = new Random(); // 设置砖块颜色 int randomColorIndex = rnd.Next(targetBrickColors.Length); bricks[x, y].BackColor = targetBrickColors[randomColorIndex];
另外要提醒你一下:你原来把Random实例作为类成员的做法非常正确,千万不要在循环里重复创建Random对象,不然会因为系统时间戳太近导致随机结果重复哦。
内容的提问来源于stack exchange,提问作者Hugo Guerra
相关产品推荐
相关产品推荐

