Просмотр полной версии : Помогите расшифровать С исходник
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;
}
}
}
Вот тут. вроде все понимаю но не совсем.
Так а что именно не понятно?
Так а что именно не понятно?
Прыжок
то что там называется 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, я знаю что прыжок в другом месте
я не понимаю КАК прыжок проходит
например вот это
if ((jean->colision[0] == 0) && (jean->altura < 44))
jean->y -= 1.5;
jean->animacion = 0;
по идее если герой стукнулся об потолок и его высота <44 то герой должен падать?
а он не падает - он движется по горизонтали.
Не совсем. Я так понимаю jean->altura это высота прыжка. Пока она меньше 56 герой находится в состоянии прыжка (salto=1). Изменение координаты y происходит если есть куда прыгать (colision[0]==0) и высота прыжка меньше 44. В интервале 44..56 он будет просто висеть в воздухе. Это наверно сделано, чтобы герой не сразу падал, а немного повисел в верхней точке.
Данный код надо давать на разбор тем, кто утверждает, что комментарии и имена переменных на транслите (или родном русском) - это нормально.
Данный код надо давать на разбор тем, кто утверждает, что комментарии и имена переменных на транслите (или родном русском) - это нормально.
Это если чо испанский :) для испанцев я думаю нормально
---------- 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 что вообще означает этот символ?
Данный код надо давать на разбор тем, кто утверждает, что комментарии и имена переменных на транслите (или родном русском) - это нормально.
Иногда лучше пусть будут на родном языке, чем на языке тех, кто думает, что знает английский. А вот транслит - это зло, да.
---------- Post added at 14:59 ---------- Previous post was at 14:58 ----------
jean -> altura что вообще означает этот символ?
Доступ к полю, если переменная типа стуктура является указателем.
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 остается там же, где был, пока не начинается падение.
Получается, что есть определенный потолок, достигнув которого Жан зависает на одной высоте перед тем, как начать падать.
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 полсекунды на прыжок
ммм :) сорцы игрушки видел?
Иногда лучше пусть будут на родном языке, чем на языке тех, кто думает, что знает английский.
сомнительное предложение.
jerri, я открыл jean.c и structs.h, там коментарии. Ни игрушку, ни видео от нее я не видел.
svofski, исходники ты гдето нашел :)
Тут -- http://abbaye-for-linux.googlecode.com/
ага, топ сикрет целых 3 ссылки (http://lmgtfy.com/?q=%22jean-%3Ealtura+%3D%3D+44%22) в гугле, одна сюда
на форуме WoS была тема про портирование этой игры на zx,
но кажется всё заглохло http://www.worldofspectrum.org/forums/showthread.php?t=37049
goodboy, Врут :)
понятно, а я сначала и не понял что ты в-теме.
блин какая все-таки наркоманская программа обработки движения.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot