c#如何让符号保持开启状态(记忆游戏)
我被困在一个地方,我想我的符号保持翻转,如果他们匹配。这是一个简单的4x4记忆游戏的项目。我应该制定一个新的方法吗?如果有人能告诉我是否可以通过按键来重置电路板,那就太好了 我是一个完全的初学者,所以如果有人能以一种非常简单的方式向我解释这一点,那将对我帮助很大。现在我被困在这个问题上了c#如何让符号保持开启状态(记忆游戏),c#,C#,我被困在一个地方,我想我的符号保持翻转,如果他们匹配。这是一个简单的4x4记忆游戏的项目。我应该制定一个新的方法吗?如果有人能告诉我是否可以通过按键来重置电路板,那就太好了 我是一个完全的初学者,所以如果有人能以一种非常简单的方式向我解释这一点,那将对我帮助很大。现在我被困在这个问题上了 using System; namespace Memory { class Program { static Coordinate[,] board = new Coord
using System;
namespace Memory
{
class Program
{
static Coordinate[,] board = new Coordinate[4, 4];
static int PosX = 0;
static int PosY = 0;
static void Main(string[] args)
{
//randomize
char[] symbols = new char[] { '#', '#', '1', '1', '2', '2', '3', '3', '4', '4', 'A', 'A', 'B', 'B', 'C', 'C' };
Random rnd = new Random();
for (int y = 0; y < board.GetLength(0); y++)
{
for (int x = 0; x < board.GetLength(1); x++)
{
Coordinate c = new Coordinate();
while (true)
{
int index = rnd.Next(symbols.Length);
if (symbols[index] != ' ')
{
c.Symbol = symbols[index];
symbols[index] = ' ';
break;
}
}
board[y, x] = c;
}
}
while (true)
{
DrawBoard();
var key = Console.ReadKey();
if(key.Key == ConsoleKey.LeftArrow)
{
PosX--;
}
if (key.Key == ConsoleKey.RightArrow)
{
PosX++;
}
if (key.Key == ConsoleKey.UpArrow)
{
PosY--;
}
if (key.Key == ConsoleKey.DownArrow)
{
PosY++;
}
if (key.Key == ConsoleKey.Spacebar)
{
board[PosY, PosX].IsOpen = true;
}
Console.Clear();
}
Console.ReadLine();
}
static void DrawBoard()
{
for (int y = 0; y < board.GetLength(0); y++)
{
for (int x = 0; x < board.GetLength(1); x++)
{
if(x == PosX && y == PosY)
{
Console.BackgroundColor = ConsoleColor.Blue;
}
if (!board[y, x].IsOpen)
{
Console.Write(". ");
}
else
{
Console.Write(board[y, x].Symbol + " ");
}
Console.BackgroundColor = ConsoleColor.Black;
}
Console.WriteLine();
}
}
}
class Coordinate
{
public char Symbol;
public bool IsOpen;
public bool isDone;
}
}
使用系统;
名称空间内存
{
班级计划
{
静态坐标[,]板=新坐标[4,4];
静态int PosX=0;
静态int-PosY=0;
静态void Main(字符串[]参数)
{
//随机化
字符[]符号=新字符[]{'#','#','1','2','2','3','3','4','4','A','A','B','B','C','C'};
随机rnd=新随机();
对于(int y=0;y
如果更改行:
board[PosY, PosX].IsOpen = true;
到
再次选择时,所选字段将向后翻转
或者用字母“R”翻转整个电路板:
if(key.key==ConsoleKey.R)
{
对于(int y=0;y
如果实现了
isDone
,则应扩展此功能,因为如果字段isDone
可能不应还原回它?感谢Luuk的帮助!我的意思是,当我打开两个字段时,如果它们不匹配,那么它们都会自动翻转。例如,如果我打开“#”和“a”,那么它应该关闭,因为它们不匹配。我还希望它们在匹配时保持开放。当你自己编写代码时,你应该足够聪明来做到这一点。提示:将isOpen设置为True时,您还可以增加一个计数器,当它达到值2时,比较两个打开的字段,如果它们不相等,则关闭它们,如果它们相等,则执行其他操作。此代码部分由我完成,大部分由教我c#的老师完成。自从你发了评论后,我就试着按照你说的去做,但我仍然不知道怎么做。可能需要一些帮助。你说的柜台是什么意思?我应该用主方法还是用一种全新的方法,如果是的话,它会是什么样子?非常感谢。很抱歉,你的老师跳过了编程课的一部分(基础)。不,他没有。我真的是不知所措,我学的不快。我有一个考试在2天内解释这一点,我真的不知道该怎么做。而且英语不是我的母语,所以我不懂英语中的一些东西。
board[PosY, PosX].IsOpen = !board[PosY, PosX].IsOpen;
if (key.Key == ConsoleKey.R)
{
for (int y = 0; y < board.GetLength(0); y++)
{
for (int x = 0; x < board.GetLength(1); x++)
{
if (board[y, x].IsOpen) board[y, x].IsOpen = false;
}
}
}