Войти
ПроектыФорумОцените

мариоподобная 2D-игра, пишу с 1997 года в общей сложности :) (4 стр)

Страницы: 13 4 5 611 Следующая »
#45
8:07, 5 сен. 2011

Laika
а я, вот так компилирую
java -cp . HelloWorld


#46
19:19, 20 сен. 2011

Сделать хотел такую вещь как встроенный текстовый редактор (для редактирования кода C++),  потом шла бы перекомпиляция и запуск. Такое было где-то уже ? вобщем как бы это получше сделать, в проект добавить сам компилятор, линковщик. Все в одном было бы интересно.

#47
19:47, 20 сен. 2011

есть Scintilla для создания своих редакторов

#48
11:20, 21 сен. 2011

clc, спасибо посмотрел что это.

пока хочу ограничиться сделать простой встроенный редактор текста, не полнофункциональный конечно, но например чтобы
можно было поменять некоторые константы в игре, которых очень много, например в логике движения ну море вобщем
констант. можно конечно их и в файл отдельный вынести пока не знаю.

Изображение
Изображение

потом через nmake шла бы перекомпиляция и перезапуск

#49
17:29, 21 сен. 2011

Ewgeny_Lapshin
> мне было всего 17 лет, мозги быстро работали, а сейчас
> уже 32 года без месяца, голова уже так не работает

ну, в 17 лет мозг собирает новые знания в кучку,
(в таблицу) - поэтому быстрее

а уж, в 32 года знания собираются аналитическим путём,
(в иерархическую структуру) - это требует больше времени

как-то так наверное ...

#50
17:48, 21 сен. 2011

daemolisher, дело еще в том, что в те годы было чувство "первооткрывателя", интернета не было в те годы. а вот сейчас я даже не знаю что бы могло вдохновить на создание чего-либо, просто уже как бы ощущение что "все уже создано" все что можно. деньги меня не вдохновляют. если нет интереса я не стану ничего вообще делать, хотя за зарплату хоть просто так. и еще в по другой причине, в подробности я бы не хотел вдаваться, но было произведено химическое воздействие на ЦНС, из-за чего и произошло "отключение" грубо говоря.

#51
22:16, 22 сен. 2011

Друг мой. Если бы вы делали игру на Сыра Кастрат, то вы бы не писали игру, а рисовали. И не с 1997 года, а с сегодняшнего утра максимум. Зачем стрелять из пушки по воробьям.

#52
2:44, 23 сен. 2011

Ewgeny_Lapshin
> просто уже как бы ощущение что "все уже создано" все что можно
бывает ...
это свойственно художникам (кто как справляется - не знаю)

#53
12:02, 25 сен. 2011

daemolisher истинное удовлетворение можно наверное получать если относится к программе как
к произведению искусства наверное ? ну например если очень много коментариев, просто читать коментарии нет точнее целиком программу вместе с коммент. как книгу :)

//проверка столкновения марио с линией огня
for(int j=0;j<FireLine.Counter; j++)
{
ANIM &fr=FireLine[j];
//если огонь загасил марио
if (~rk.Status & MARIO_PROTECTED && CheckUnionRects(fr.Rect,rk.Rect) != FALSE)
{
                                                //гасим марио
  rk.Speedx=0;
  rk.Speedy=-5;
  rk.Acceleratx=0;
  rk.Acceleraty=0.2;
  rk.FrameSpeed=0;
  rk.Status|=MARIO_DEATH;
  Sound.play(SND_LAUGHT);
}
}

