Если вы сравниваете два списка, в то время как они оба могут иметь одинаковые элементы , вы сравниваете две отдельные ссылки в своем коде.
Это означает, что они различны и, таким образом, ваше условие для установки флага GameOver в true выполнено .
У вас есть много вариантов для сравнения, которое лучше соответствует тому, что вы ищете.
Вы можете сравнить, что списки имеют одинаковое количество членов , и после этого итерируйте и сравните элементы каждого списка по индексу , что означает, что вы сравниваете первый элемент списка кодов с первым элементом Player.inputList и т. д. Если вы перебираете все элементы и условие выполняется, тогда списки содержат одинаковую информацию и, таким образом, можно считать тем же списком . (Вы также можете использовать Enumerable.SequenceEqual для достижения того же поведения)
Вместо использования списков для хранения значений, используйте строки как для переменной кода, так и для player.inputList , а затем сравните эти две строки, как при сравнении строк (либо через ==, либо метод .Equals) сравнение будет оценивать, если каждая строка содержит одну и ту же информацию (тип ссылки на строку был написан для выполнения этого сравнения вместо оценки, если каждая строка указывает на одну и ту же ссылку), если вы сравниваете строку с другой строкой и они содержат одинаковый текст или символы, сравнение вернет true, чтобы показать, что строки равны .
Это только вершина айсберга, у вас есть много других способов проверить равенство, я рекомендую вам поискать dotnetperls и прочитать каждую статью, которая у вас есть, что может помочь вам лучше понять, почему ваше сравнение не работает так, как вы ожидаете это к.