Поиск:

Ответ в темуСоздание новой темы Создание опроса
> игра сокобан 
:(
    Опции темы
ratgunter
Дата 7.12.2009, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



Типа вот этого?
Код

for (int i=0; i<10; i++)
{
    for (int j=0; j<10; j++)
    {
          FILE* f=fopen("level.txt","wt");
          fprintf(f,"%s\n",j);
          fprintf(f,"\n");
          fclose(f);

Я говорю, не умею работать с файлами((((
PM MAIL   Вверх
xvr
Дата 7.12.2009, 23:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(ratgunter @ 7.12.2009,  21:42)
Типа вот этого?
Код

for (int i=0; i<10; i++)
{
    for (int j=0; j<10; j++)
    {
          FILE* f=fopen("level.txt","wt");
          fprintf(f,"%s\n",j);
          fprintf(f,"\n");
          fclose(f);

Я говорю, не умею работать с файлами((((

Не совсем, типа вот этого
Код

FILE* f=fopen("level.txt","wt");
for (int i=0; i<10; i++)
{
    for (int j=0; j<10; j++)
    {
     fprintf(f,"%d ",level[i][j]);
    }
 fprintf(f,"\n");
}
fclose(f);
(Это если в массиве level дежат числа, если же там лежат символы, то центральный fprintf должен быть такимsmile
Код

     fprintf(f,"%c ",level[i][j]);


PM MAIL   Вверх
ratgunter
Дата 7.12.2009, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



спасибо smile  буду дальше эксперементировать smile 
PM MAIL   Вверх
ratgunter
Дата 8.12.2009, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



Не судите строго, но я записал массив в файл smile 


 ! 
dumb
ratgunter, эта тема и без этих оффтопичных постов нарушает правила форума. "живет" она только потому, что вопросы твои не имеет смысла(и интереса) оформлять в виде отдельных тем - слишком элементарны. а если б ты удосужился прочитать(вдумчиво) хоть какую-нибудь литературу по С++(Builder), то и у тебя бы их не возникло.

PM MAIL   Вверх
xvr
Дата 8.12.2009, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(ratgunter @ 8.12.2009,  21:00)
Не судите строго, но я записал массив в файл smile

Код

 XXXXXXX                                                                                             X       X       X
  X   X                                                                                              X       X       X
  X   X  XX XX    XXXXX  X XXXX  XXXXXX  XX XX    XXXXX  XXXXXX   XXXXXX  XXXXXX   XXXX  XXX  XXX    X       X       X
  X   X   XX  X       X   XXXX    X  X    XX  X       X   XXXX     X  X   XXXXX   XXXXXX  XX  XX     X       X       X
  X   X   X   X  XXXXXX       X   X  X    X   X  XXXXXX   X   XX   X  X   X   X   X       X XX X
 XXX XXX  XXXX   XXXX XX XXXXX  XXXXXXX   XXXX   XXXX XX XXXXXXX XXX XXX XX  XXX   XXXXX XXXXXXXX    X       X       X
          X                     X     X   X
         XXX                             XXX


PM MAIL   Вверх
ratgunter
Дата 10.12.2009, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



Вот код:
Код

for (i=0;i<10;i++)
          {
             for (j=0;j<10;j++)
             {
                if (level[i][j]==4)
                {
                   if (Key==68)
                   {
                      if (level[i][j+1]==0)
                      {
                         level[i][j+1]=4;
                         level[i][j]=0;
                         Image1324->Left+=40;
                      }
                   }
                   if (Key==65)
                   {
                      if (level[i][j-1]==0)
                      {
                         level[i][j-1]=4;
                         level[i][j]=0;
                         Image1324->Left-=40;
                      }
                   }
                   if (Key==87)
                   {
                      if (level[i-1][j]==0)
                      {
                         level[i-1][j]=4;
                         level[i][j]=0;
                         Image1324->Top-=40;
                      }
                   }
                   if (Key==83)
                   {
                      if (level[i+1][j]==0)
                      {
                         level[i+1][j]=4;
                         level[i][j]=0;
                         Image1324->Top+=40;
                      }
                   }
                }
             }
          }

Когда я жму клавишу D (Key==68)  у меня Image сразу передвигается к правому краю, хотя по идее еге координаты должны увеличиться лишь на 40.
Такая же ситуация с S(Key==83). 
Другие клавиши A и W работают нормально. Ничего не понимаю smile 
PM MAIL   Вверх
xvr
Дата 10.12.2009, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата

Когда я жму клавишу D (Key==68)  у меня Image сразу передвигается к правому краю, хотя по идее еге координаты должны увеличиться лишь на 40.
По идее они должны вылезти вообще за границу массива. Абсолютно непонятно, что ты пытался тут сделать, но память оно порушит точно  smile 
Твой  if (level[i][j+1]==0) внутри  if (Key==68) будет срабатывать на каждой итерации цикла по j

PM MAIL   Вверх
ratgunter
Дата 10.12.2009, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



У меня по краям карты стоят стены и за них он не выходит, так что память в порядке  smile 
Просто влево идет нормально : на одно нажатие клавиши Image смещается на 40 влево, а когда иду вправо, то Image сразу уходит до стены вправо(((( 
А вообще уровень я сохранил в файл успешно, загрузил из него тоже успешно. Вот теперь пытаюсь сделать, чтобы уровень был рабочим. Но что-то не могу понять как это сделать без огромных циклов smile 

Это сообщение отредактировал(а) ratgunter - 10.12.2009, 18:40
PM MAIL   Вверх
xvr
Дата 10.12.2009, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(ratgunter @ 10.12.2009,  18:37)
У меня по краям карты стоят стены и за них он не выходит, так что память в порядке  smile 

Он не по стенам, а по памяти фигачит  smile 
Цитата

Просто влево идет нормально : на одно нажатие клавиши Image смещается на 40 влево, а когда иду вправо, то Image сразу уходит до стены вправо(((( 
Так уж программа написанна  smile 
Цитата

Вот теперь пытаюсь сделать, чтобы уровень был рабочим. Но что-то не могу понять как это сделать без огромных циклов smile
Там вообще циклы не нужны. Нужно хранить (в отдельных переменных) координаты крота (0-10 по х и у). При нажатии клавишь вычислять новые координаты и смотреть в массиве с уровнем, можно ли туда перейти. Если можно - перемещать Image и обновлять координаты

PM MAIL   Вверх
ratgunter
Дата 11.12.2009, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



Нужно хранить (в отдельных переменных) координаты крота (0-10 по х и у). При нажатии клавишь вычислять новые координаты и смотреть в массиве с уровнем, можно ли туда перейти. Если можно - перемещать Image и обновлять координаты
Я так и делаю smile , но что-то не так работает smile 
PM MAIL   Вверх
xvr
Дата 11.12.2009, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Тот кусок кода, который ты приводил, делает явно не так  smile Там никаких циклов (а тем более двойных) быть не должно

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0562 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.