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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2011, 19:18   #1
<onegin>
 
Регистрация: 09.12.2011
Сообщений: 3
По умолчанию Массивы в C++. Решении задачи.

Нужна помощь в решении задачи, а собственно есть что-то типа основы программы, но нужно сделать ее модернизацию. Во как залепил
Код:
#include <iostream> // cin, cout
#include <clocale>  // поддержка русского языка
#include <conio.h>  // _getch()
#include <stdlib.h> // поддержка функции очистки экрана system("cls")

using namespace std;

int main()
{

setlocale(LC_CTYPE,"Russian"); // установка русского языка


char act;    // переменная для хранения ввода пользователя
int ch;      // ввод пользователя приведённый к типу int
int x = 0;   // две переменные для хранения координат пользователя
int y = 0;
char map[15][20]; // двумерный массив для хранения игровой карты


// блок инициализации массива
// внешний цикл отвечает за строки
for (int i = 0; i< 15; i++)
{
	// внутренний цикл отвечает за столбцы
	for (int j = 0; j< 20; j++)
	{
		map[i][j] = ' ';
	}
}

map[0][0] = 'Т'; // помещаем игровой персонаж в начало координат
while (1)
{
	system("cls"); // вызов функции очистки экрана

	for (int i = 0; i < 15; i++)
	{
		for (int j = 0; j < 20; j++)
		{
			cout << map[i][j];// в циклах поэлементно выводится массив
		}
		cout << "\n"; // переход на новую строку после каждого "ряда"
	}

	act = _getch();
	ch = static_cast<int>(act);

if (ch == -32)
{}
else if (ch == 27)
{
  break;
}
else if (ch == 75 && y - 1 >= 0)
{
 map[x][y] = ' ';
  y--;
  map[x][y] = 'T';
}
else if (ch == 77 && y + 1 < 20)
{
  map[x][y] = ' ';
  y++;
  map[x][y] = 'Т';
}
else if (ch == 80 && x + 1 < 15)
{
	map[x][y] = ' ';
	x++;
	map[x][y] = 'T';
}
else if (ch == 72 && x - 1 >= 0)
{
	map[x][y] = ' ';
	x--;
	map[x][y] = 'T';
}
else
{
  cout << "Вы нажали неверную клавишу!\n";
}


} // конец цикла while

	_getch();
	return 0;
}
Само задание: 3. Для практики создайте программу рисующую на экране два поля для морского боя. Первое - игрока, второе - противника. Второе поле должно располагаться справа от первого.
Внутренние клетки заполняйте пробелом. Для рисования границы используйте минус и прямую разделительную черту: -, |, а для углов - решётку #. Слева от каждого поля - стобик цифр; сверху - буквы.
Для инициализации всего поля вам может понадобиться несколько циклов. Вот как может выглядеть код для заполнения столбика цифр второго поля:
Код:
int string; // переменная представляющая строки
int column; // переменная представляющая столбцы

char map[13][30];

column = 15;
for (string = 2; string < 12; string++)
{
  map[string][column] = string - 1;
}
<onegin> вне форума Ответить с цитированием
Старый 11.12.2011, 00:17   #2
<onegin>
 
Регистрация: 09.12.2011
Сообщений: 3
По умолчанию

Может кто хоть направит на путь истинный...
<onegin> вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсказка в решении задачи С++ Pycbka Помощь студентам 4 16.11.2011 21:49
Проблема в решении задачи [С++] asp1k Помощь студентам 0 17.11.2010 16:16
помогите в решении задачи. gaddam Паскаль, Turbo Pascal, PascalABC.NET 2 24.11.2008 19:06
Помогите в решении задачи! Toxass Общие вопросы Delphi 16 19.11.2008 22:06