我給你一半的解決方案,但在C#中:d
它不應該是很難爲你將其轉換爲VB,它是完全一樣的框架。
希望你能理解機制,而不是簡單地轉儲我的代碼,事實上它確實很簡單。
(拖放一個PictureBox到窗體第一)
網格:
這裏我畫正方形但應該是很容易畫線來代替。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
pictureBox1.Paint += pictureBox1_Paint;
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
int columns = 3;
int rows = 3;
Graphics graphics = e.Graphics;
graphics.Clear(Color.White);
RectangleF bounds = graphics.VisibleClipBounds;
var cellWidth = (int)((bounds.Width - 1)/columns);
var cellHeight = (int)((bounds.Height - 1)/rows);
for (int x = 0; x < columns; x++)
{
for (int y = 0; y < rows; y++)
{
graphics.DrawRectangle(Pens.Black, new Rectangle(x * cellWidth, y * cellHeight, cellWidth, cellHeight));
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Invalidate();
}
}
這裏是一個非常簡單的電路板:
internal class TicTacToe
{
public TicTacToe()
{
Grid = new Piece[3, 3];
}
public Piece[,] Grid { get; private set; }
public void SetPiece(int x, int y, Piece value)
{
if (x < 0 || x > 2) throw new ArgumentOutOfRangeException("x");
if (y < 0 || y > 2) throw new ArgumentOutOfRangeException("y");
Piece piece = Grid[y, x];
if (piece == Piece.None)
{
Grid[y, x] = value;
}
}
public Piece GetPiece(int x, int y)
{
if (x < 0 || x > 2) throw new ArgumentOutOfRangeException("x");
if (y < 0 || y > 2) throw new ArgumentOutOfRangeException("y");
return Grid[y, x];
}
}
internal enum Piece
{
None = 0,
Cross = 1,
Circle = 2
}
你可以返回一個boolean
或拋出一個異常,我只是默默的在我的示例更新遊戲。
還剩什麼?
- 查找是否有人贏了,這是需要技巧來實現:d 真的
- 繪製在控制檯模式
我給你的控制檯一些僞代碼:
Do
Get user input
Update the grid
Check if someone wins
Clear console
Draw current game or game over screen
Loop until ESC (quit) is pressed
對於在控制檯中繪製網格基本上它是鱈魚除了尺寸要小得多而像素是字符之外。
http://msdn.microsoft.com/en-us/library/System.Console(v=vs.110).aspx
正如我所說的,將它應該是微不足道的,因爲MSDN文檔也提供VB和C#示例中的每一個文檔的頁面。
祝你好運!
感謝您的幫助,應該很有趣,因爲我從來沒有使用C#之前哈哈,但我會嘗試。 –
我寧願幫助你一點,但給你的整個解決方案將不會對你有幫助國際海事組織。我會喜歡使用VB,但它已經很多年了,我已經停止使用它:D – Aybe
哦,是的,我完全同意,感謝您的幫助! –