Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2012, 23:53   #1
михончик
 
Регистрация: 10.04.2012
Сообщений: 6
По умолчанию 8 ферзей

Добрый день всем! Ребят помогите кто может. Вообщем имеется программа для расстановки 8 ферзей на шахматной доске рабочая, она на С# и выводит матрицу 8х8 (это доска шахматная) но нужно сделать задержку: сначала ставится первый ферзь, потом второй с промежутками времени и т.д. помогите кто может плиз, заранее спасибо!

вот код:
Код:
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 _8_ферзей
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public int[,] board = new int[8, 8];
        int count = 0;
        bool chekfirst = true;
        bool tryqueen(int i) //попытка поставить королеву на i столбец
        {
            bool result = false;
             if (chekfirst == true)
             {
                 setqueen(i - 1, Convert.ToInt32(textBox1.Text) - 1);
                 chekfirst = false;

             }
            for (int j = 0; j < 8; j++) // проверка 8-ми строк
            {
                if (board[i, j] == 0) // ячейку никто не бьет и можно ставить королеву
                {
                    setqueen(i, j);
                    if (i == 7) // значит всех королев поставили
                    {
                        result = true;
                    }
                    else
                    {
                        if (!(result = tryqueen(i + 1)))
                            deletequeen(i, j); // убирает ферзя с доски

                    }
                }
                if (result)
                    break;
                count++;
            }
            return result;
        }
        public void setqueen(int i, int j)//заполняет ячейки, которые королева бьет
        {
            for (int k = 0; k < 8; k++)
            {
                ++board[k, j];
                ++board[i, k];
                int diag;
                diag = j - i + k;
                if (diag >= 0 && diag < 8)
                {
                    ++board[k, diag];
                }
                diag = j + i - k;
                if (diag >= 0 && diag < 8)
                {
                    ++board[k, diag];
                }
            }
            board[i, j] = 1000; // стоит ферзь
        }
        public void deletequeen(int i, int j)
        {
            for (int k = 0; k < 8; k++)
            {
                --board[k, j];
                --board[i, k];
                int diag;
                diag = j - i + k;
                if (diag >= 0 && diag < 8)
                {
                    --board[k, diag];
                }
                diag = j + i - k;
                if (diag >= 0 && diag < 8)
                {
                    --board[k, diag];
                }
            }
            board[i, j] = 0;
        }
        public void print()
        {
            richTextBox1.Clear();
            for (int q = 0; q < 8; q++)
            {
                for (int w = 0; w < 8; w++)
                {
                    if (board[q, w] == 1000)
                    {
                        richTextBox1.Text += "   [F]   ";

                    }
                    else
                        richTextBox1.Text += "   [ ]   ";
                }
                richTextBox1.Text += "\n\n";
            }
        }
        private void button1_Click_1(object sender, EventArgs e)
        {
            for (int i = 0; i < 8; i++) 
                for (int j = 0; j < 8; j++) 
                    board[i, j] = 0;
            count = 0;
            chekfirst = true;
            tryqueen(1);
            print();
        }

        private void Form1_Load(object sender, EventArgs e)
        {


        }

    }
}


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 25.09.2012 в 09:07.
михончик вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
N ферзей sidestep Общие вопросы C/C++ 10 22.02.2012 14:50
задача ферзей Математик_Лена Общие вопросы C/C++ 1 05.02.2012 18:04
8 ферзей Роза!!! Паскаль, Turbo Pascal, PascalABC.NET 3 23.02.2011 10:54
8 ферзей battlefrogg Помощь студентам 5 06.05.2010 15:28
8 ферзей slim5 Общие вопросы Delphi 0 15.06.2008 11:46