//проверка чужих
for(j=0;j<Alien.Counter;j++)
{
PERSON &al=(PERSON&) Alien[j];
//если живой чужой столкунлся с марио
if (!al.Status && CheckUnionRects(al.Rect,rk.Rect) != FALSE)
{
  //если чужой упал на марио сверху
  if ( rk.y-al.y>=0)
  {
    //если марио защищенный
    if (rk.Status & MARIO_PROTECTED)
    {
      //он загасил чудовище
      Sound.play(SND_POP1);

      //гасим чудовище
      al.Status=ALIEN::DEATH;
      al.TimeLive=250;
      al.Speedx=rk.Speedx;
      al.Acceleraty=0.2;
      al.Speedy=-4;
      al.FrameSpeed=0;
      al.Movement |= PERSON::FLIP_VERT;
      //всегда анимировать
      al.AlwaysAnimate=TRUE;
    }

    //иначе марио не защищенный
    //если не дракон(он не гасит марио)
    else if (al.FrameFirst != SPRITE_LIZARDSTART)
    {
      //гасим марио
      rk.Speedx=0;
      rk.Speedy=-5;
      rk.Acceleratx=0;
      rk.Acceleraty=0.2;
      rk.FrameSpeed=0;
      rk.Status|=MARIO_DEATH;
      Sound.play(SND_POP1);
      //Sound.play(SND_LAUGHT);
      //выдерживаем паузу
      //scr.pause(DEATHPAUSE);
    }
    break;
  }

  //иначе наоборот - марио загасил чужого
  else
  {
    switch(al.FrameFirst)
    {
      case SPRITE_MASHASTART:
      case SPRITE_TURTLESTART:
      case SPRITE_PIGSTART:
      //case SPRITE_LIZARDSTART:

      //создаем очки
      ANIM ob;
      ob.x=al.x;
      ob.y=al.y;
      ob.Speedy=-0.7;
      ob.TimeLive=30;
      CreateScore(100,SCORES,ob);
      Supermario.Score+=100;
    }


    rk.Speedy=-2.5;

    //останавливаем и гасим чужого
    switch(al.FrameFirst)
    {
      case SPRITE_MASHASTART:
      case SPRITE_TURTLESTART:
      //свиньи и лизарды гасятся только оружием
      //case SPRITE_LIZARDSTART:
      //case SPRITE_PIGSTART:

      Sound.play(SND_POP1);

      al.Status=ALIEN::DEATH;
      al.TimeLive=20;
      al.Speedx=0;
      al.Speedy=0;
      al.Acceleraty=0;
      al.Acceleratx=0;
      al.FrameSpeed=0;
    }

    switch (al.FrameFirst)
    {

      //если марио напрыгнул на свинку
      case SPRITE_PIGSTART:
      {
        //о-очень высоко подпрыгивает
        rk.Speedy=-9;
        break;
      }
      //если марио напрыгнул на дракона
      case SPRITE_LIZARDSTART:
      {
        //о-очень высоко подпрыгивает
        rk.Speedx=4+0.1*random(50);
        if (random(2)) rk.Speedx*=-1;
        break;
      }

      //если марио напрыгнул на гриб
      case SPRITE_MASHASTART:
        al.SpriteIndex=SPRITE_MASHASMALL;
        break;

      //если марио напрыгнул на черепеаху
      case SPRITE_TURTLESTART:
        al.SpriteIndex=SPRITE_TURTLEHOUSE;
        al.FrameFirst=SPRITE_TURTLEHOUSE;
                al.FrameLast=SPRITE_TURTLEHOUSE;
                al.FrameCurrent=SPRITE_TURTLEHOUSE;
                al.TimeLive=0;
                al.Status=0;
                break;
    
      //если марио напрыгнул на панцирь
      case SPRITE_TURTLEHOUSE:
        //звучит звук
        Sound.play(SND_POP);

        //время жизни панциря увеличивается
        al.TimeLive+=500;
        al.Status=0;

        //если панцирь стоит
        if (al.Speedx==0)
          //запускаем его
          al.Speedx=4*sign(rk.Speedx+0.01);
        //иначе панцирь двигается
        else
          //останавливаем его
          al.Speedx=0;
    }

  }
}
#54
20:02, 25 сен. 2011

Ewgeny_Lapshin
> ну например если очень много коментариев, просто читать коментарии нет точнее
> целиком программу вместе с коммент. как книгу :)

Вообще, согласно последним тенденциям в мире программирования, рекомендуется создавать много функций с говорящими именами, а сами функции делать маленькими 3-5-10 строчек кода. :)  Цель: каждая функция должна решать 1 и только одну задачу. Следствия: увеличение повторного использования кода, упрощение рефакторинга.

С учетом сказанного, запись комментариев становится практически излишней. Да и читать проще.
А ещё можно мощь ООП добавить :)

forall (fl in fireLines) {
  if (Intersect (mario, fl)) {
     Kill(mario);
  }
}

forall (al in aliens) {
  if (al.IsLive() && Intersect (mario, al)) {
    if (Above(al, mario)) {
       if (mario.IsProtected()) {
          Kill (al);
       }
       ...
     }
  }
}
#55
22:04, 25 сен. 2011

Вот это долгострой! Уважуха:) Пс. яб пошпилял наверно :)

Прошло более 7 месяцев
#56
8:24, 29 апр. 2012

Хотел спросить, оказала ли кому-то эта игра помощь в плане построение кода, ООП-подхода ?

#57
13:27, 29 апр. 2012

Ewgeny_Lapshin
> Хотел спросить, оказала ли кому-то эта игра помощь в плане построение кода,
> ООП-подхода ?
Если б была выложена раньше на года три, может быть мне и оказала.

#58
15:40, 29 апр. 2012

Одна из интереснейших тем за последнее время на форуме - прочитал все с довольствием!
Автор, спасибо тебе! :)

#59
9:59, 1 мая 2012

я рад, что кому-то помог этот проект, дело в том, что практически весь проект был разработан в 1997 году, а в 1998 году я заболел шизофренией, поэтому больше работать над этим проектом не в состоянии. сразу я не стал говорить о болезни, но, все-таки, хочу предупредить молодых программистов, летящих на небо так сказать, чтобы более опытные программисты взяли их схватили за ноги и вернули на землю. не посвящайте все свое время машине, в смысле компьютеру. я был очень сильно увлечен компьютером, что окончилось весьма печально - помещением человек в психбольницу. побольше гуляйте на свежем воздухе.

Страницы: 13 4 5 611 Следующая »
ПроектыФорумОцените