PDA

Просмотр полной версии : Помогите расшифровать С исходник



jerri
04.06.2013, 09:32
void moverjean (struct protagonista *jean, Mix_Chunk *fx[]) {

/* Salto */
if (jean->salto == 1) {
if (jean->altura == 0) /* Reproducir sonido de salto */
Mix_PlayChannel(-1, fx[3], 0);
if (jean->altura < 56) {
jean->altura += 1.6;
if ((jean->colision[0] == 0) && (jean->altura < 44))
jean->y -= 1.5;
jean->animacion = 0;
}
else {
jean->salto = 2;
jean->colision[0] = 0;
}
}


/* Mover a la derecha */
if (jean->pulsa[3] == 1) {
jean->direccion = 1;
if (jean->colision[3] == 0) {
if (jean->salto == 0) {
if (jean->animacion < 13)
jean->animacion ++;
else
jean->animacion = 0;
}
if (jean->pulsa[1] == 1)
jean->x += 0.30;
else
jean->x += 0.65;
}
}

/* Mover a la izquierda */
if (jean->pulsa[2] == 1) {
jean->direccion = 0;
if (jean->colision[2] == 0) {
if (jean->salto == 0) {
if (jean->animacion < 13)
jean->animacion ++;
else
jean->animacion = 0;
}
if (jean->pulsa[1] == 1)
jean->x -= 0.30;
else
jean->x -= 0.65;
}

}

}


Вот тут. вроде все понимаю но не совсем.

svofski
04.06.2013, 11:59
Так а что именно не понятно?

jerri
04.06.2013, 13:22
Так а что именно не понятно?

Прыжок
то что там называется Salto
условия прохождения прыжка.

не совсем понимаю выделенный сегмент


/* Salto */
if (jean->salto == 1) {
if (jean->altura == 0) /* Reproducir sonido de salto */
Mix_PlayChannel(-1, fx[3], 0);
if (jean->altura < 56) {
jean->altura += 1.6;
if ((jean->colision[0] == 0) && (jean->altura < 44))
jean->y -= 1.5;
jean->animacion = 0;
}
else {
jean->salto = 2;
jean->colision[0] = 0;
}
}

Blade
04.06.2013, 13:46
Это не условия прохождения прыжка, это сам прыжок. Условия для прыжка где-то в другом месте смотреть надо.

jerri
04.06.2013, 14:30
Blade, я знаю что прыжок в другом месте
я не понимаю КАК прыжок проходит

например вот это

if ((jean->colision[0] == 0) && (jean->altura < 44))
jean->y -= 1.5;
jean->animacion = 0;

по идее если герой стукнулся об потолок и его высота <44 то герой должен падать?
а он не падает - он движется по горизонтали.

Blade
04.06.2013, 14:46
Не совсем. Я так понимаю jean->altura это высота прыжка. Пока она меньше 56 герой находится в состоянии прыжка (salto=1). Изменение координаты y происходит если есть куда прыгать (colision[0]==0) и высота прыжка меньше 44. В интервале 44..56 он будет просто висеть в воздухе. Это наверно сделано, чтобы герой не сразу падал, а немного повисел в верхней точке.

Vitamin
04.06.2013, 14:48
Данный код надо давать на разбор тем, кто утверждает, что комментарии и имена переменных на транслите (или родном русском) - это нормально.

jerri
04.06.2013, 14:52
Данный код надо давать на разбор тем, кто утверждает, что комментарии и имена переменных на транслите (или родном русском) - это нормально.

Это если чо испанский :) для испанцев я думаю нормально

---------- Post added at 14:52 ---------- Previous post was at 14:50 ----------


Не совсем. Я так понимаю jean->altura это высота прыжка. Пока она меньше 56 герой находится в состоянии прыжка (salto=1). Изменение координаты y происходит если есть куда прыгать (colision[0]==0) и высота прыжка меньше 44. В интервале 44..56 он будет просто висеть в воздухе. Это наверно сделано, чтобы герой не сразу падал, а немного повисел в верхней точке.
сложноватый прыжок :-/

jean -> altura что вообще означает этот символ?

haywire
04.06.2013, 14:59
Данный код надо давать на разбор тем, кто утверждает, что комментарии и имена переменных на транслите (или родном русском) - это нормально.

Иногда лучше пусть будут на родном языке, чем на языке тех, кто думает, что знает английский. А вот транслит - это зло, да.

---------- Post added at 14:59 ---------- Previous post was at 14:58 ----------



jean -> altura что вообще означает этот символ?


Доступ к полю, если переменная типа стуктура является указателем.

svofski
04.06.2013, 15:02
jean->altura это просто аккумулятор "силы" прыжка,
jean->y -- вертикальное положение.

jean->salto: 0, ничего, 1 - взлет, 2 - падение

В этом коде только первая фаза прыжка, salto == 1. Когда altura накапливается до 56, salto становится равным двум и jean переходит в состояние падения. Во всех фазах, кроме salto == 1, на jean->y действует gravedad (гравитация) -- это не в этом фрагменте кода, ниже.

jean->altura используется для подсчета высоты прыжка. Сначала она растет вместе с изменением координаты jean->y. Начиная с jean->altura == 44, altura продолжает накапливаться, но jean->y остается там же, где был, пока не начинается падение.

Получается, что есть определенный потолок, достигнув которого Жан зависает на одной высоте перед тем, как начать падать.

jerri
04.06.2013, 15:34
jean->altura это просто аккумулятор "силы" прыжка,
jean->y -- вертикальное положение.

jean->salto: 0, ничего, 1 - взлет, 2 - падение

В этом коде только первая фаза прыжка, salto == 1. Когда altura накапливается до 56, salto становится равным двум и jean переходит в состояние падения. Во всех фазах, кроме salto == 1, на jean->y действует gravedad (гравитация) -- это не в этом фрагменте кода, ниже.

jean->altura используется для подсчета высоты прыжка. Сначала она растет вместе с изменением координаты jean->y. Начиная с jean->altura == 44, altura продолжает накапливаться, но jean->y остается там же, где был, пока не начинается падение.

Получается, что есть определенный потолок, достигнув которого Жан зависает на одной высоте перед тем, как начать падать.

с учетом что вся это бадяга вызывается 60 фпс -

56/1.6=35 полсекунды на прыжок

ммм :) сорцы игрушки видел?

psb
04.06.2013, 15:44
Иногда лучше пусть будут на родном языке, чем на языке тех, кто думает, что знает английский.
сомнительное предложение.

svofski
04.06.2013, 15:53
jerri, я открыл jean.c и structs.h, там коментарии. Ни игрушку, ни видео от нее я не видел.

jerri
04.06.2013, 18:22
svofski, исходники ты гдето нашел :)

svofski
04.06.2013, 19:03
Тут -- http://abbaye-for-linux.googlecode.com/

esl
04.06.2013, 19:10
ага, топ сикрет целых 3 ссылки (http://lmgtfy.com/?q=%22jean-%3Ealtura+%3D%3D+44%22) в гугле, одна сюда

goodboy
04.06.2013, 19:12
на форуме WoS была тема про портирование этой игры на zx,
но кажется всё заглохло http://www.worldofspectrum.org/forums/showthread.php?t=37049

jerri
04.06.2013, 19:32
goodboy, Врут :)

goodboy
04.06.2013, 19:57
goodboy, Врут :)
понятно, а я сначала и не понял что ты в-теме.

jerri
06.06.2013, 23:27
блин какая все-таки наркоманская программа обработки движения.