Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 15

Сможет ли слон попасть с первой клетки на вторую одним ходом

13.06.2017, 08:31. Показов 6619. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, помогите!!! Нужно задачку к экзамену решить, а я вообще не понимаю с чего начать даже!!! Задача: шахматный слон ходит по диагонали. Ввести с клавы 2 разные клетки шахматной доски, и вывести на экран сможет ли слон попасть с первой клетки на вторую одним ходом. Ребята, надеюсь на вас!!!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.06.2017, 08:31
Ответы с готовыми решениями:

Определить, сможет ли шахматный слон попасть с одной клетки на другую одним ходом
В общем,задача звучит так: шахматный слон ходит по диагонали. Ввести с клавиатуры 2 разные клетки шахматной доски, и вывести на экран...

Может ли ферзь попасть с первой клетки на вторую одним ходом
Доброго времени суток! Условие задачи следующее:Шахматный ферзь ходит по диагонали, горизонтали или вертикали. Даны две различные клетки...

Определить может ли конь попасть с первой клетки на вторую одним ходом?
Добрый день. Задача: Шахматный конь ходит буквой “Г” — на две клетки по вертикали в любом направлении и на одну клетку по горизонтали,...

14
28 / 28 / 4
Регистрация: 07.06.2017
Сообщений: 166
13.06.2017, 09:45
Если вкратце. Надо решать систему уравнений: y=x+b и y=-x+b для конкретных координат.
0
193 / 191 / 31
Регистрация: 11.10.2016
Сообщений: 610
13.06.2017, 10:49
никаких систем уравнений решать не надо. Шахматную доску можно представить в виде двумерного массива Chess(x, y). Шахматный слон, как мы знаем, ходит по диагонали, то есть, с каждым ходом перемещается на одинаковое количество клеток по вертикали и горизонтали. Поэтому всё, что надо - это получить разницу между текущим положением слона (x1, y1) и новой позицией (x2, y2). Если разница для x и для y одинакова, следовательно, слон может переместится на эту клетку.

Visual Basic
1
2
3
Function CanMove(x1%, y1%, x2%, y2%) as Boolean
     CanMove = (Abs(y2 - y1) = Abs(x2 - x1))
