www.open-tager.ru http://www.open-tager.ru/forum/ |
|
LTAscetik http://www.open-tager.ru/forum/viewtopic.php?f=5&t=1565 |
Страница 505 из 532 |
Автор: | maksim [ 24 май 2018, 20:11 ] |
Заголовок сообщения: | Re: LTAscetik |
С командой убить игрока я так и не розобрался ,при компиляции куча ошибок .... Как там те дужки розтавлять??? |
Автор: | Pingvin [ 24 май 2018, 20:25 ] |
Заголовок сообщения: | Re: LTAscetik |
Ну раз пошла такая пьянка... Код: if((reload_state!=nothing_to_do)||(simples_in_queue!=0)||(curr_sound.simples_in_queue!=0)||(eeprom_is_open)||(curr_sound.play_now)) break;
|
Автор: | Pingvin [ 24 май 2018, 20:28 ] |
Заголовок сообщения: | Re: LTAscetik |
maksim писал(а): С командой убить игрока я так и не розобрался ,при компиляции куча ошибок .... Как там те дужки розтавлять??? Я сам то запутаюсь. Давайте сначала со стартом баги исправим. |
Автор: | maksim [ 24 май 2018, 21:15 ] |
Заголовок сообщения: | Re: LTAscetik |
if((reload_state!=nothing_to_do)||(simples_in_queue!=0)||(curr_sound.simples_in_queue!=0)||(eeprom_is_open)||(curr_sound.play_now)) break; ну тут на новую игру реагирует только после смерти ....... |
Автор: | maksim [ 24 май 2018, 21:17 ] |
Заголовок сообщения: | Re: LTAscetik |
тут уже не получается довести до пропадания звука..... |
Автор: | Pingvin [ 25 май 2018, 06:10 ] |
Заголовок сообщения: | Re: LTAscetik |
Смотрите - у нас же прилёт пули во время перезарядки не приводит к проблемам? Как то же всё разруливатся. Надо посмотреть как обработчик прилёта пули отрабатывает. Давно Аскетом не занимался, нужно погружаться в тему. И пульта такого у меня нет, не смогу воспроизвести частые нажатия. |
Автор: | Pingvin [ 25 май 2018, 06:33 ] |
Заголовок сообщения: | Re: LTAscetik |
maksim писал(а): if((reload_state!=nothing_to_do)||(simples_in_queue!=0)||(curr_sound.simples_in_queue!=0)||(eeprom_is_open)||(curr_sound.play_now)) break; ну тут на новую игру реагирует только после смерти ....... maksim писал(а): if((reload_state!=nothing_to_do)||(simples_in_queue!=0)||(curr_sound.simples_in_queue!=0)||(eeprom_is_open)||(curr_sound.play_now)) break; ну тут на новую игру реагирует только после смерти ....... Тогда уберите |(curr_sound.play_now) так if((reload_state!=nothing_to_do)||(simples_in_queue!=0)||(curr_sound.simples_in_queue!=0)||(eeprom_is_open)) break; Извините, замучил Вас. Попробую тут у себя все вспомнить и настроить, тогда отстану.... |
Автор: | Pingvin [ 25 май 2018, 06:49 ] |
Заголовок сообщения: | Re: LTAscetik |
Открыл какие то исходники у себя, и там функция game_over() уже есть! Код: void game_over(bool illumination){
life = 0; life_in_percent=0; WOUND_LED_ON; beep(1000, 3, 128); // WOUND_LED_OFF; display_life(life);//отобразим уровень жизни на диодах display_life_update();//отобразим уровень жизни на ЖКИ volatile uint8_t keypress_cntr; //счетчик циклов, в течении которых курок был нажат keypress_cntr = 0; if (curr_sound.simples_in_queue>1) //если звук уже воспроизводится { curr_sound.simples_in_queue=1;//закроем eeprom while (eeprom_is_open);//дождемся, пока eerom закроется } // while (eeprom_is_open);//дождемся, пока eerom закроется if(illumination) playgameoversound(); if ((eeprom_read_byte(&eeprom_tm_serial_num.device_code)!=0)&&(eeprom_read_byte(&eeprom_tm_serial_num.device_code)!=0xFF)) /*если ТМ ключ уже занесён в память*/ { joystick_event=no_pressing; keyboard_event=no_key_pressing; tm_event=no_tm_event; uint8_t tm_valide; tm_valide=0; lcd_bl_off(); while (!tm_valide) {//[while] lcd_clrscr(); lcd_home(); lcd_puts("Для активации"); lcd_gotoxy(0, 1); lcd_puts("приложите ключ"); while (tm_event == no_tm_event) { if(illumination) { WOUND_LED_INVERT; USART_PutChar('1'); timer2 = 0; while (timer2 < 1000); WOUND_LED_INVERT; timer2 = 0; while (timer2 < 1000); } }; switch(tm_event) {//[switch] case no_tm_event: { } break; case tm_crc_error: { lcd_clrscr(); lcd_home(); lcd_puts("Ошибка CRC"); timer2 = 0; while (timer2 < 6000){}; tm_event=no_tm_event; } break; case tm_crc_ok: { if (tm_verification()) { tm_valide=1; lcd_clrscr(); lcd_home(); lcd_puts("Удачи!"); timer2 = 0; while (timer2 < 6000){}; tm_event=no_tm_event; break; } lcd_clrscr(); lcd_home(); lcd_puts("Не тот ключ"); timer2 = 0; while (timer2 < 6000){}; /* lcd_clrscr(); lcd_home(); lcd_puts("Для активации"); lcd_gotoxy(0, 1); lcd_puts("приложи ключ"); */ tm_event=no_tm_event; } break; }//[/switch] }//[while] }//end if else //тач мемори не записан в память {//[else] lcd_bl_off(); display_status(); rx_event = rx_event = NOT_EVENT; ir_message.control_byte = 0; volatile uint8_t pyr_on_counter=4*3;//на 3 секунды включим реле перотехники volatile uint8_t siren_on_counter=4*60;//на 60 секунд включим реле перотехники PYROTECHNICS_ON; BULLETS_OUT_LED_ON; while(!(((ir_message.control_byte ==Valid_value)&&(ir_message.ID==Command)&&(ir_message.param==0x05))||(joystick_event == key_central_pressing)))//пока не получим команду "старт" {//[while] rx_event = NOT_EVENT; while((rxCount==0)&&(rx_event != RX_MESSAGE_COMPLITE)&&(joystick_event == no_pressing))//пока нет никаких команд пульта {//[while] if(illumination) { WOUND_LED_INVERT; USART_PutChar('1'); timer2 = 0; while (timer2 < 1000); WOUND_LED_INVERT; timer2 = 0; while (timer2 < 1000); if ( pyr_on_counter >0) { pyr_on_counter--; if ( pyr_on_counter ==0) PYROTECHNICS_OFF; } if ( siren_on_counter >0) { siren_on_counter--; if ( siren_on_counter ==0) BULLETS_OUT_LED_OFF; } } }//[while] if(joystick_event!=key_central_pressing)joystick_event = no_key_pressing; if (rx_event == RX_MESSAGE_COMPLITE) ir_message = get_ir_message_from_buffer();//пришла команда пульта, выдергиваем значения команды из буфера ИК приемника else //[else] { if (rxCount>0) finde_message_in_bt_buffer(); }//[else] }//[while] /* while(keypress_cntr < 20) { WOUND_LED_INVERT; USART_PutChar('1'); timer2 = 0; while (timer2 < 1000); WOUND_LED_INVERT; timer2 = 0; while (timer2 < 1000); switch (FIRE_KEY_IN&FIRE_KEY_PIN) //проверяем, нажат ли курок { case 0: keypress_cntr++ ; break; case FIRE_KEY_PIN: keypress_cntr = 0; break; default: keypress_cntr = 0; } } */ } //end else //тач мемори не записан в память //"оживаем" - начинаем новую игру PYROTECHNICS_OFF; BULLETS_OUT_LED_OFF; if (simples_in_queue>1) //если звук выстрла воспроизводится {//[if] simples_in_queue=1;//закроем eeprom while (eeprom_is_open);//дождемся, пока eerom закроется }//[if] init_var(); //инициализируем переменные joystick_event=no_pressing; //очищаем события джойстика keyboard_event=no_key_pressing;//очищаем события триггера reload_key_event=no_key_pressing;//очищаем события перезарядки rx_event = NOT_EVENT; //очищаем события ИК приемника display_status();//обновляем информацию на дисплее // display_life(life);//отобразим уровень жизни на диодах WOUND_LED_ON; playstartsound(); //код обработки дополнительной команды WOUND_LED_OFF; /* WOUND_LED_OFF; init_var();//"оживаем" - начинаем новую игру joystick_event=no_pressing; keyboard_event=no_key_pressing; tm_event=no_tm_event; */ // display_status(); } |
Автор: | Pingvin [ 25 май 2018, 07:13 ] |
Заголовок сообщения: | Re: LTAscetik |
Получилось воспроизвести ситуацию у себя! Буду искать... |
Автор: | Pingvin [ 25 май 2018, 08:11 ] |
Заголовок сообщения: | Re: LTAscetik |
Вот с такой комбинацией if((reload_state!=nothing_to_do)||(simples_in_queue!=0)||(curr_sound.simples_in_queue!=0)||(eeprom_is_open)) break; Дрючил как мог - все нормально. https://www.youtube.com/watch?v=G0HJ3sj ... e=youtu.be На пульте кнопка хреновая, так что жать "как ветер" не получается. |
Страница 505 из 532 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |