Открыл какие то исходники у себя, и там функция 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();
}