End Function
1
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 15
13.06.2017, 10:56  [ТС]
Цитата Сообщение от _shark Посмотреть сообщение
никаких систем уравнений решать не надо. Шахматную доску можно представить в виде двумерного массива Chess(x, y). Шахматный слон, как мы знаем, ходит по диагонали, то есть, с каждым ходом перемещается на одинаковое количество клеток по вертикали и горизонтали. Поэтому всё, что надо - это получить разницу между текущим положением слона (x1, y1) и новой позицией (x2, y2). Если разница для x и для y одинакова, следовательно, слон может переместится на эту клетку.
Visual BasicВыделить код
1
2
3
Function CanMove(x1%, y1%, x2%, y2%) as Boolean
* * *CanMove = (Abs(y2 - y1) = Abs(x2 - x1))
End Function
это не через кнопку? А куда inputbox вставить? Хотелось бы конкретики, но и за это спасибо)
0
28 / 28 / 4
Регистрация: 07.06.2017
Сообщений: 166
13.06.2017, 11:23
Цитата Сообщение от Надежда_2017 Посмотреть сообщение
это не через кнопку? А куда inputbox вставить? Хотелось бы конкретики, но и за это спасибо)
Вот в кнопку и вставьте 4 инпутбокса.
Затем "в кнопке" вызов функции canmove сделайте с переменными.
Функция возвратит логическое значение (истину - ход слоном возможен, ложь - слон не может так пойти).
0
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 15
13.06.2017, 11:56  [ТС]
Цитата Сообщение от vice4 Посмотреть сообщение
Вот в кнопку и вставьте 4 инпутбокса.
Затем "в кнопке" вызов функции canmove сделайте с переменными.
Функция возвратит логическое значение (истину - ход слоном возможен, ложь - слон не может так пойти).
Что-то я лошара(( Я чего-то не доганяю и ... не работает кароче
Visual Basic
1
2
3
4
5
6
7
Private Sub Command1_Click()
Dim a As Integer, b As Integer
a = InputBox("Введите местоположение слона")
b = InputBox("Введите местоназначение слона")
Function CanMove(x1%, y1%, x2%, y2%) As Boolean
     CanMove = (Abs(y2 - y1) = Abs(x2 - x1))
End Function
0
28 / 28 / 4
Регистрация: 07.06.2017
Сообщений: 166
13.06.2017, 12:08
Лучший ответ Сообщение было отмечено Надежда_2017 как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Command1_Click()
    Dim a1 As Integer, b1 As Integer, a2 As Integer, b2 As Integer
    a1 = InputBox("Введите текущее положение слона (X)")
    b1 = InputBox("Введите текущее положение слона (Y)")
    a2 = InputBox(Введите местоназначение слона (X)")
    b2 = InputBox("Введите местоназначение слона (Y)")
    If CanMove(a1, b1, a2, b2) Then MsgBox "Ход возможен" Else MsgBox "Ход невозможен"
End Sub
 
Function CanMove(x1%, y1%, x2%, y2%) As Boolean
    CanMove = (Abs(y2 - y1) = Abs(x2 - x1))
End Function
1
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 15
13.06.2017, 12:23  [ТС]
Цитата Сообщение от vice4 Посмотреть сообщение
Private Sub Command1_Click()
* * Dim a1 As Integer, b1 As Integer, a2 As Integer, b2 As Integer
* * a1 = InputBox("Введите текущее положение слона (X)")
* * b1 = InputBox("Введите текущее положение слона (Y)")
* * a2 = InputBox(Введите местоназначение слона (X)")
* *b2 = InputBox("Введите местоназначение слона (Y)")
* *If CanMove(a1, b1, a2, b2) Then MsgBox "Ход возможен" Else MsgBox "Ход невозможен"
End Sub
Function CanMove(x1%, y1%, x2%, y2%) As Boolean
* *CanMove = (Abs(y2 - y1) = Abs(x2 - x1))
End Function
Спасибочки большое!!! А если двигаться не по диагонали, а по горизонтали и вертикали, какая формула должна быть, не подскажите?
0
28 / 28 / 4
Регистрация: 07.06.2017
Сообщений: 166
13.06.2017, 12:29
Это для ладьи что ли?

Visual Basic
1
2
3
Function CanMoveTura(x1%, y1%, x2%, y2%) As Boolean
CanMoveTura = (x1 =x2 OR y1=y2)
End Function
1
199 / 24 / 12
Регистрация: 07.02.2014
Сообщений: 221
13.06.2017, 12:33
Если вводить координаты слона так, как принято в шахматной нотации - т.е. типа f3, h8, c5 и т.д., то будет вот такая программа:
PureBasic
1
2
3
4
5
6
7
8
9
10
Sub Slon()
alf = "abcdefgh"
a = InputBox("Начальная клетка (например, с5)")
x1 = InStr(alf, Mid(a, 1, 1))
y1 = Mid(a, 2)
a = InputBox("Конечная клетка")
x2 = InStr(alf, Mid(a, 1, 1))
y2 = Mid(a, 2)
If Abs(x2 - x1) = Abs(y2 - y1) Then MsgBox ("Да, сможет") Else MsgBox ("Нет, не сможет")
End Sub
0
28 / 28 / 4
Регистрация: 07.06.2017
Сообщений: 166
13.06.2017, 12:38
Цитата Сообщение от AlexDeSex Посмотреть сообщение
x1 = InStr(alf, Mid(a, 1, 1))
А так не проще?

Visual Basic
1
2
x1 = Left(a,1)
y1=Right(a,1)
1
199 / 24 / 12
Регистрация: 07.02.2014
Сообщений: 221
13.06.2017, 12:39
vice4, Немного не так, у нас же первая координата в виде буквы идет

Хотя соглашусь, что вместо Mid использовать Left, Right лучше будет.
0
28 / 28 / 4
Регистрация: 07.06.2017
Сообщений: 166
13.06.2017, 12:47
Цитата Сообщение от AlexDeSex Посмотреть сообщение
у нас же первая координата в виде буквы идет
Согласен.

Visual Basic
1
2
x1 = InStr(alf, Left(a, 1))
y1 = Right(a, 1)
1
199 / 24 / 12
Регистрация: 07.02.2014
Сообщений: 221
13.06.2017, 12:58
vice4, да, так красивее, спасибо!
0
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 15
13.06.2017, 16:23  [ТС]
Цитата Сообщение от AlexDeSex Посмотреть сообщение
Если вводить координаты слона так, как принято в шахматной нотации - т.е. типа f3, h8, c5 и т.д., то будет вот такая программа:
Просто добавила это - Введите текущее положение слона, если A=1;B=2;C=3; D=4;E=5;F=6;G=7;H=8 (X)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.06.2017, 16:23
Помогаю со студенческими работами здесь

Определить, может ли ладья попасть с первой клетки на вторую одним ходом
Шахматная ладья ходит по горизонтали или вертикали. Даны две различные клетки шахматной доски, определите, может ли ладья попасть с первой...

Определите, может ли ферзь попасть с первой клетки на вторую одним ходом
Шахматный ферзь ходит по диагонали, горизонтали или вертикали. Даны две различные клетки шахматной доски, определите, может ли ферзь...

Определить, может ли ферзь попасть с первой клетки на вторую одним ходом
Решаю задание на c++. Шахматный ферзь ходит по диагонали, горизонтали или вертикали. Даны две различные клетки шахматной доски,...

Определить, может ли ферзь попасть с первой клетки на вторую одним ходом
Всем привет Начал изучать питон Засел на задачке про ферзя, условие такие: "Шахматный ферзь ходит по диагонали, горизонтали или...

Определить, может ли король попасть с первой заданной клетки на вторую одним ходом
Шахматный король ходит по горизонтали, вертикали и диагонали, но только на 1 клетку. Даны две различные клетки шахматной доски, определите,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru