Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Консольный морской бой. Расстановка кораблей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Даны массивы целых чисел A[25] и B[25] http://www.cyberforum.ru/cpp-beginners/thread680722.html
Даны массивы целых чисел A и B.Сформировать третий массив, в который включить все положительные элементы обоих массивов, меньших 10. Нужно решить в C++.
C++ Конечный автомат Здравствуйте! Возникли проблемы с задачей: дан набор правил q0 -> aq1, q1 -> bq2, q1 -> q2, q1 -> cq2, q2 -> aq3 и др. Нужно написать программу, которая считывает количество символов в слове и... http://www.cyberforum.ru/cpp-beginners/thread680716.html
C++ не отображается робота программы
Начал изучать С++, и сталкиваюсь каждый раз с новыми проблемами в изучении.. Вот уже книгу нашел подходящую(Брюс Эккель - Филосовия С++ 1 том) но опять же столкнулся с проблемой вывода роботы...
C++ warning: ISO C++ says that these are ambiguous
Вечер добрый. Помогите раскрыть причину неоднозначности: Действие: Matrix1 &Matrix1::mult(const Matrix1 &other) { Matrix1 m; m.setRow1(mult(other.column1())); ...
C++ Создание динамического массива http://www.cyberforum.ru/cpp-beginners/thread680703.html
Как объявить вот так вот : int blocks = { {0,0,0,0,0,0}, {0,0,0,0,0,0}, {0,0,0,0,0,0}}; Мне пишет ошибку : массив не может содержать элементы этого типа
C++ Палиндром нужно чтобы в текстовом файле ab.txt находило палиндромы и выводило их на экран.#include<iostream> #include<stdio.h> #define N 2; using namespace std; void main() { FILE *File; ... подробнее

Показать сообщение отдельно
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
02.11.2012, 12:44
Цитата Сообщение от we2seek Посмотреть сообщение
Программа зависает, когда пытается разместить корабль в ограниченном пространстве, как, например на рисунке:
Нужно понять почему зависает, видимо получается бесконечный цикл
Цитата Сообщение от we2seek Посмотреть сообщение
Если клетка {x;y} занята символом по умолчанию, т.е. в ней нет корабля и она не соприкасается с другим кораблем, тогда проверяем рядомстоящие клетки по 4 направлениям: вверх, вниз, влево и вправо.
Цитата Сообщение от MrGrig Посмотреть сообщение
перед расстановкой корабля проверить нет ли рядом занятого поля, а после расстановки обставить кораблик занятым полем
Если после установки корабля сразу обвести его точками, то нет необходимости при построении проверять это условие
Цитата Сообщение от we2seek Посмотреть сообщение
не соприкасается с другим кораблем
Добавлено через 3 минуты
Цитата Сообщение от we2seek Посмотреть сообщение
C++
1
bool IsEmpty (char **field, int pointX, int pointY)
Цитата Сообщение от we2seek Посмотреть сообщение
C++
1
bool IsEmpty (char **field, int x, int y, int DECKS)
за что отвечает переменная DECKS?
Цитата Сообщение от we2seek Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
switch (DECKS)
* * * * {
* * * * * * case 1:
* * * * * * * * return true;
* * * * * * * * break;
* * * * * * case 2:
* * * * * * * * if ( counter >= 1 )
* * * * * * * * * * return true;
* * * * * * * * else
* * * * * * * * * * return false;
* * * * * * case 3:
* * * * * * * * if ( counter >= 2 )
* * * * * * * * * * return true;
* * * * * * * * else
* * * * * * * * * * return false;
* * * * }
возможно она получает цифру >3
от этого и зависоны

Добавлено через 2 минуты
Цитата Сообщение от we2seek Посмотреть сообщение
по 4 направлениям: вверх, вниз, влево и вправо
я бы реализовал немного по другому, смысл вашей функции впихнуть корабль в координату. Хотя бы хоть как нибудь. Я тоже так делал и это вышло у меня довольно объемно. Проще при создании корабля создавать рандомно еще его направление, тогда проверка будет довольно простая.

Добавлено через 11 минут
кстати, я бы вам советовал использовать поле не 10х10, а 12х12 и контур сразу забить точками (выводить поле с 1 по 11). тогда например при описаном выше варианте создания кораблей не выйдет лажи типо вот такого
C++
1
2
3
4
0 1 2 3 4 5 6
1 - - - - - -
2 о - - - - -
3 - - - - - -
например вы хотите кораблик поставить в точку о, с направлением в лево.
вы спокойно проверяете поле [3][0], так как контур у нас обведен точками, то функция дает отказ и вы генерируете следующие возможные координаты и направление корабля
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru