我是C#的新手,但是对OOP来说更新。我继续从我的数独游戏开始,我创建了一个继承自Textbox的课程。
我将这个类命名为'TextGrid'并从这些对象中创建了我的Sudoku Grid。这是班级:
public class TextGrid : System.Windows.Forms.TextBox
{
// Default Constructor
public TextGrid()
{ Clue = false; }
// Overloader Constructor
public TextGrid(bool NewClue)
{ Clue = NewClue; }
// Accessor Functions
public int FindBox(Double Rowcol)
{
try
{
return Convert.ToInt32(Math.Ceiling((Rowcol + 1) / 3));
}
catch
{
return 0;
}
}
public bool IsCorrect()
{ return Correct; }
public bool IsPossible()
{ return Possible; }
// mutator Functions
public bool IsClue
{
get { return Clue; }
set { Clue = value; }
}
protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e)
{
base.OnKeyPress(e);
if (((char.IsDigit(e.KeyChar)) || (e.KeyChar == ' ')) && e.KeyChar != '0')
{
this.Text = Convert.ToString(e.KeyChar);
}
else if (e.KeyChar == '0' || e.KeyChar == '\b')
{
e.Handled = true;
this.Text = "";
}
else
{
e.Handled = true;
}
}
private bool CheckCorrect()
{
return false;
}
// Member Variables
private bool Clue;
private bool Correct;
private bool Possible;
}
GridText对象作为2D数组的一部分添加,然后将其放到表单上。
在Sudoku游戏的上下文中,我希望每个对象都存储该特定文本框的“可能”值。为此,我需要将该特定“文本框”值与同一行/列/ 3x3框中的所有其他文本框进行比较。
据我所知,我能做到的唯一方法就是在表格中设置那些可能的值(而不是在课堂上。我认为在课堂上不可能这样做因为它不知道哪些对象已被制作?)。如果有人知道做类似事情的方法或只是一种有效的方法(而不是每次点击其中一个时检查/更改每个文本框的属性),我会很高兴听到。
如果您需要任何额外信息,我会将其添加进去。抱歉,如果我说的话没有多大意义,但我只是想学习我能做什么,不能在课堂上做什么。