Игра пятнашки, как проверить где пустое поле для перемещения соседних кнопок - C#
Формулировка задачи:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Fifteen
{
public partial class Form1 : Form
{
int[,] field=new int[4,4];
int[] mass=new int[16];
Random myRand = new Random();
Button[] ButtonArray = new Button[16];
List<int> array =new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0 };
public Form1()
{
InitializeComponent();
int x = 0;
int y = 0;
for (int i = 0; i < ButtonArray.Count(); i++)
{
ButtonArray[i] = new Button();
int randomNumber = myRand.Next(array.Count);
ButtonArray[i].Text = array[randomNumber].ToString();
array.RemoveAt(randomNumber);
switch (i)
{
case 4: y = y + 40;
x = 0;
break;
case 8: y = y + 40;
x = 0;
break;
case 12: y = y + 40;
x = 0;
break;
}
ButtonArray[i].SetBounds(x, y, 50, 40);
x = x + 50;
if (ButtonArray[i].Text == "0")
ButtonArray[i].Visible = false;
this.Controls.Add(ButtonArray[i]);
this.ButtonArray[i].Click +=new EventHandler(Button_Click);
}
}
private void Button_Click(object sender, EventArgs e)
{
Button bt = (sender) as Button;
Check();
for (int i = 0; i < ButtonArray.Count(); i++)
{
if (ButtonArray[i].Text == "0")
{
Point pt = bt.Location;
bt.Location = ButtonArray[i].Location;
ButtonArray[i].Location = pt;
}
}
}
}
}
неужели ни кто не знает(
Решение задачи: «Игра пятнашки, как проверить где пустое поле для перемещения соседних кнопок»
textual
Листинг программы
private void Button_Click(object sender, EventArgs e)
{
Button bt = (sender) as Button;
Button bt0 = new Button();
int a=0,b=0;
for (int i = 0; i < ButtonArray.Count(); i++)
{
if (ButtonArray[i].Text == "0")
{
bt0 = ButtonArray[i];
}
}
if (bt0.Location.X == bt.Location.X + 50 && bt0.Location.Y == bt.Location.Y ||
bt0.Location.X == bt.Location.X - 50 && bt0.Location.Y == bt.Location.Y ||
bt0.Location.Y == bt.Location.Y + 40 && bt0.Location.X == bt.Location.X ||
bt0.Location.Y == bt.Location.Y - 40 && bt0.Location.X == bt.Location.X)
{
for (int i = 0; i < ButtonArray.Count(); i++)
{
if (ButtonArray[i].Text == "0")
{
Point pt = bt.Location;
bt.Location = ButtonArray[i].Location;
ButtonArray[i].Location = pt;
}
if (mass[i] == 0)
a = i;
if (mass[i] == Convert.ToInt16(bt.Text))
b = i;
}
mass[a] = mass[b];
mass[b] = 0;
a = 0;
for (int j = 0; j < mass.Count(); j++)
{
if (j+1 == mass[j])
a++;
if (a == 15)
MessageBox.Show("YOU WIN!");
}
}
}