─ЪЪНЧОННННОНОООЧОЧЪННННОНЪЪНННЧНЧНЧЧЧНООНООНОНЧЧНЧЧНЧНОООННОНННЪЪНЧННННЧОЧЪНЧЧЧНННННЧОНЪЪНщщМОММщОМщщНМщчОщщщОщМчНчщМОМччНщщМчМщчщщщщщчННщМщщчщщМММНщНчщНщщщММНчщщчщМщщщМщННщчщщМММНщНчщННМщНщщчЧщщчЧМщщНщщНЧМчщЧчщМНММчЧ▐ ""@DD@44@DD@D3www|ww pp ""@DD@CC@DD3Dpwwwюwwг ""@DD@44@DD@D3wwwг|wwpp ""@DD@CC@DD3D|wwwwwг0─┬┬PUUP╔╔PUUPU╙┬┬┬▄┬┬ ───┬┬PUUPZZPUU╙U─┬┬┬ю┬┬х─┬┬PUUP╔╔PUUPU╙┬┬┬х▄┬┬───┬┬PUUPZZPUU╙U▄┬┬┬┬┬х─П***AAAAAAAAAAAAA555EEEEE55555AAAAA5555@AAAAAAAAAAAAAAAAAAAAAAAAAAAAC !!!!!!!!!!!!!!!!!!!!!!!!!!!!" >Dю?лллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл\Uе\елллллллллллллUлллUлUUеллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл\е\\ел\Uее\е\UлUUлUлл\UлUллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл\е\\еле\ее\еU\еUлеллллUлUUлллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл\Uе\еле\е\UеUелUллUлллUлл\еллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл\еллUе\Uел\е\UлUллUлл\UеUUллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл\Uллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл╛╙╙лллллллллллл╛йлл╙╙йлллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл╛йл╛╙йл╙й╛йй╛л╙╛йллл╛йлллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл╛╙й╛й╛╛й╙╛╙╙╛л╙ллллл╙ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл╛йл╛й╛╛╙л╛╛╛л╙╙╛йллй╛йлллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл╛╙╙╛й╛л╙й╛╛╛лл╙╛йлл╛╙лллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл╙йллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл,""бллллллллллллллллллллллллллллллллллллллллллллллллл▄┬┬хлллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллLDDдллллллллллллллллллллллллллллллллллллллллллллллллл\UUелллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллL44дллллллллллллллллллллллллллллллллллллллллллллллллл\ZZелллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллLDDдллллллллллллллллллллллллллллллллллллллллллллллллл\UUелллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллLD3ллллллллллллллллллллллллллллллллллллллллллллллллллл╙Uелллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллwwwгллллллллллллллллллллллллллллллллллллллллллллллллл▄┬┬┬ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл|wwллллллллллллллллллллллллллллллллллллллллллллллллллл┬┬хллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл|л|лллллллллллллллллллллллллллллллллллллллллллллллллллхлхлллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллВ-- title: Shooting Demo -- author: saikiran bait, saikiran.bait@yahoo.com, etc. -- desc: This is an example of basic shooting mechanics -- site: website link -- license: MIT License (change this to your license of choice) -- version: 0.1.3 -- script: lua -- Game State STATE_MENU = 0 STATE_PLAYING = 1 STATE_GAME_OVER = 2 game_state =STATE_MENU DIR_RIGHT = 1 DIR_LEFT = 2 x = 20 y = 100 player_vy = 0 gravity = 0.16 jump_force = -3 ground_y = 100 is_grounded = true is_fired = false enemy_vy = 0 enemy_grounded = false --player bullet objects projectile_speed = 3 projectile_x = x projectile_y = y projectile_dx = 3 fire_timer = 0 -- enemy bullet objects enemy_bullet_speed = 1.2 enemy_fire_timer = 0 enemy_fire_rate = 30 -- player health objects player_health = 15 player_alive = true -- enemy health objects enemy_alive = true enemy_health = 3 default_sprite = 256 current_dir = DIR_RIGHT projectile_dir = DIR_RIGHT bullets = {} enemy_bullets = {} enemy_x = 126 enemy_y = 100 enemy_default_sprite = 289 function TIC() if game_state == STATE_MENU then _update_menu() _draw_menu() elseif game_state == STATE_PLAYING then _draw() _update() elseif game_state == STATE_GAME_OVER then _draw_game_over() _update_menu() end end function _update() --enemy bullet object -- enemy positioning if x > (enemy_x + 5) and enemy_alive then enemy_default_sprite = 288 elseif x < (enemy_x - 5) and enemy_alive then enemy_default_sprite = 289 end if enemy_fire_timer <= 0 and enemy_alive then if x > (enemy_x - 60) and x < (enemy_x - 5) and math.abs(y - enemy_y) < 8 then enemy_default_sprite = 291 --enemy bullets will be added here local enemy_bullet = { e_x = 0, e_y = 0, e_dx = 0 } enemy_bullet.e_x = enemy_x - 4 enemy_bullet.e_y = enemy_y enemy_bullet.e_dx = -enemy_bullet_speed if player_alive then table.insert(enemy_bullets, enemy_bullet) enemy_fire_timer = enemy_fire_rate end elseif x < (enemy_x + 60) and x > (enemy_x + 5) and math.abs(y - enemy_y) < 8 then enemy_default_sprite = 290 --enemy bullets will be added here local enemy_bullet = { e_x = 0, e_y = 0, e_dx = 0 } enemy_bullet.e_x = enemy_x + 4 enemy_bullet.e_y = enemy_y enemy_bullet.e_dx = enemy_bullet_speed if player_alive then table.insert(enemy_bullets, enemy_bullet) enemy_fire_timer = enemy_fire_rate end end end if player_alive then if btn(3) then current_dir = DIR_RIGHT default_sprite = 256 if x < 238 then x = x + 1 else x = 220 end elseif btn(2) then current_dir = DIR_LEFT default_sprite = 257 if x > 10 then x = x - 1 else x = 10 end end if btnp(0) and is_grounded then player_vy = jump_force is_grounded = false end end if btnp(4) and player_alive then fire_timer = 10 local bullet = { x = x, y = y, dx = 0 } is_fired = true if current_dir == DIR_RIGHT then bullet.x = x + 4 bullet.dx = projectile_speed default_sprite = 258 else bullet.x = x - 4 bullet.dx = -projectile_speed default_sprite = 259 end table.insert(bullets, bullet) end --handling jump -- Gravity -- handle player tile placement local old_y = y local old_bottom = old_y + 8 if player_alive then player_vy = player_vy + gravity -- Move player y = y + player_vy end local new_bottom = y + 8 if player_vy >= 0 then if _isSolid(x + 1, y + 8) or _isSolid(x + 6, y + 8) then local tile_y = math.floor(new_bottom / 8) local platform_top = tile_y * 8 if old_bottom <= platform_top then y = tile_y * 8 - 8 player_vy = 0 is_grounded = true end else is_grounded = false end end -- handle enemy tile placement enemy_vy = enemy_vy + gravity enemy_y = enemy_y + enemy_vy if enemy_vy >= 0 then if _isSolid(enemy_x + 1, enemy_y + 8) or _isSolid(enemy_x + 6, enemy_y + 8) then local tile_y = math.floor((enemy_y + 8) / 8) enemy_y = tile_y * 8 - 8 enemy_vy = 0 enemy_grounded = true else enemy_grounded = false end end -- handle_bullet for i = #bullets, 1, -1 do local bullet = bullets[i] bullet.x = bullet.x + bullet.dx if bullet.x > 230 or bullet.x < -8 then table.remove(bullets, i) elseif enemy_alive and _collision(bullet.x, bullet.y, enemy_x, enemy_y) then table.remove(bullets, i) enemy_health = enemy_health - 1 if enemy_health <= 0 then enemy_alive = false end end end -- handle enemy bullet for i = #enemy_bullets, 1, -1 do local enemy_bullet = enemy_bullets[i] enemy_bullet.e_x = enemy_bullet.e_x + enemy_bullet.e_dx if enemy_bullet.e_x > 230 or enemy_bullet.e_x < -8 then table.remove(enemy_bullets, i) elseif player_alive and _collision(enemy_bullet.e_x, enemy_bullet.e_y, x, y) then table.remove(enemy_bullets, i) player_health = player_health - 1 if player_health <= 0 then player_alive = false end end end if enemy_fire_timer > 0 then enemy_fire_timer = enemy_fire_timer - 1 end if fire_timer > 0 then fire_timer = fire_timer - 1 else if current_dir == DIR_RIGHT then default_sprite = 256 else default_sprite = 257 end end if not player_alive or not enemy_alive then game_state = STATE_GAME_OVER end end function _collision(ax, ay, bx, by) return math.abs(ax-bx) < 8 and math.abs(ay-by) < 8 end function _draw() cls() --tcol(0) map(0, 0) if player_alive then spr(default_sprite, x, y, 0) end if enemy_alive then spr(enemy_default_sprite, enemy_x, enemy_y, 0) end -- player bullets for i = 1, #bullets do local bullet = bullets[i] spr(260, bullet.x, bullet.y, 0) end -- enemy bullets for i = 1, #enemy_bullets do local enemy_bullet = enemy_bullets[i] spr(292, enemy_bullet.e_x, enemy_bullet.e_y, 0) end print("Enemy: "..enemy_health, 5, 12, 10) print("Player: "..player_health, 5, 5, 5) if not player_alive then print("GAME OVER", 90, 50, 2) end if not enemy_alive then print("YOU WIN!", 100, 50, 11) end end function _isSolid(px, py) local tile_x = math.floor(px / 8) local tile_y = math.floor(py / 8) local tile = mget(tile_x, tile_y) return fget(tile, 0) end function _draw_menu() cls(12) print("Shooting Demo", 86, 40, 15, true, 1.6) print("Press 'A' to start", 92, 70, 15, false, 1, true) print("Use 'LEFT/RIGHT' Arrow Keys to move", 64, 90, 15, false, 1, true) print("Press 'UP' to Jump And 'Z' to Shoot", 64, 100, 15, false, 1, true) end function _update_menu() if btn(6) then reset_game() game_state = STATE_PLAYING end end function reset_game() player_alive = true enemy_alive = true player_health = 20 enemy_health = 10 x = 20 y = 100 enemy_x = 126 enemy_y = 100 player_vy = 0 bullets = {} enemy_bullets = {} fire_timer = 0 enemy_fire_timer = 0 find_spawn_positions() spawn_enemy() end function find_spawn_positions() spawn_positions = {} for ty = 1, 16 do for tx = 1, 29 do local tile = mget(tx, ty) local above = mget(tx, ty - 1) if fget(tile, 0) and not fget(above, 0) then table.insert(spawn_positions, { x = tx, y = ty }) end end end end function spawn_enemy() local spawn = spawn_positions[ math.random(#spawn_positions) ] enemy_x = spawn.x * 8 enemy_y = spawn.y * 8 - 8 end function _draw_game_over() cls() map(0, 0) if not player_alive then print("GAME OVER", 90, 50, 2) end if not enemy_alive then print("YOU WIN!", 100, 50, 11) end print("Press 'A' to try again", 82, 80, 11, false, 1, true) end