我有一个快速的问题来分配值 在我的新程序中,我试图根据整数的值为booleans赋值。这是我的意思的一个简单例子:
bool northDoorAvailable;
int roomLocation;
// set player Location in some code
roomLocation = 2;
// now set if the north door is available
这是否仅适用于我写了很多if
- 语句?
public void checkDoors()
{
if ( roomLocation == 1 )
{
northDoorAvailable = false;
}
if ( roomLocation == 2 )
{
northDoorAvailable = true;
}
}
或者这个过程可以自动化吗?
很高兴收到回复。
答案 0 :(得分:2)
更好的语法在很大程度上取决于所有可能的条件。现在你可以使用
northDoorAvailable = (roomLocation == 2);
或
northDoorAvailable = (roomLocation != 1);
因为X == Y
会返回true
或false
,具体取决于两者是否相等"。 (反之亦然!=
)
但如果roomLocation
是3
怎么办? 4
?
通常, usally 可以将这些条件简化为单个逻辑表达式,但可能总是。一种简化方法是将所有可能的条件放在"truth table"中,并查看等效逻辑表达式是什么。
如果
,则会有其他人roomlocation != possibleLocations
northDoorAvailable = false
我假设possibleLocations
是集合(如果是整数),如果包含 roomlocation
,那么northDoorAvailable
将是true
。在这种情况下,您可以使用
northDoorAvailable = (possibleLocations.Contains(roomlocation));
答案 1 :(得分:0)
您可以使用字典:
public class MyGameClass
{
private Dictionary<int, bool> _northDoorAvailable = new Dictionary<int, bool>();
public MyGameClass()
{
_northDoorAvailable[1] = false;
_northDoorAvailalbe[2] = true;
_northDoorAvailable[3] = false;
_northDoorAvailable[4] = false;
_northDoorAvailable[5] = false;
}
public bool IsNorthDoorAvailable(int room)
{
bool available = false;
_northDoorAvailable.TryGetValue(room, out available);
return available;
}
}
字典是键/值存储,在这种情况下,键是房间号,值((标记的另一侧)是门是否可用。您可以在构造函数方法中为您正在使用的任何类快速添加案例到字典,并且可以在内部或通过IsNorthDoorAvailable
方法公开访问字典。
答案 2 :(得分:0)
你可以做的是有一个排序列表并解析一个单词doc或db table,其中包含一个房间列表及其相应的布尔值,然后循环遍历列表
1 - 真实
2 - 真实
3 - 假
等...
SortedList<int, bool> roomsList = new SortedList<int, bool>();
using (StreamReader reader = new StreamReader(@"C:\temp\RoomList.txt"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
string[] rooms = line.Split('-');
roomsList.Add(int.Parse(rooms[0]), bool.Parse(rooms[1]));
}
}