【发布时间】:2016-12-08 07:13:52
【问题描述】:
我已经创建了列表和“房间”类。我已将房间添加到列表中。现在我坚持编码游戏本身。基本上我想从房间 A 开始,只能通过按 (S)outh 按钮到达房间 E 和 (W)est 按钮到达房间 B 等从房间 A 迭代到房间 E 和房间 B,依此类推。 另外我正在考虑为游戏调用一个不同的类,以便代码可读。因此, main 将只有几行代码。 这是我的代码。随意指出如何优化它。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
roomsList theRooms = new roomsList();
theRooms.allRoomsList();
theRooms.addRoomToEnd("A");
theRooms.addRoomToEnd("B");
theRooms.addRoomToEnd("C");
theRooms.addRoomToEnd("D");
theRooms.addRoomToEnd("E");
theRooms.addRoomToEnd("F");
theRooms.addRoomToEnd("G");
theRooms.addRoomToEnd("H");
theRooms.addRoomToEnd("I");
theRooms.addRoomToEnd("J");
theRooms.addRoomToEnd("K");
theRooms.addRoomToEnd("L");
Console.WriteLine("What is your name?");
string playerName = Console.ReadLine();
Console.WriteLine("================================================================");
Console.WriteLine(playerName + " You have been Chosen, Enter if you dare!!");
Console.WriteLine("================================================================");
Console.WriteLine("(Y)es/(N)o");
string decision = Console.ReadLine();
if (decision == "y")
{
Console.WriteLine("You need to make you way to Room L, so you may live!!");
}
else
{
Console.WriteLine("Goodbye");
}
}
}
class rooms //create class rooms
{
private string roomname;
private rooms next;
public rooms(string rname) //constructor
{
roomname = rname;
next = null;
}
public void setRoom (rooms nxtRoom)
{
next = nxtRoom;
}
public rooms ftchNext()
{
return next;
}
public string ftchName()
{
return roomname;
}
}//done creating class rooms
class roomsList //create linked list
{
public rooms start, end;
public roomsList()
{
start = null;
end = null;
}
public void addRoomToEnd(string rname)
{
rooms current = new rooms(rname);
if (end == null)
{
start = current;
end = current;
}
else
{
end.setRoom(current);
end = current;
}
}
public void allRoomsList()
{
rooms current;
if (start != null)
{
current = start;
while (current != null)
{
current = current.ftchNext();
}
}
else { }
}
}//class list ends
}
【问题讨论】:
-
您只保留列表中的下一个房间。在输入“w、a、s、d”按钮时,这不足以做出决定,因为有四种方法可以走。您需要保持“前、左、后、右”房间相互链接,而不是下一个。
-
我不明白你的意思?能否进一步解释一下?
-
Eran Gat 的回答实际上就是我想说的 :) @GidiBloke
-
是的,它帮助很大,但我不明白其中的某些部分。可以试一下吗?