Курсы по программированию

Формула программиста
основатель — Волосатов Евгений Витольдович

Игра Сокобан / Сокобан - Редактор - Загрузка

  • Мы начинаем создавать редактор уровней
    для известной логической игры Sokoban.

    Редактор будет создан за четыре урока.
    На первом уроке мы создадим класс для загрузки
    уровня с текстового файла и протестируем его работу.
  • Дата отправки отчёта: 13 августа 2015 г.
  • Задание выполнено: за 2 час. 00 мин.
  • Чему научился: null
  • Что было сложным: Ничего.
  • Комментарии: Программа плохо не верно распознавала уровни. Предполагаю, что дело было в путанице с индексами. Пример:

    for (int y=0; y< height; y++)
                            {
                            for (int x=0; x< width; x++)
                                {
                               
                                cell[x,y] = CharToCell(lines[curr + y + 1][x]);
    Здесь не видно прямой ошибки, однако можно запутаться, всё задом наперёд получилось. По определению, в матрице всегда первый индекс - строка, второй - столбец, при этом привычно, что x -строка, y-столбец. Когда не привычно, с кодом нельзя работать спокойно, напрягаешься постоянно, можно ошибку не заметить. Я переписал так:

    cell=new Cell[width, height];
    for (int x=0; x< width; x++)
                            {
                            for (int y=0; y< height; y++)
                                {
                               
                                cell[x,y] = CharToCell(lines[curr + x + 1][y]);

    Заработало как надо. Может я какими-то своими правками что-то испортил, главное, что теперь всё нормально, я пишу затем, что может действительно Евгений Витольдович немного запутался и проблема не выдумана.
  • Архив проекта: Ссылка доступна после самостоятельного выполнения этого урока
  • Оценка видео-уроку:
Отчёт от 6632 за Игра Сокобан / Сокобан - Редактор - Загрузка


Отчёт от 6632 за Игра Сокобан / Сокобан - Редактор - Загрузка




Оцени работу

 
Сохранить страницу:

6632. Волнухин Владимир
Волнухин Владимир
ответить
# Игра Сокобан / Сокобан - Редактор - Загрузка / 2015-08-15 10:53

Моя ошибка была в том, что я указал в файле не верный размер второй карты (на уроке тоже не верно указали: 5x5, но это было не критично, а вот я указал 4x5, а надо было 5x4 - сначала ширина, потом высота, отсюда всё и поехало).


24. Оля
Оля
ответить
→  Волнухин Владимир  # Игра Сокобан / Сокобан - Редактор - Загрузка / 2015-08-15 10:48

Владимир, я очень рада что ты нашел свои ошибки и исправил, Молодец! :)


6632. Волнухин Владимир
Волнухин Владимир
ответить
→  Оля  # Игра Сокобан / Сокобан - Редактор - Загрузка / 2015-08-15 10:39

Да, я что-то напутал. Стал делать след. ДЗ и понял это.


24. Оля
Оля
ответить
→  Волнухин Владимир  # Игра Сокобан / Сокобан - Редактор - Загрузка / 2015-08-13 16:00

Владимир, могу сказать только из своего опыта, у меня все корректно работало! Хорошо что и ты разобрался и все у тебя заработало, я рада! :)


1. Евгений Витольдович
Евгений Витольдович
ответить
→  Волнухин Владимир  # Игра Сокобан / Сокобан - Редактор - Загрузка / 2015-08-13 08:51

Проблема существует, так как привычки конфликтуют.
удобнее писать cell [x, y], однако в этом случае получается, что х - строка, у - столбец.
А на самом деле в координатах должно быть наоборот.
Поэтому я предпочитаю записывать cell [y, x],
чтобы в х был столбец, а в у строка, так логичнее.


6632. Волнухин Владимир
Волнухин Владимир
ответить
# Игра Сокобан / Сокобан - Редактор - Загрузка / 2015-08-13 08:41


int.TryParse(parts[0], out curr_level_nr);
int.TryParse(parts[1], out width);
int.TryParse(parts[2], out height);

Здесь точно была ошибка Евгения, вы же оформляли так, чтобы ширина указывалась третей по счёту, а высота - второй.

int.TryParse(parts[1], out height);
int.TryParse(parts[2], out width);


  • Отчёт оценивали:
    24Оля+1  

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Заказывать пиццу через интернет-магазин. Использовать enum.
Трудности: Переписывать код вручную.
Все отлично.
Трудности: Опечатки
Всё здорово